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

Tablestore:テーブルの作成

最終更新日:Aug 05, 2026

Tablestore SDK for Java を使用して Wide Column モデルのテーブルを作成し、同一リクエストでスキーマ、データバージョン、インデックス、ストリーム、暗号化を設定します。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。

説明

createTable を呼び出して Wide Column モデルのテーブルを作成します。リクエストには、少なくとも 1 つのプライマリキー列を含め、生存期間 (TTL) と最大バージョン数を指定する必要があります。

public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientException

次の例では、example_table という名前のテーブルを作成します。このテーブルには STRING 型のプライマリキー列が 1 つあり、データは期限切れにならず、保持されるデータバージョンは 1 つのみです。

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
説明

テーブルを作成した後は、データ操作を実行する前にテーブルがロードされるまで待機してください。

パラメータ

CreateTableRequest には、次のパラメータが含まれます。

名前

説明

tableMeta (必須)

TableMeta

テーブルのスキーマ。

tableOptions (必須)

TableOptions

テーブルのデータバージョンおよび更新設定。

reservedThroughput (任意)

ReservedThroughput

キャパシティーユニット (CU) 単位の予約済みの読み取り/書き込みスループット。読み取り CU と書き込み CU のデフォルト値はいずれも 0 です。0 以外の値は、CU モードの高パフォーマンスインスタンスにのみ適用されます。

indexMeta (任意)

List<IndexMeta>

テーブルと同時に作成するセカンダリインデックス。

streamSpecification (任意)

StreamSpecification

ストリームの設定。

enableLocalTxn (任意)

Boolean

ローカルトランザクションを有効にするかどうかを指定します。デフォルト値: false

sseSpecification (任意)

SSESpecification

データ暗号化の設定。データ暗号化はテーブル作成時にのみ有効化できます。テーブル作成後は、暗号化を無効化したり、設定を変更したりすることはできません。

テーブルスキーマ

tableMetaTableMeta オブジェクトで、次のパラメータが含まれます。

名前

説明

tableName (必須)

String

テーブル名。

primaryKey (必須)

List<PrimaryKeySchema>

プライマリキー列の設定。プライマリキー列は 1~4 列を設定できます。最初のプライマリキー列はパーティションキーであり、データはプライマリキーの昇順でソートされます。

definedColumns (任意)

List<DefinedColumnSchema>

事前定義列の設定。事前定義列は、セカンダリインデックスおよび検索インデックスの作成に使用できます。

プライマリキー列

tableMeta.primaryKey[] の各要素は PrimaryKeySchema オブジェクトで、次のパラメータが含まれます。

名前

説明

name (必須)

String

プライマリキー列の名前。

type (必須)

PrimaryKeyType

プライマリキー列の型。有効な値: STRINGINTEGERBINARY

option (任意)

PrimaryKeyOption

プライマリキー列のオプション。自動採番主キー列を使用するには、パーティションキーではない INTEGER 型のプライマリキー列を AUTO_INCREMENT に設定します。

事前定義列

tableMeta.definedColumns[] の各要素は DefinedColumnSchema オブジェクトで、次のパラメータが含まれます。

名前

説明

name (必須)

String

事前定義列の名前。

type (必須)

DefinedColumnType

事前定義列の型。有効な値: STRINGINTEGERBINARYDOUBLEBOOLEAN

テーブル設定

tableOptionsTableOptions オブジェクトで、次のパラメータが含まれます。

名前

説明

timeToLive (必須)

Integer

データの生存期間 (TTL) (秒)。このパラメータを -1 に設定すると、データを無期限に保持します。それ以外の値の場合、最小値は 86400 (1 日) です。TTL を超えたデータは自動的に削除されます。検索インデックスまたはセカンダリインデックスを使用するには、このパラメータを -1 に設定するか、allowUpdatefalse に設定してください。

maxVersions (必須)

Integer

属性列ごとに保持する最大バージョン数。検索インデックスまたはセカンダリインデックスを使用するには、このパラメータを 1 に設定してください。

maxTimeDeviation (任意)

Long

最大バージョンオフセット (秒)。デフォルト値: 86400 (1 日)。書き込まれるデータのタイムスタンプと現在のシステム時刻との差分は、このオフセットの範囲内である必要があります。有効なバージョン範囲は [max(data write time - maximum version offset, data write time - TTL), data write time + maximum version offset) です。

allowUpdate (任意)

Boolean

updateRow を呼び出してデータを更新できるかどうかを指定します。デフォルト値: true。このパラメータを false に設定すると、データを更新できなくなります。

updateFullRow (optional)

Boolean

Specifies whether to enable whole-row updates. Default value: false. You can set this parameter only when you create a table. You cannot modify it by calling updateTable.

予約済みの読み取り/書き込みスループット

reservedThroughputReservedThroughput オブジェクトで、次のパラメータが含まれます。

名前

説明

capacityUnit (必須)

CapacityUnit

予約済みの読み取り/書き込みスループットの設定。

キャパシティーユニット

reservedThroughput.capacityUnitCapacityUnit オブジェクトで、次のパラメータが含まれます。

名前

説明

readCapacityUnit (必須)

Integer

予約済み読み取りスループット (CU)。

writeCapacityUnit (必須)

Integer

予約済み書き込みスループット (CU)。

