すべてのプロダクト
Search
ドキュメントセンター

Tablestore:データテーブルの作成

最終更新日:Apr 30, 2026

Tablestore SDK for Python を使用して、Tablestore のデータテーブルを作成します。必要に応じて、テーブルスキーマ、オプション、セカンダリインデックス、および暗号化設定を構成してください。

注意事項

データテーブルを作成した後は、操作を実行する前にロードが完了するまでお待ちください。通常、数秒かかります。テーブルの準備が完了する前に操作を試みると失敗します。

前提条件

開始する前に、以下の要件を満たしていることを確認してください。

メソッド

def create_table(self, table_meta, table_options, reserved_throughput, secondary_indexes=[], sse_spec)

パラメーター

  • table_meta (必須) TableMeta:テーブルのスキーマ。以下のパラメーターを含みます。

    名前

    説明

    table_name (必須)

    str

    データテーブルの名前。

    schema_of_primary_key (必須)

    List[Tuple]

    プライマリキーの構成。

    • 1 ~ 4 個のプライマリキーカラムを定義できます。デフォルトでは昇順でソートされます。最初のカラムがパーティションキーとして機能します。

    • プライマリキーカラムは STRING、INTEGER、BINARY 型をサポートします。INTEGER 型のパーティションキー以外のカラムに自動インクリメント主キーを設定できます。

    defined_columns (オプション)

    List[Tuple]

    事前定義列の構成。

    • 事前定義列とは、テーブル作成時に定義される属性列であり、セカンダリインデックスおよび多次元インデックスのインデックスキー列として使用できます。

    • 事前定義列は STRING、INTEGER、BINARY、DOUBLE、BOOLEAN 型をサポートします。

  • table_options (必須) TableOptions:テーブルの構成。以下のパラメーターを含みます。

    名前

    説明

    time_to_live (オプション)

    int

    データの生存時間 (TTL)(秒単位)。デフォルト:-1

    • -1 を設定すると、データは無期限に保持されます。それ以外の場合、最小値は 86400(1 日)です。TTL を超過したデータは自動的に削除されます。

    • 多次元インデックスまたはセカンダリインデックスを使用する場合は、このパラメーターを -1 に設定するか、allow_updateFalse に設定してください。

    max_version (オプション)

    int

    各属性列で保持するバージョンの最大数。デフォルト:1

    • 多次元インデックスまたはセカンダリインデックスを使用する場合は、このパラメーターを 1 に設定してください。

    max_time_deviation (オプション)

    int

    最大バージョンオフセット(秒単位)。デフォルト:86400(1 日)。

    • 書き込まれたデータのタイムスタンプは、現在のシステム時刻からこのオフセット範囲内である必要があります。この範囲外のデータの書き込みは失敗します。

    • 属性列データの有効なバージョン範囲は [max(データ書き込み時刻 - 最大バージョンオフセット, データ書き込み時刻 - TTL), データ書き込み時刻 + 最大バージョンオフセット) です。

    allow_update (オプション)

    bool

    行の更新を許可するかどうかを指定します。デフォルト:True

    • False を設定すると、update_row() メソッドによる更新が無効になります。

  • secondary_indexes (オプション) List[SecondaryIndexMeta]:セカンダリインデックスのリスト。各インデックスには以下のパラメーターが含まれます。

    名前

    説明

    index_name (必須)

    str

    インデックスの名前。

    primary_key_names (必須)

    List[str]

    インデックスのプライマリキーカラム。

    • データテーブルのプライマリキーカラムおよび事前定義列を含めることができます。

    • ローカルセカンダリインデックスの場合、インデックスの最初のプライマリキーカラムはデータテーブルの最初のプライマリキーカラムと一致する必要があります。

    defined_column_names (オプション)

    List[str]

    インデックスに含める事前定義列。データテーブルで既に定義されているカラムである必要があります。

    index_type (オプション)

    SecondaryIndexType

    インデックスのタイプ。有効な値:

    • GLOBAL_INDEX (デフォルト):グローバルセカンダリインデックス。

    • LOCAL_INDEX:ローカルセカンダリインデックス。

  • reserved_throughput (必須) ReservedThroughput予約スループット(容量単位 (CU) 単位)。デフォルト:0。0 以外の値は、CU モードで実行中の高性能インスタンスのデータテーブルでのみ有効になります。

  • sse_spec (オプション) SSESpecificationデータ暗号化の設定。以下のパラメーターを含みます。

    重要

    データ暗号化はデータテーブル作成時のみ設定できます。テーブル作成後は暗号化を無効化できません。この機能を利用するには、Python SDK バージョン 6.4.0 以降が必要です。

    名前

    説明

    enable (必須)

    boolean

    データ暗号化を有効にするかどうかを指定します。デフォルト:False

    key_type (オプション)

    SSEKeyType

    暗号化のタイプ。SSEKeyType の有効な値:

    • SSE_KMS_SERVICE:KMS 暗号化。

    • SSE_BYOK:BYOK 暗号化。

    key_id (オプション)

    str

    カスタマーマスターキー (CMK) の ID。key_typeSSE_BYOK の場合にのみ必要です。

    role_arn (オプション)

    str

    RAM ロールの ARN。key_typeSSE_BYOK の場合にのみ必要です。

