このトピックでは、Tablestore SDK for Python を使用して Tablestore データテーブルを作成する方法について説明します。
注意事項
データテーブルを作成した後、データに対する操作を実行する前に、データテーブルがロードされるまで待つ必要があります。そうしないと、操作は失敗します。このプロセスには通常、数秒かかります。
前提条件
メソッドの説明
def create_table(self, table_meta, table_options, reserved_throughput, secondary_indexes=[], sse_spec)サンプルコード
次のサンプルコードは、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)