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

Tablestore:テーブルの作成

最終更新日:Aug 12, 2026

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 (必須)

*TableMeta

テーブルスキーマ。

TableOption (必須)

*TableOption

テーブルオプション。

ReservedThroughput (必須)

*ReservedThroughput

予約スループット (CU 単位)。デフォルトの読み取り CU と書き込み CU はどちらも 0 です。0 以外の値は、CU モードの高性能インスタンスにのみ適用されます。

IndexMetas (オプション)

[]*IndexMeta

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

StreamSpec (オプション)

*StreamSpecification

ストリーム設定。

EnableLocalTxn (オプション)

*bool

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

SSESpecification (オプション)

*SSESpecification

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

テーブルスキーマ

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

名前

タイプ

説明

TableName (必須)

string

テーブル名。

SchemaEntry (必須)

[]*PrimaryKeySchema

プライマリキーのスキーマ。テーブルには 1~4 個のプライマリキー列が必要です。最初のプライマリキー列はパーティションキーです。

DefinedColumns (オプション)

[]*DefinedColumnSchema

事前定義列。事前定義列を使用してセカンダリインデックスを作成できます。

プライマリキー列

TableMeta.SchemaEntry の各要素は PrimaryKeySchema 型で、次のパラメーターが含まれます。

名前

タイプ

説明

Name (必須)

*string

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

Type (必須)

*PrimaryKeyType

プライマリキー列のタイプ。有効値: PrimaryKeyType_STRING、PrimaryKeyType_INTEGER、PrimaryKeyType_BINARY。

Option (オプション)

*PrimaryKeyOption

プライマリキー列のオプション。パーティションキーではない INTEGER 型のプライマリキー列は、AUTO_INCREMENT に設定できます。詳細については、「自動採番主キー列の使用」をご参照ください。

事前定義列

TableMeta.DefinedColumns の各要素は DefinedColumnSchema 型で、次のパラメーターが含まれます。

名前

タイプ

説明

Name (必須)

string

事前定義列の名前。

ColumnType (必須)

DefinedColumnType

事前定義列のタイプ。有効値: DefinedColumnType_STRING、DefinedColumnType_INTEGER、DefinedColumnType_BINARY、DefinedColumnType_DOUBLE、DefinedColumnType_BOOLEAN。

テーブルオプション

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

名前

タイプ

説明

TimeToAlive (必須)

int

Time to Live (TTL) (秒単位)。値 -1 はデータが期限切れにならないことを示します。その他の値の場合、最小値は 86400 (1 日) です。検索インデックスまたはセカンダリインデックスを使用するには、このパラメーターを -1 に設定するか、AllowUpdate を false に設定します。

MaxVersion (必須)

int

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

DeviationCellVersionInSec (オプション)

int64

最大バージョンオフセット (秒単位)。デフォルト値: 86400 (1 日)。書き込まれたデータのタイムスタンプと現在のシステム時刻との差は、この範囲内でなければなりません。有効なバージョンは [max(書き込み時間 - 最大バージョンオフセット, 書き込み時間 - TTL), 書き込み時間 + 最大バージョンオフセット) の範囲内です。

AllowUpdate (オプション)

*bool

UpdateRow API を呼び出してデータを更新できるかどうかを指定します。デフォルト値: true。

UpdateFullRow (オプション)

*bool

行全体の更新を有効にするかどうかを指定します。このパラメーターはテーブル作成時にのみ設定でき、UpdateTable API を呼び出して変更することはできません。

予約スループット

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

名前

タイプ

説明

Readcap (オプション)

int

予約済み読み取りスループット (CU 単位)。デフォルト値: 0。

Writecap (オプション)

int

予約済み書き込みスループット (CU 単位)。デフォルト値: 0。

セカンダリインデックス

IndexMetas の各要素は IndexMeta 型で、次のパラメーターが含まれます。

名前

タイプ

説明

IndexName (必須)

string

セカンダリインデックスの名前。

PrimaryKey (必須)

[]string

インデックスのプライマリキー列。テーブルのプライマリキー列と事前定義列で構成できます。ローカルセカンダリインデックスの場合、最初のインデックスプライマリキー列は、テーブルの最初のプライマリキー列でなければなりません。

DefinedColumns (オプション)

[]string

インデックスの事前定義列。

IndexType (オプション)

IndexType

インデックスのタイプ。IT_GLOBAL_INDEX はグローバルセカンダリインデックスを指定し、IT_LOCAL_INDEX はローカルセカンダリインデックスを指定します。デフォルト値: IT_GLOBAL_INDEX。

ストリーム設定

StreamSpec は StreamSpecification 型で、次のパラメーターが含まれます。

名前

タイプ

説明

EnableStream (オプション)

bool

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

ExpirationTime (オプション)

int32

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

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

EnableLocalTxn を true に設定して、ローカルトランザクションを有効にします。次の点にご注意ください:

  • このパラメーターは Tablestore SDK for Go 1.7.8 以降でサポートされます。最新バージョンを使用することを推奨します。

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

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

データ暗号化設定

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

名前

タイプ

説明

Enable (オプション)

bool

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

KeyType (オプション)

*SSEKeyType

暗号化タイプ。SSE_KMS_SERVICE は KMS サービスキーによる暗号化を指定し、SSE_BYOK は BYOK 暗号化を指定します。

KeyId (オプション)

*string

カスタマーマスターキー ID。このパラメーターは BYOK 暗号化に必須です。

RoleArn (オプション)

*string

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)
}