使用例

次の例では、STRING 型のプライマリキーカラムを 1 つ持つ test_table という名前のデータテーブルを作成します。

# データテーブルには少なくとも 1 つのプライマリキーカラムが必要です。
schema_of_primary_key = [('id', 'STRING')]
# テーブルスキーマを定義します。
table_meta = TableMeta('test_table', schema_of_primary_key)

# テーブルオプションを構成します。
table_options = TableOptions(time_to_live=-1, max_version=1, max_time_deviation=86400, allow_update=True)

# 予約スループットを設定します。デフォルトは 0 CU です。
# 0 以外の値は、CU モードの高性能インスタンスでのみ有効になります。
reserved_throughput = ReservedThroughput(CapacityUnit(0,0))

try:
    client.create_table(table_meta, table_options, reserved_throughput)
    print("Create table succeeded.")
except Exception as e:
    print("Create table failed. %s" % e)

次の例では、データテーブル作成時に特定の設定を構成する方法を示します。

  • 事前定義列の追加

    defined_columns = [('name', 'STRING')]
    # テーブルスキーマに事前定義列を含めます。
    table_meta = TableMeta('test_table', schema_of_primary_key, defined_columns)
  • セカンダリインデックスの追加

    # セカンダリインデックスのリストを定義します。
    secondary_indexes = [
        # インデックス名、プライマリキーカラム、事前定義列、インデックスタイプを指定します。
        SecondaryIndexMeta('test_table_index', ['id', 'name'], [], index_type= SecondaryIndexType.LOCAL_INDEX)
    ]
    client.create_table(table_meta, table_options, reserved_throughput, secondary_indexes)
  • データ暗号化の構成

    SSESpecification クラスを使用して、データテーブルのサーバ側暗号化 (SSE) を構成します。

    • KMS 暗号化

      sse_specification = SSESpecification(enable=True, key_type=SSEKeyType.SSE_KMS_SERVICE, key_id=None,
                                                   role_arn=None)
      client.create_table(table_meta, table_option, reserved_throughput, sse_spec=sse_specification)
    • BYOK 暗号化

      説明

      このコードを実行する前に、CMK ID および RAM ロールの ARN を取得してください。詳細については、「BYOK 暗号化」をご参照ください。

      key_id = "key-hzz6*****************"
      role_arn = "acs:ram::1705************:role/tabletorebyok"
      sse_specification = SSESpecification(enable=True, key_type=SSEKeyType.SSE_BYOK, key_id=key_id,
                                                   role_arn=role_arn)
      client.create_table(table_meta, table_option, reserved_throughput, sse_spec=sse_specification)

参考資料