セカンダリインデックス

indexMeta[] の各要素は IndexMeta オブジェクトで、次のパラメータが含まれます。

名前

説明

indexName (必須)

String

インデックス名。

primaryKey (必須)

List<String>

インデックスのプライマリキー列。テーブルのプライマリキー列と事前定義列で構成できます。ローカルセカンダリインデックスの場合、最初のプライマリキー列はテーブルの最初のプライマリキー列と一致している必要があります。

definedColumns (任意)

List<String>

インデックスに含める事前定義列。テーブルの事前定義列である必要があります。

indexType (任意)

IndexType

インデックスのタイプ。有効な値: IT_GLOBAL_INDEX (デフォルト、グローバルセカンダリインデックス) および IT_LOCAL_INDEX (ローカルセカンダリインデックス)。

indexUpdateMode (任意)

IndexUpdateMode

インデックスの更新モード。グローバルセカンダリインデックスは IUM_ASYNC_INDEX (デフォルト、非同期更新) を使用する必要があります。ローカルセカンダリインデックスは IUM_SYNC_INDEX (同期更新) を使用する必要があります。

ストリーム設定

streamSpecificationStreamSpecification オブジェクトで、次のパラメータが含まれます。

名前

説明

enableStream (必須)

Boolean

ストリームを有効にするかどうかを指定します。デフォルト値: false

expirationTime (任意)

Integer

増分ログの保持期間 (単位: 時間)。最大値: 168 (7 日)。enableStreamtrue に設定されている場合、このパラメータは必須です。

ローカルトランザクション設定

enableLocalTxnBoolean 値です。このパラメーターを設定する際は、以下の制限にご留意ください。

  • ローカルトランザクションは、Tablestore SDK for Java 5.11.0 以降でのみサポートされています。

  • ローカルトランザクションと自動採番主キー列は併用できません。自動採番主キー列が設定されている場合、ローカルトランザクションを有効にしても適用されません。

  • 既存のテーブルでローカルトランザクションを有効にするには、チケットを送信

サーバーサイド暗号化設定

sseSpecificationSSESpecification オブジェクトで、次のパラメータが含まれます。

名前

説明

enable (必須)

Boolean

データ暗号化を有効にするかどうかを指定します。デフォルト値: false

keyType (任意)

SSEKeyType

暗号化の種類。有効な値: SSE_KMS_SERVICE (KMS サービスキーによる暗号化) および SSE_BYOK (Bring Your Own Key (BYOK) による暗号化)。暗号化を有効にする場合、このパラメータは必須です。

keyId (任意)

String

カスタマーマスターキー (CMK) の ID。このパラメータは Bring Your Own Key (BYOK) による暗号化で必須です。

roleArn (任意)

String

Resource Access Management (RAM) ロールの Alibaba Cloud リソースネーム (ARN)。このパラメータは Bring Your Own Key (BYOK) による暗号化で必須です。

テーブルスキーマとデータバージョンの設定

次の例では、2 つのプライマリキー列と 1 つの事前定義列を持つテーブルを作成します。また、最大バージョンオフセットを設定し、更新を無効化します。

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("device_id", PrimaryKeyType.INTEGER));
tableMeta.addDefinedColumn("status", DefinedColumnType.STRING);

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
tableOptions.setMaxTimeDeviation(86400L);
tableOptions.setAllowUpdate(false);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);

テーブルとセカンダリインデックスの同時作成

次の例では、example_table_index という名前のグローバルセカンダリインデックスをテーブルと同時に作成します。インデックスのプライマリキー列 category は、先にテーブルの事前定義列として定義しておく必要があります。

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addDefinedColumn("category", DefinedColumnType.STRING);

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

IndexMeta indexMeta = new IndexMeta("example_table_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.setIndexType(IndexType.IT_GLOBAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_ASYNC_INDEX);

List<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
indexMetas.add(indexMeta);
CreateTableRequest request =
        new CreateTableRequest(tableMeta, tableOptions, indexMetas);
client.createTable(request);

ストリームの有効化

次の例では、テーブル作成時にストリームを有効にし、増分ログの有効期間を 24 時間に設定します。

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setStreamSpecification(new StreamSpecification(true, 24));
client.createTable(request);

ローカルトランザクションの有効化

次の例では、setLocalTxnEnabled を呼び出して、テーブル作成時にローカルトランザクションを有効にします。

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setLocalTxnEnabled(true);
client.createTable(request);

テーブルの暗号化

次の例では、KMS サービスキーまたは Bring Your Own Key (BYOK) を使用してテーブルを暗号化します。

重要

データ暗号化はテーブル作成時にのみ設定できます。テーブル作成後は、暗号化を無効化したり、暗号化設定を変更したりすることはできません。

KMS サービスキーによる暗号化

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setSseSpecification(
        new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE));
client.createTable(request);

Bring Your Own Key (BYOK) による暗号化

説明

Bring Your Own Key (BYOK) による暗号化を使用するには、事前にカスタマーマスターキー (CMK) の ID と RAM ロールの ARN を取得してください。詳細については、「Bring Your Own Key (BYOK) 暗号化」をご参照ください。

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
String keyId = "key-xxxx****";
String roleArn = "acs:ram::1234****:role/example-role";
request.setSseSpecification(
        new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn));
client.createTable(request);