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

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

最終更新日:Feb 08, 2026

このトピックでは、Tablestore SDK for Python を使用して Tablestore データテーブルを作成する方法について説明します。

注意事項

データテーブルを作成した後、データに対する操作を実行する前に、データテーブルがロードされるまで待つ必要があります。そうしないと、操作は失敗します。このプロセスには通常、数秒かかります。

前提条件

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]

    事前定義列に関する情報。

  • table_options (必須) TableOptions:テーブルの設定情報。次のパラメーターが含まれます。

    名前

    説明

    time_to_live (任意)

    int

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

    • このパラメーターを -1 に設定すると、データは無期限になります。それ以外の場合、最小値は 86400 (1 日) です。保存期間が TTL を超えたデータは自動的に削除されます。

    • 多次元インデックスまたはセカンダリインデックスを使用する場合は、このパラメーターを -1 に設定するか、allow_update パラメーターを False に設定する必要があります。

    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 です (このパラメーターに 0 以外の値を設定でき、その設定は CU モードの高性能インスタンスのデータテーブルに対してのみ有効になります)。
reserved_throughput = ReservedThroughput(CapacityUnit(0,0))

try:
    # リクエストを開始します。
    client.create_table(table_meta, table_options, reserved_throughput)
    print("テーブルの作成に成功しました。")
except Exception as e:
    print("テーブルの作成に失敗しました。 %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 メソッドを使用して、データテーブルのデータ暗号化を設定します。

    • 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)

参照情報