Tablestore SDK for Python を使用してテーブルを作成し、オプションでそのスキーマ、設定、セカンダリインデックス、データ暗号化を構成します。
前提条件
Tablestore SDK for Python をインストールし、クライアントを初期化します。
機能の説明
テーブルを作成するために、create_table メソッドを呼び出します。
def create_table(
self,
table_meta,
table_options,
reserved_throughput,
secondary_indexes=None,
sse_spec=None,
)
次の例では、example_table テーブルを作成します。このテーブルでは、id が主キー列となり、データは期限切れになることはなく、各属性列で保持されるバージョンは 1 つのみです。
table_meta = TableMeta(
"example_table",
[("id", "STRING")],
)
table_options = TableOptions(
time_to_live=-1,
max_version=1,
max_time_deviation=86400,
allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
client.create_table(table_meta, table_options, reserved_throughput)
テーブルを作成した後、データ操作を実行する前に、テーブルが読み込まれるまで数秒待つ必要があります。
パラメータ
create_table メソッドには、以下のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
table_meta (必須) |
|
テーブルスキーマ。 |
|
table_options (必須) |
|
テーブル設定。 |
|
reserved_throughput (必須) |
|
予約済みスループット。 |
|
secondary_indexes (オプション) |
|
テーブルと一緒に作成するセカンダリインデックス。 |
|
sse_spec (オプション) |
|
サーバー側の暗号化設定。暗号化はテーブルの作成時にのみ有効にでき、後から無効にすることはできません。この機能を使用するには、Tablestore SDK for Python 6.4.0 以降が必要です。 |
テーブルスキーマ
table_meta パラメーターは TableMeta 型で、以下のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
table_name (必須) |
|
テーブルの名前。 |
|
schema_of_primary_key (必須) |
|
プライマリキーのスキーマ。テーブルは 1 ~ 4 個のプライマリキー列を持つことができます。最初のプライマリキー列はパーティションキーであり、プライマリキー列は昇順でソートされます。プライマリキー列は、 |
|
defined_columns (オプション) |
|
事前定義列は、 |
プライマリキー列
table_meta.schema_of_primary_key[] の各タプルは、1 つの主キー列を構成し、以下の要素を含みます。
|
名前 |
タイプ |
説明 |
|
name (必須) |
|
プライマリキー列の名前。 |
|
type (必須) |
|
プライマリキー列の型。有効な値は |
|
option (オプション) |
|
プライマリキーのオプションです。 |
事前定義列
table_meta.defined_columns[] 内の各タプルは、1 つの事前定義列を構成し、以下の要素を含みます。
|
名前 |
タイプ |
説明 |
|
name (必須) |
|
事前定義列の名前。 |
|
type (必須) |
|
定義済みの列の型。有効な値は |
テーブル設定
table_options パラメーターは TableOptions 型で、以下のパラメーターを含みます。
|
名前 |
タイプ |
説明 |
|
time_to_live (オプション) |
|
データの有効期間 (TTL) を秒単位で指定します。デフォルト値は |
|
max_version (オプション) |
|
各属性列で保持するバージョンの最大数で、デフォルト値は |
|
max_time_deviation (オプション) |
|
秒単位の最大バージョン偏差。デフォルト値は |
|
allow_update (オプション) |
|
|
予約済みスループット
reserved_throughput パラメーターは ReservedThroughput 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
capacity_unit (必須) |
|
キャパシティーユニット (CU) 単位の 予約スループット。デフォルトの読み取りおよび書き込み CU は、どちらも |
キャパシティーユニット
reserved_throughput.capacity_unit パラメーターは CapacityUnit タイプで、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
read (オプション) |
|
CU 単位の予約済み読み取りスループット。デフォルト値は |
|
write (オプション) |
|
CU 単位の予約済み書き込みスループット。デフォルト値は |
セカンダリインデックス
secondary_indexes[] の各要素は SecondaryIndexMeta 型で、以下のパラメーターを含みます。
|
名前 |
タイプ |
説明 |
|
index_name (必須) |
|
インデックスの名前。 |
|
primary_key_names (必須) |
|
インデックスのプライマリキー列。テーブルのプライマリキー列と事前定義列を使用できます。ローカルセカンダリインデックスの場合、インデックスの最初のプライマリキー列はテーブルの最初のプライマリキー列と同じである必要があります。 |
|
defined_column_names (オプション) |
|
インデックスに含まれる事前定義列。列はテーブル内ですでに定義されている必要があります。 |
|
index_type (オプション) |
|
インデックスのタイプ。有効な値は、グローバルセカンダリインデックスのデフォルト値である |
サーバー側の暗号化設定
sse_spec パラメーターは SSESpecification 型で、次のパラメーターが含まれています。
|
名前 |
タイプ |
説明 |
|
enable (オプション) |
|
データ暗号化を有効にするかどうかを指定します。デフォルト値は |
|
key_type (オプション) |
|
暗号化タイプ。有効な値は、KMS マネージドキー暗号化の |
|
key_id (オプション) |
|
カスタマーマスターキー ID。BYOK 暗号化の場合、このパラメータは必須です。 |
|
role_arn (オプション) |
|
RAM ロールの Alibaba Cloud Resource Name (ARN)。BYOK 暗号化の場合、このパラメータは必須です。 |
例
テーブルスキーマとデータバージョンの構成
次の例では、事前定義された列 name を追加し、各属性列に対して最大 3 つのバージョンを保持します。
table_meta = TableMeta(
"example_table",
[("id", "STRING")],
[("name", "STRING")],
)
table_options = TableOptions(
time_to_live=-1,
max_version=3,
max_time_deviation=86400,
allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
client.create_table(table_meta, table_options, reserved_throughput)
テーブルと一緒にセカンダリインデックスを作成
次の例では、テーブルとともにローカルセカンダリインデックスを作成します。テーブルとセカンダリインデックスの両方の最初のプライマリキー列は id です。
table_meta = TableMeta(
"example_table",
[("id", "STRING"), ("device_id", "INTEGER")],
[("status", "STRING")],
)
table_options = TableOptions(time_to_live=-1, max_version=1)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
secondary_indexes = [
SecondaryIndexMeta(
"example_local_index",
["id", "device_id"],
["status"],
index_type=SecondaryIndexType.LOCAL_INDEX,
)
]
client.create_table(
table_meta,
table_options,
reserved_throughput,
secondary_indexes=secondary_indexes,
)
テーブルの暗号化
次の例では、KMS マネージドキーと BYOK (Bring-Your-Own-Key) を使用してテーブルを暗호화します。
暗号化は、テーブルの作成時にのみ有効にでき、後から無効にすることはできません。
KMS マネージドキー
sse_spec = SSESpecification(
enable=True,
key_type=SSEKeyType.SSE_KMS_SERVICE,
)
client.create_table(
table_meta,
table_options,
reserved_throughput,
sse_spec=sse_spec,
)
Bring-Your-Own-Key (BYOK) 暗号化
BYOK 暗号化を使用する前に、カスタマーマスターキー ID と RAM ロール ARN を取得してください。詳細については、「データ暗号化」をご参照ください。
sse_spec = SSESpecification(
enable=True,
key_type=SSEKeyType.SSE_BYOK,
key_id="key-example",
role_arn="acs:ram::1234567890123456:role/example-role",
)
client.create_table(
table_meta,
table_options,
reserved_throughput,
sse_spec=sse_spec,
)