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

Tablestore:データテーブルを作成する

最終更新日:Jul 08, 2025

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

使用方法

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

前提条件

クライアントが初期化されています。詳細については、「Tablestore クライアントを初期化する」をご参照ください。

メソッドの説明

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

パラメーター

  • 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_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 です。このパラメーターをゼロ以外の値に設定できます。設定は、CU モードの高性能インスタンスのデータテーブルに対してのみ有効になります。

サンプルコード

次のサンプルコードは、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 モードの高性能インスタンスのデータテーブルに対してのみ有効になります)。
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)

関連情報