このトピックでは、.NET SDK を使用して Tablestore でデータテーブルを作成する方法について説明します。
使用上の注意
データテーブルを作成したら、データに対して操作を実行する前に、データテーブルがロードされるまで待機してください。そうしないと、操作は失敗します。このプロセスには通常数秒かかります。
前提条件
クライアントが初期化されています。詳細については、「Tablestore クライアントを初期化する」をご参照ください。
メソッドの説明
public CreateTableResponse CreateTable(CreateTableRequest request)非同期メソッド:
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request)サンプルコード
次のサンプルコードは、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;