Tablestore SDK for Go を使用して Wide Column モデルのテーブルを作成し、そのスキーマ、プロパティ、ストリーム設定、ローカルトランザクション、セカンダリインデックス、およびデータ暗号化を設定します。
前提条件
Tablestore SDK for Go をインストールし、クライアントを初期化します。
説明
CreateTable API を呼び出してテーブルを作成します。テーブルスキーマ、テーブルオプション、および予約スループットを指定する必要があります。セカンダリインデックス、Stream、ローカルトランザクション、およびデータ暗号化も設定できます。
func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)
テーブルを作成した後、データ操作を実行する前にテーブルがロードされるまで待機してください。ロードプロセスには通常数秒かかります。
次のサンプルでは、user_id と record_id をプライマリキー列とする example_table テーブルを作成します。
tableMeta := &tablestore.TableMeta{TableName: "example_table"}
tableMeta.AddPrimaryKeyColumn("user_id", tablestore.PrimaryKeyType_STRING)
tableMeta.AddPrimaryKeyColumn("record_id", tablestore.PrimaryKeyType_INTEGER)
request := &tablestore.CreateTableRequest{
TableMeta: tableMeta,
TableOption: &tablestore.TableOption{
TimeToAlive: -1,
MaxVersion: 1,
DeviationCellVersionInSec: 86400,
},
ReservedThroughput: &tablestore.ReservedThroughput{},
}
_, err := client.CreateTable(request)
if err != nil {
log.Fatal(err)
}
パラメーター
CreateTableRequest には、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
TableMeta (必須) |
|
テーブルスキーマ。 |
|
TableOption (必須) |
|
テーブルオプション。 |
|
ReservedThroughput (必須) |
|
予約スループット (CU 単位)。デフォルトの読み取り CU と書き込み CU はどちらも |
|
IndexMetas (オプション) |
|
テーブルと同時に作成するセカンダリインデックス。 |
|
StreamSpec (オプション) |
|
ストリーム設定。 |
|
EnableLocalTxn (オプション) |
|
ローカルトランザクションを有効にするかどうかを指定します。デフォルト値: |
|
SSESpecification (オプション) |
|
データ暗号化設定。データ暗号化は、テーブルの作成時にのみ有効化および設定が可能です。作成後に無効化または変更することはできません。 |
テーブルスキーマ
TableMeta には、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
TableName (必須) |
|
テーブル名。 |
|
SchemaEntry (必須) |
|
プライマリキーのスキーマ。テーブルには 1~4 個のプライマリキー列が必要です。最初のプライマリキー列はパーティションキーです。 |
|
DefinedColumns (オプション) |
|
事前定義列。事前定義列を使用してセカンダリインデックスを作成できます。 |
プライマリキー列
TableMeta.SchemaEntry の各要素は PrimaryKeySchema 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
Name (必須) |
|
プライマリキー列の名前。 |
|
Type (必須) |
|
プライマリキー列のタイプ。有効値: |
|
Option (オプション) |
|
プライマリキー列のオプション。パーティションキーではない INTEGER 型のプライマリキー列は、 |
事前定義列
TableMeta.DefinedColumns の各要素は DefinedColumnSchema 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
Name (必須) |
|
事前定義列の名前。 |
|
ColumnType (必須) |
|
事前定義列のタイプ。有効値: |
テーブルオプション
TableOption には、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
TimeToAlive (必須) |
|
Time to Live (TTL) (秒単位)。値 |
|
MaxVersion (必須) |
|
各属性列に保持されるバージョンの最大数。検索インデックスまたはセカンダリインデックスを使用するには、このパラメーターを |
|
DeviationCellVersionInSec (オプション) |
|
最大バージョンオフセット (秒単位)。デフォルト値: |
|
AllowUpdate (オプション) |
|
|
|
UpdateFullRow (オプション) |
|
行全体の更新を有効にするかどうかを指定します。このパラメーターはテーブル作成時にのみ設定でき、 |
予約スループット
ReservedThroughput には、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
Readcap (オプション) |
|
予約済み読み取りスループット (CU 単位)。デフォルト値: |
|
Writecap (オプション) |
|
予約済み書き込みスループット (CU 単位)。デフォルト値: |
セカンダリインデックス
IndexMetas の各要素は IndexMeta 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
IndexName (必須) |
|
セカンダリインデックスの名前。 |
|
PrimaryKey (必須) |
|
インデックスのプライマリキー列。テーブルのプライマリキー列と事前定義列で構成できます。ローカルセカンダリインデックスの場合、最初のインデックスプライマリキー列は、テーブルの最初のプライマリキー列でなければなりません。 |
|
DefinedColumns (オプション) |
|
インデックスの事前定義列。 |
|
IndexType (オプション) |
|
インデックスのタイプ。 |
ストリーム設定
StreamSpec は StreamSpecification 型で、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
EnableStream (オプション) |
|
Stream を有効にするかどうかを指定します。デフォルト値: |
|
ExpirationTime (オプション) |
|
増分ログの保持期間 (時間単位)。最大値: |
ローカルトランザクション設定
EnableLocalTxn を true に設定して、ローカルトランザクションを有効にします。次の点にご注意ください:
このパラメーターは Tablestore SDK for Go 1.7.8 以降でサポートされます。最新バージョンを使用することを推奨します。
ローカルトランザクションと自動採番主キー列は併用できません。自動採番主キー列が設定されている場合、ローカルトランザクションを有効にしても有効になりません。
既存のテーブルでローカルトランザクションを有効にするには、チケットを送信。
データ暗号化設定
SSESpecification には、次のパラメーターが含まれます。
|
名前 |
タイプ |
説明 |
|
Enable (オプション) |
|
データ暗号化を有効にするかどうかを指定します。デフォルト値: |
|
KeyType (オプション) |
|
暗号化タイプ。 |
|
KeyId (オプション) |
|
カスタマーマスターキー ID。このパラメーターは BYOK 暗号化に必須です。 |
|
RoleArn (オプション) |
|
RAM ロール ARN。このパラメーターは BYOK 暗号化に必須です。 |
例
ストリームを有効にしたテーブルの作成
次のサンプルでは、テーブルの作成時に Stream を有効にし、増分ログの保持期間を 168 時間に設定します。
tableMeta := &tablestore.TableMeta{TableName: "stream_table"}
tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)
request := &tablestore.CreateTableRequest{
TableMeta: tableMeta,
TableOption: &tablestore.TableOption{TimeToAlive: -1, MaxVersion: 1},
ReservedThroughput: &tablestore.ReservedThroughput{},
StreamSpec: &tablestore.StreamSpecification{
EnableStream: true,
ExpirationTime: 168,
},
}
_, err := client.CreateTable(request)
if err != nil {
log.Fatal(err)
}
ローカルトランザクションを有効にしたテーブルの作成
次のサンプルでは、テーブルの作成時にローカルトランザクションを有効にします。
tableMeta := &tablestore.TableMeta{TableName: "transaction_table"}
tableMeta.AddPrimaryKeyColumn("user_id", tablestore.PrimaryKeyType_STRING)
tableMeta.AddPrimaryKeyColumn("record_id", tablestore.PrimaryKeyType_INTEGER)
request := &tablestore.CreateTableRequest{
TableMeta: tableMeta,
TableOption: &tablestore.TableOption{TimeToAlive: -1, MaxVersion: 1},
ReservedThroughput: &tablestore.ReservedThroughput{},
EnableLocalTxn: proto.Bool(true),
}
_, err := client.CreateTable(request)
if err != nil {
log.Fatal(err)
}