Tablestore SDK for Java を使用して、テーブル作成時に非パーティション主キー列を自動インクリメントとして設定し、データの書き込み時に生成された値を取得します。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。自動インクリメント主キー列を使用するには、バージョン 4.2.0 以降が必要です。最新バージョンの使用を推奨します。
機能の説明
自動インクリメント主キー列を使用するには、列の設定、データ書き込み時のプレースホルダーの使用、生成された値の取得という 3 つの手順が必要です。
自動インクリメント主キー列は、INTEGER 型の非パーティション主キー列であり、テーブル作成時に設定する必要があります。各テーブルには、自動インクリメント主キー列を 1 つのみ含めることができます。Tablestore は、この列に 64 ビット符号付き整数を生成します。
生成された値は一意で、同一のパーティションキー内で厳密に増加しますが、連続するとは限りません。
自動インクリメント主キー列の設定
テーブル作成時に、非パーティション主キー列の option を PrimaryKeyOption.AUTO_INCREMENT に設定します。
次の例では、example_table テーブルを作成します。このテーブルは、パーティションキーに id を、自動インクリメント主キー列に incr を使用します。
データを書き込む前に、テーブルがロードされるまで待機してください。
String tableName = "example_table";
TableMeta tableMeta = new TableMeta(tableName);
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema(
"incr", PrimaryKeyType.INTEGER, PrimaryKeyOption.AUTO_INCREMENT));
TableOptions tableOptions = new TableOptions(-1, 1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
データの書き込みと生成された値の取得
データを書き込む際に、自動インクリメント列の値を PrimaryKeyValue.AUTO_INCREMENT に設定します。生成された値を取得するには、戻り値の型を ReturnType.RT_PK に設定します。設定しない場合、レスポンスにプライマリキー情報は含まれません。
次の例では、example_table に行を書き込み、レスポンスから incr 列の生成された値を取得します。
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("partition-a"));
primaryKeyBuilder.addPrimaryKeyColumn("incr", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowPutChange rowPutChange = new RowPutChange("example_table", primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("example-value"));
rowPutChange.setReturnType(ReturnType.RT_PK);
PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
long generatedValue = response.getRow().getPrimaryKey()
.getPrimaryKeyColumn("incr").getValue().asLong();
System.out.println("Generated value: " + generatedValue);
パラメーター
自動インクリメント主キー列
PrimaryKeySchema には、自動インクリメント主キー列に関連する次のパラメーターが含まれます:
|
名前 |
型 |
説明 |
|
name (必須) |
|
自動インクリメント主キー列の名前。 |
|
type (必須) |
|
自動インクリメント主キー列のデータ型。このパラメーターを |
|
option (必須) |
|
プライマリキー列のオプション。このパラメーターを |
書き込み設定
RowPutChange には、自動インクリメント主キー列に関連する次のパラメーターが含まれます:
|
名前 |
型 |
説明 |
|
primaryKey (必須) |
|
行のプライマリキー。列名、順序、型はテーブルスキーマと一致している必要があります。自動インクリメント列の値を |
|
returnType (任意) |
|
戻り値の型。デフォルト値は |
レスポンス
生成された自動インクリメント値は、次の PutRowResponse フィールドに含まれます:
|
フィールド |
型 |
説明 |
|
|
|
|