このトピックでは、パラメーターとサンプルコードを使用して、Python向けTablestore SDKを使用してデータテーブルを作成する方法について説明します。データテーブルを作成する際は、データテーブルのスキーマ情報と構成情報を指定する必要があります。ハイパフォーマンスインスタンスのデータテーブルに対して予約読み取り/書き込みスループットを指定できます。
使用方法に関する注意事項
データテーブルの作成後、データテーブルのロードに数秒かかります。この間、データテーブルに対するすべての読み取りおよび書き込み操作は失敗します。データテーブルがロードされた後に、データテーブルに対する操作を実行してください。
eコマースWebサイトのアイテムIDやフォーラムの投稿IDなど、自動インクリメント主キー列が必要なシナリオでは、データテーブルの作成時に自動インクリメント主キー列を指定できます。詳細については、自動インクリメント主キー列の構成をご参照ください。
前提条件
TablestoreコンソールでTablestoreインスタンスが作成されていること。詳細については、インスタンスの作成をご参照ください。
OTSClientインスタンスが初期化されていること。詳細については、OTSClientインスタンスの初期化をご参照ください。
API操作
"""
指定されたテーブルスキーマに基づいてデータテーブルを作成します。
データテーブルを作成した後、データテーブル内のパーティションをロードするために数秒かかります。パーティションがロードされた後にのみ、データテーブルに対する操作を実行できます。
戻り値:なし。
"""
def create_table(self, table_meta, table_options, reserved_throughput, secondary_indexes=[])
パラメーター
パラメーター | 説明 |
table_meta (必須) | データテーブルに関するスキーマ情報。次のパラメーターを構成して、スキーマ情報を指定できます。
|
table_options (必須) | データテーブルに関する構成情報。次のパラメーターを構成して、構成情報を指定できます。
|
secondary_indexes (オプション) | インデックスのリスト。各インデックスに対して次のパラメーターを構成できます。
|
reserved_throughput (必須) | 予約読み取り/書き込みスループット。単位:キャパシティユニット(CU)。デフォルト値:0。 重要 ハイパフォーマンスインスタンスのデータテーブルに対してのみ、予約読み取り/書き込みスループットを0以外の値に設定できます。 |
例
データテーブルの作成
次のサンプルコードは、データテーブルを作成する方法の例を示しています。
# データテーブルの主キー列のスキーマを作成します。これには、主キー列の数、名前、およびタイプが含まれます。
# 最初の主キー列の名前はpk0で、タイプはIntegerです。最初の主キー列はパーティションキーです。
# 2番目の主キー列の名前はpk1で、タイプはIntegerです。この例では、データ型はIntegerに設定されています。データ型をStringまたはBinaryに設定することもできます。
schema_of_primary_key = [('pk0', 'INTEGER'), ('pk1', 'INTEGER')]
# データテーブルの名前と主キー列のスキーマに基づいて、tableMetaインスタンスを作成します。
table_meta = TableMeta('<table_name>', schema_of_primary_key)
# TableOptionsインスタンスを作成します。time_to_liveパラメーターを31536000に設定して、期限切れのデータを自動的に削除します。次に、max_versionパラメーターを3に、max_time_deviationパラメーターを86400(1日)に設定します。
table_options = TableOptions(31536000, 3, 86400)
# 予約読み取りスループットと予約書き込みスループットを0に設定します。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# クライアントのcreate_table操作を呼び出します。例外がスローされない場合、データテーブルが作成されます。
try:
ots_client.create_table(table_meta, table_options, reserved_throughput)
print("create table succeeded.")
# 例外がスローされた場合、データテーブルの作成に失敗します。例外を処理します。
except Exception:
print("create table failed.")
データテーブルとセカンダリインデックスの作成
データテーブルとグローバルセカンダリインデックスの作成
次のサンプルコードは、データテーブルとデータテーブルのグローバルセカンダリインデックスを同時に作成する方法の例を示しています。
# データテーブルの主キー列のスキーマを作成します。これには、主キー列の数、名前、およびタイプが含まれます。
schema_of_primary_key = [('gid', 'INTEGER'), ('uid', 'STRING')]
# データテーブルの事前定義列を指定します。
defined_columns = [('i', 'INTEGER'), ('bool', 'BOOLEAN'), ('d', 'DOUBLE'), ('s', 'STRING'), ('b', 'BINARY')]
# データテーブルの名前と主キー列のスキーマに基づいて、tableMetaインスタンスを作成します。
table_meta = TableMeta('<table_name>', schema_of_primary_key, defined_columns)
# TableOptionsインスタンスを作成します。time_to_liveパラメーターを-1に設定します。これは、データが期限切れにならないことを示します。次に、max_versionパラメーターを1に設定します。
table_option = TableOptions(-1, 1)
# 予約読み取りスループットと予約書き込みスループットを0に設定します。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# セカンダリインデックスの名前、主キー列、および属性列を指定します。デフォルトでは、グローバルセカンダリインデックスが作成されます。
secondary_indexes = [
SecondaryIndexMeta('index1', ['i', 's'], ['bool', 'b', 'd']),
]
# クライアントのcreate_table操作を呼び出します。例外がスローされない場合、データテーブルが作成されます。
ots_client.create_table(table_meta, table_option, reserved_throughput, secondary_indexes)
データテーブルとローカルセカンダリインデックスの作成
次のサンプルコードは、データテーブルとデータテーブルのローカルセカンダリインデックスを同時に作成する方法の例を示しています。
# データテーブルの主キー列のスキーマを作成します。これには、主キー列の数、名前、およびタイプが含まれます。
schema_of_primary_key = [('gid', 'INTEGER'), ('uid', 'STRING')]
# データテーブルの事前定義列を指定します。
defined_columns = [('i', 'INTEGER'), ('bool', 'BOOLEAN'), ('d', 'DOUBLE'), ('s', 'STRING'), ('b', 'BINARY')]
# データテーブルの名前と主キー列のスキーマに基づいて、tableMetaインスタンスを作成します。
table_meta = TableMeta('<table_name>', schema_of_primary_key, defined_columns)
# TableOptionsインスタンスを作成します。time_to_liveパラメーターを-1に設定します。これは、データが期限切れにならないことを示します。次に、max_versionパラメーターを1に設定します。
table_option = TableOptions(-1, 1)
# 予約読み取りスループットと予約書き込みスループットを0に設定します。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# セカンダリインデックスの名前、主キー列、インデックス列、およびインデックスタイプを指定します。index_typeパラメーターをLOCAL_INDEXに設定します。これは、ローカルセカンダリインデックスが作成されることを示します。
secondary_indexes = [
SecondaryIndexMeta('index1', ['gid', 's'], ['bool', 'b', 'd'],index_type= SecondaryIndexType.LOCAL_INDEX),
]
# クライアントのcreate_table操作を呼び出します。例外がスローされない場合、データテーブルが作成されます。
ots_client.create_table(table_meta, table_option, reserved_throughput, secondary_indexes)
関連情報
データテーブルを作成するために呼び出すことができるAPI操作については、CreateTableをご参照ください。
データバージョンと有効期限(TTL)、セカンダリインデックス、および予約読み取り/書き込みスループットについては、データバージョンとTTL、概要、および予約読み取り/書き込みスループットとはをご参照ください。
データテーブルを作成した後、次の操作を実行できます。
テーブルに対する操作。詳細については、テーブルに対する操作をご参照ください。
データに対する操作。詳細については、データに対する基本操作をご参照ください。