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

Tablestore:データテーブルの作成

最終更新日:Jul 24, 2025

このトピックでは、Tablestore SDK for Go を使用してデータテーブルを作成する方法について説明します。

使用方法

データテーブルを作成した後、データに対して操作を実行する前に、データテーブルがロードされるまで待機してください。そうしないと、操作は失敗します。このプロセスには通常数秒かかります。

前提条件

Tablestore クライアントを初期化する.

メソッドの説明

func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)

CreateTableRequest パラメーター

  • TableMeta (必須) *TableMeta: テーブルのスキーマ情報。以下のパラメーターを含みます。

    パラメーター

    説明

    TableName (必須)

    string

    データテーブルの名前。

    SchemaEntry (必須)

    []*PrimaryKeySchema

    プライマリキーに関する情報。

    • 1 ~ 4 個のプライマリキー列を構成できます。デフォルトでは、プライマリキー列は昇順にソートされます。最初のプライマリキー列はパーティションキーとして機能します。

    • プライマリキー列のデータ型には、STRING、INTEGER、BINARY が含まれます。パーティションキーではない整数型のプライマリキー列には、自動採番プライマリキー列 を構成できます。

    DefinedColumns (オプション)

    []*DefinedColumnSchema

    事前定義列に関する情報。

  • TableOption (必須) *TableOption: テーブルの構成情報。以下のパラメーターを含みます。

    パラメーター

    説明

    TimeToAlive (必須)

    int

    データの生存時間 (TTL)。単位: 秒。

    • このパラメーターを -1 に設定すると、データは期限切れになりません。それ以外の場合は、最小値は 86400 (1 日) です。TTL を超えたデータは自動的にクリアされます。

    • 多次元インデックスまたはセカンダリインデックスを使用する場合は、TTL を -1 に設定するか、AllowUpdate パラメーターを false に設定する必要があります。

    MaxVersion (必須)

    int

    最大バージョン数。

    • バージョン 1 までの検索インデックスを使用したい場合は、

    DeviationCellVersionInSec (オプション)

    int64

    最大バージョンオフセット。単位: 秒。デフォルト値: 86400 (1 日)。

    • 書き込まれたデータのタイムスタンプと現在のシステム時間の差は、最大バージョンオフセット以内である必要があります。そうでない場合、書き込まれたデータは書き込みに失敗します。

    • 属性列のデータの有効なバージョン範囲は、[max(データ書き込み時間 - 最大バージョンオフセット, データ書き込み時間 - TTL), データ書き込み時間 + 最大バージョンオフセット) です。

    AllowUpdate (オプション)

    *bool

    更新を許可するかどうかを指定します。デフォルト値: true。

    • このパラメーターを false に設定すると、UpdateRow() メソッドを使用してデータを更新することはできません。

  • IndexMetas (オプション) []*IndexMeta: セカンダリインデックスのリスト。各インデックスに以下のパラメーターを構成します。

    名前

    説明

    IndexName (必須)

    string

    インデックスの名前。

    Primarykey (必須)

    []string

    インデックスのプライマリキー列。

    • インデックスのプライマリキー列は、インデックスが作成されるデータテーブルのプライマリキー列と事前定義列の組み合わせです。

    • ローカルセカンダリインデックスを作成する場合、インデックスの最初のプライマリキー列は、データテーブルの最初のプライマリキー列である必要があります。

    DefinedColumns (オプション)

    []string

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

    • データテーブルの事前定義列で構成されます。

    IndexType (オプション)

    IndexType

    インデックスの型。有効な値:

    • IT_GLOBAL_INDEX (デフォルト): グローバルセカンダリインデックス。

    • IT_LOCAL_INDEX: ローカルセカンダリインデックス。

  • StreamSpec (オプション) *StreamSpecification: Stream 構成情報。以下のパラメーターを含みます。

    パラメーター

    説明

    EnableStream (オプション)

    bool

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

    ExpirationTime (オプション)

    int32

    Stream の有効期限。増分ログの有効期間を示します。単位: 時間。最大値: 168 (7 日)。

    • EnableStream を true に設定する場合は、ExpirationTime を設定する必要があります。

  • EnableLocalTxn (オプション) *bool: ローカルトランザクション を有効にするかどうかを指定します。デフォルト値: false。false の値は、ローカルトランザクションが無効になっていることを示します。

    • この機能は、Go SDK 1.7.8 以降でのみサポートされています。

    • 自動採番プライマリキー列機能とローカルトランザクション機能を同時に使用することはできません。自動採番プライマリキー列を構成した場合、ローカルトランザクションを有効にしても、ローカルトランザクション設定は有効になりません。

    • データテーブルの作成時にローカルトランザクション機能が無効になっていて、データテーブルの作成後にこの機能を使用する場合は、チケットを送信 して申請してください

  • SSESpecification (オプション) *SSESpecification: データ暗号化 設定。以下のパラメータを含みます。

    重要

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

    パラメータ

    タイプ

    説明

    Enable (オプション)

    bool

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

    KeyType (オプション)

    *SSEKeyType

    暗号化タイプ。有効な値:

    • SSE_KMS_SERVICE: Key Management Service (KMS) ベースの暗号化。

    • SSE_BYOK: Bring Your Own Key (BYOK) 暗号化。

    KeyId (オプション)

    *string

    カスタマーマスターキー (CMK) ID。このパラメータは、keyType が SSE_BYOK に設定されている場合にのみ必須です。

    RoleArn (オプション)

    *string

    RAM ロールの Alibaba Cloud リソースネーム (ARN)。このパラメータは、keyType が SSE_BYOK に設定されている場合にのみ必須です。

  • ReservedThroughput (必須) *ReservedThroughput: 予約済み読み取り/書き込みスループット。単位:容量単位(CU)。デフォルト値:0。CU モードの高性能インスタンスのみ、このパラメーターをゼロ以外の値に設定できます。

サンプルコード

次のサンプルコードは、文字列型のプライマリキー列が 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 = sseSpec
    • BYOK 暗号化

      説明

      コードを実行する前に、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

関連情報