このトピックでは、.NET 用 Tablestore SDK を使用して、パラメータとサンプルコードを使用してデータテーブルを作成する方法について説明します。データテーブルを作成する際には、データテーブルのスキーマ情報と構成情報を指定する必要があります。ハイパフォーマンスインスタンスのデータテーブルに対して、予約読み取りスループットと書き込みスループットを指定できます。
使用上の注意
データテーブルを作成した後、データテーブルのロードに数秒かかります。この期間中、データテーブルに対するすべての読み取り操作と書き込み操作は失敗します。データテーブルがロードされた後に、データテーブルに対する操作を実行してください。
eコマース Web サイトのアイテム ID やフォーラムの投稿 ID など、自動インクリメント主キー列が必要なシナリオでは、データテーブルの作成時に自動インクリメント主キー列を指定できます。詳細については、自動インクリメント主キー列を構成するを参照してください。
前提条件
Tablestore コンソールでインスタンスが作成されていること。詳細については、インスタンスを作成するを参照してください。
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスを初期化するを参照してください。
API 操作
/// <summary>
/// 指定されたテーブルスキーマに基づいてデータテーブルを作成します。
/// </summary>
/// <param name="request">リクエストパラメータ</param>
/// <returns>CreateTable 操作によって返される情報。結果は null です。</returns>
public CreateTableResponse CreateTable(CreateTableRequest request);
/// <summary>
/// CreateTable 操作の非同期モード。パラメータと呼び出し方法は CreateTable 操作と同じです。
/// </summary>
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request);
パラメータ
次の表に、request
に含まれるパラメータを示します。
パラメータ | 説明 |
tableMeta (必須) | データテーブルに関するスキーマ情報。次のパラメータを構成して、スキーマ情報を指定できます。
|
tableOptions (オプション) | データテーブルに関する構成情報。次のパラメータを構成して、構成情報を指定できます。
|
indexMetas (オプション) | インデックスのリスト。各インデックスに対して次のパラメータを構成できます。
説明 Tablestore では、セカンダリインデックスはグローバルセカンダリインデックスとローカルセカンダリインデックスに分類されます。.NET 用 Tablestore SDK は、グローバルセカンダリインデックスのみをサポートしています。 |
reservedThroughput (必須) | 予約読み取りスループットと書き込みスループット。単位:キャパシティユニット (CU)。デフォルト値:0。 重要 ハイパフォーマンスインスタンスのデータテーブルに対してのみ、予約読み取りスループットまたは書き込みスループットを 0 以外の値に設定できます。 |
streamSpecification (オプション) | データテーブルに関する Stream 構成情報。次のパラメータを構成して、Stream 構成情報を指定できます。
|
例
データテーブルを作成する
次のサンプルコードは、データテーブルを作成する方法の例を示しています。
// 主キー列のスキーマを作成します。主キー列の数、名前、データ型が含まれます。
// 最初の主キー列の名前は pk0 で、Integer 型です。最初の主キー列はパーティションキーです。
// 2 番目の主キー列の名前は pk1 で、String 型です。
var primaryKeySchema = new PrimaryKeySchema();
primaryKeySchema.Add("pk0", ColumnValueType.Integer);
primaryKeySchema.Add("pk1", ColumnValueType.String);
// テーブル名と主キー列のスキーマに基づいて tableMeta インスタンスを作成します。
var tableMeta = new TableMeta("SampleTable", primaryKeySchema);
// 予約読み取りスループットと予約書き込みスループットを 0 に設定します。
var reservedThroughput = new CapacityUnit(0, 0);
try
{
// CreateTableRequest オブジェクトを構築します。
var request = new CreateTableRequest(tableMeta, reservedThroughput);
// クライアントの CreateTable 操作を呼び出します。例外が返されない場合は、テーブルが作成されます。
otsClient.CreateTable(request);
Console.WriteLine("テーブルの作成に成功しました。");
}
// 例外が返された場合、テーブルは作成されず、例外を処理する必要があります。
catch (Exception ex)
{
Console.WriteLine("テーブルの作成に失敗しました。例外: {0}", ex.Message);
}
データテーブルとグローバルセカンダリインデックスを作成する
次のサンプルコードは、データテーブルとデータテーブルのグローバルセカンダリインデックスを同時に作成する方法の例を示しています。
public static void CreateTableWithGlobalIndex()
{
// 2 つの主キー列 Pk1 と Pk2、および 2 つの定義済み列 Col1 と Col2 を含むデータテーブルを作成します。
// インデックステーブルを作成し、主キー列を Col1 に、定義済み列を Col2 に設定します。
OTSClient otsClient = Config.GetClient();
Console.WriteLine("グローバルインデックスを持つテーブルの作成を開始しています...");
PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema
{
{ Pk1, ColumnValueType.String },
{ Pk2, ColumnValueType.String }
};
TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema);
tableMeta.DefinedColumnSchema = new DefinedColumnSchema {
{ Col1, DefinedColumnType.STRING},
{ Col2, DefinedColumnType.STRING}
};
IndexMeta indexMeta = new IndexMeta(IndexName);
indexMeta.PrimaryKey = new List<string>() { Col1 };
indexMeta.DefinedColumns = new List<string>() { Col2 };
//indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX;
//indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX;
List<IndexMeta> indexMetas = new List<IndexMeta>() { };
indexMetas.Add(indexMeta);
CapacityUnit reservedThroughput = new CapacityUnit(0, 0);
CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas);
otsClient.CreateTable(request);
Console.WriteLine("テーブルが作成されました: " + TableName);
}
参照
データテーブルを作成するために呼び出すことができる API 操作については、CreateTableを参照してください。
データバージョンと Time To Live (TTL)、セカンダリインデックス、予約読み取りスループットと書き込みスループットについては、データバージョンと TTL、概要、および予約読み取りスループットと書き込みスループットとはを参照してください。
データテーブルを作成した後、次の操作を実行できます。
テーブルに対する操作。詳細については、テーブルに対する操作を参照してください。
データに対する操作。詳細については、データに対する基本操作を参照してください。