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

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

最終更新日:Jul 08, 2025

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

使用上の注意

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

前提条件

クライアントが初期化されています。詳細については、「Tablestore クライアントを初期化する」をご参照ください。

メソッドの説明

public CreateTableResponse CreateTable(CreateTableRequest request)

非同期メソッド:

public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request)

CreateTableRequest パラメーター

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

    パラメーター

    タイプ

    説明

    TableName (必須)

    string

    データテーブルの名前。

    PrimaryKeySchema (必須)

    PrimaryKeySchema

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

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

    • プライマリキー列のデータ型には、STRING、INTEGER、BINARY があります。パーティションキーではない INTEGER 型のプライマリキー列を 自動インクリメントプライマリキー列 として指定できます。

    DefinedColumnSchema (オプション)

    DefinedColumnSchema

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

    • 事前定義された列とは、事前に定義された属性列のことです。事前定義された列を使用して、セカンダリインデックス および 検索インデックス を作成できます。

    • 事前定義された列のデータ型には、STRING、INTEGER、BINARY、DOUBLE、BOOLEAN があります。

  • TableOptions (オプション) TableOptions: テーブルの構成情報。以下のパラメーターが含まれます。

    パラメーター

    タイプ

    説明

    TimeToLive (オプション)

    int

    データの存続時間 (TTL)。単位は秒です。デフォルト値は -1 です。

    • このパラメーターが -1 に設定されている場合、データの有効期限は切れません。それ以外の場合は、最小値は 86400 (1 日) です。保持期間が TTL を超えるデータは自動的に削除されます。

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

    MaxVersions (オプション)

    int

    バージョンの最大数。デフォルト値は 1 です。

    • 検索インデックスまたはセカンダリインデックスを使用する場合は、このパラメーターを 1 に設定する必要があります。

    DeviationCellVersionInSec (オプション)

    long

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

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

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

    AllowUpdate (オプション)

    bool

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

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

  • IndexMetas (オプション) List<IndexMeta>: セカンダリインデックスのリスト。各インデックスには、以下のパラメーターが含まれます。

    パラメーター

    タイプ

    説明

    IndexName (必須)

    string

    インデックスの名前。

    PrimaryKey (必須)

    List<string>

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

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

    DefinedColumns (オプション)

    List<string>

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

    • インデックスの事前定義された列は、データテーブルの事前定義された列で構成されます。

    IndexType (オプション)

    IndexType

    インデックスのタイプ。固定値は IT_GLOBAL_INDEX で、グローバルセカンダリインデックスを示します。

    IndexUpdateModel (オプション)

    IndexUpdateMode

    インデックスの更新モード。固定値は IUM_ASYNC_INDEX で、非同期更新を示します。

    • グローバルセカンダリインデックスの更新モードは、非同期更新に設定する必要があります。

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

    パラメーター

    タイプ

    説明

    EnableStream (必須)

    bool

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

    ExpirationTime (オプション)

    int

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

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

  • ReservedThroughput (必須) CapacityUnit: 予約済み読み取り/書き込みスループット。容量単位 (CU) で表されます。このパラメーターをゼロ以外の値に設定できます。この設定は、CU モードの高性能インスタンスのデータテーブルに対してのみ有効です。

サンプルコード

次のサンプルコードは、String 型のプライマリキー列が 1 つ含まれる test_table という名前のテーブルを作成します。

try
{
    // データテーブルを作成するには、少なくとも 1 つのプライマリキー列が必要です。
    PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema
    {
        { "id", ColumnValueType.String } // id を文字列型として設定
    };
    // データテーブルのスキーマ情報を構築します。
    TableMeta tableMeta = new TableMeta("test_table", primaryKeySchema);

    // データテーブルを作成するときに、予約済みの読み取り/書き込みスループットを設定する必要があります(このパラメーターをゼロ以外の値に設定でき、この設定は CU モードの高性能インスタンスのデータテーブルに対してのみ有効です)。
    CapacityUnit reservedThroughput = new CapacityUnit(0, 0);

    // リクエストを構築して送信します。
    CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput);
    client.CreateTable(request);
    Console.WriteLine("テーブルの作成に成功しました。");
}
catch (Exception ex)
{
    Console.WriteLine($"テーブルの作成に失敗しました。例外: {ex.Message}");
}

また、データテーブルを作成するときに、次のサンプルコードを参照して追加設定を行うこともできます。

  • 事前定義された列を追加する

    DefinedColumnSchema definedColumnSchema = new DefinedColumnSchema
    {
        { "name" , DefinedColumnType.STRING } // name を文字列型として設定
    };
    
    tableMeta.DefinedColumnSchema = definedColumnSchema;
  • 最大バージョンオフセットを指定する

     TableOptions tableOptions = new TableOptions();
     tableOptions.DeviationCellVersionInSec = 86400; // 最大バージョンオフセットを 86400 秒に設定
     
     request.TableOptions = tableOptions;
  • 更新を許可するかどうかを指定する

    TableOptions tableOptions = new TableOptions();
    tableOptions.AllowUpdate = false; // 更新を許可しない
    
    request.TableOptions = tableOptions;
  • セカンダリインデックスを追加する

    // セカンダリインデックスのリストを構築します。
    List<IndexMeta> indexMetas = new List<IndexMeta>();
    // セカンダリインデックスを構築します。
    IndexMeta indexMeta = new IndexMeta("test_table_index"); // インデックス名を test_table_index に設定
    // インデックスのプライマリキーを指定します。
    indexMeta.PrimaryKey = new List<string>() { "id", "name" }; // プライマリキーを id と name に設定
    // インデックスタイプを指定します。
    indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX; // インデックスタイプをグローバルインデックスに設定
    // インデックス更新モードを指定します。
    indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX; // インデックス更新モードを非同期に設定
    // セカンダリインデックスを追加します。
    indexMetas.Add(indexMeta);
    
    // リクエストを構築します。
    CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas);
  • Stream 情報を指定する

    StreamSpecification streamSpecification = new StreamSpecification(true); // Stream を有効にする
    streamSpecification.ExpirationTime = 168; // Stream の有効期限を 168 時間に設定
                    
    request.StreamSpecification = streamSpecification;

関連情報