このトピックでは、Tablestore SDK for Go を使用してデータテーブルを作成する方法について説明します。
使用方法
データテーブルを作成した後、データに対して操作を実行する前に、データテーブルがロードされるまで待機してください。そうしないと、操作は失敗します。このプロセスには通常数秒かかります。
前提条件
メソッドの説明
func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)サンプルコード
次のサンプルコードは、文字列型のプライマリキー列が 1 つ含まれる test_table という名前のデータテーブルを作成します。
func CreateTableSample(client *tablestore.TableStoreClient) {
// データテーブルのスキーマ情報を構築します
tableMeta := new(tablestore.TableMeta)
tableMeta.TableName = "test_table"
// データテーブルを作成するには、少なくとも 1 つのプライマリキー列が必要です
tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)
// データテーブルの構成情報を構築します
tableOption := new(tablestore.TableOption)
// データテーブルを作成するときは、最大バージョン数を指定する必要があります
tableOption.MaxVersion = 1
// データテーブルを作成するときは、TTL を指定する必要があります。 -1 の値は、データが期限切れにならないことを示します
tableOption.TimeToAlive = -1
// データテーブルを作成するときは、予約済み読み取り/書き込みスループットを設定する必要があります。デフォルト値は 0 です (CU モードの高性能インスタンスのみ、データテーブルの予約済み読み取り/書き込みスループットをゼロ以外の値に設定できます)
reservedThroughput := new(tablestore.ReservedThroughput)
reservedThroughput.Readcap = 0
reservedThroughput.Writecap = 0
// リクエストを構築して送信します
createTableRequest := new(tablestore.CreateTableRequest)
createTableRequest.TableMeta = tableMeta
createTableRequest.TableOption = tableOption
createTableRequest.ReservedThroughput = reservedThroughput
_, err := client.CreateTable(createTableRequest)
if err != nil {
fmt.Println("テーブルの作成に失敗しました。エラー:", err) // テーブルの作成に失敗しました。エラー:
} else {
fmt.Println("テーブルの作成が完了しました。") // テーブルの作成が完了しました。
}
}データテーブルを作成する際に追加設定を構成するには、次のサンプルコードを参照してください。
事前定義列を追加する
tableMeta.AddDefinedColumn("name", tablestore.DefinedColumn_STRING)最大バージョンオフセットを設定する
tableOption.DeviationCellVersionInSec = 86400更新を許可するかどうかを設定する
tableOption.AllowUpdate = proto.Bool(false)セカンダリインデックスを追加する
// セカンダリインデックスを構築します indexMeta := new(tablestore.IndexMeta) indexMeta.IndexName = "test_table_index" // インデックスのプライマリキー列を設定します indexMeta.AddPrimaryKeyColumn("id") indexMeta.AddPrimaryKeyColumn("name") // インデックスの型を設定します indexMeta.IndexType = tablestore.IT_LOCAL_INDEX // セカンダリインデックスを追加します createTableRequest.AddIndexMeta(indexMeta)Stream 設定を構成する
streamSpec := new(tablestore.StreamSpecification) streamSpec.EnableStream = true streamSpec.ExpirationTime = 168 createTableRequest.StreamSpec = streamSpecローカルトランザクションを有効にするかどうかを設定する
enableLocalTxn := proto.Bool(true) createTableRequest.EnableLocalTxn = enableLocalTxnデータ暗号化タイプを設定する
KMS ベースの暗号化
sseSpec := new(tablestore.SSESpecification) sseSpec.SetEnable(true) sseSpec.SetKeyType(tablestore.SSE_KMS_SERVICE) createTableRequest.SSESpecification = sseSpecBYOK 暗号化
説明コードを実行する前に、CMK ID と RAM ロールの ARN を取得します。詳細については、「BYOK 暗号化」をご参照ください。
sseSpec := new(tablestore.SSESpecification) sseSpec.SetEnable(true) sseSpec.SetKeyType(tablestore.SSE_BYOK) sseSpec.SetKeyId("key-hzz65****************") sseSpec.SetRoleArn("acs:ram::1705************:role/tabletorebyok") createTableRequest.SSESpecification = sseSpec