SDK は、CreateTable、ListTable、UpdateTable、DescribeTable、DeleteTable などのテーブル操作インターフェイスを提供します。
テーブルを作成する (CreateTable)
作成するテーブルの名前とプライマリキーを常に指定する必要があります。 プライマリキーには 1 つから 4 つのプライマリキー列があり、各列には名前と型があります。
Table Store テーブルでは、プライマリキー列に自動増分を設定できます。 詳細については、「プライマリキー列の自動インクリメント」をご参照ください。
例
この例では、テーブル名は simple_create_delete_table です。 プライマリキーには、pkey という名前の 1 つのプライマリキー列しかなく、整数型 (kPKT_Integer) です。
CreateTableRequest req;
{
// テーブルの不変の設定
TableMeta& meta = req.mutableMeta();
meta.mutableTableName() = "simple_create_delete_table";
{
// 厳密に 1 つの整数プライマリキー列を持ちます。
Schema& schema = meta.mutableSchema();
PrimaryKeyColumnSchema& pkColSchema = schema.append();
pkColSchema.mutableName() = "pkey";
pkColSchema.mutableType() = kPKT_Integer;
}
}
CreateTableResponse resp;
Optional<OTSError> res = client.createTable(resp, req);
可変パラメーター
データテーブルにはいくつかの可変パラメーターを設定できます。 可変パラメーターは、テーブルの作成時に設定することも、テーブルのアップデートを使用して変更することもできます。
可変パラメーターには次のものがあります。
可変パラメーター | 名前 | デフォルト値 |
---|---|---|
mutableTimeToLive() | Time to live | -1 (データの有効期限が切れないことを意味します) |
mutableMaxVersions() | Max Versions | 1 |
mutableMaxTimeDeviation() | Max Version Offset | 86,400s (または 1 日) |
mutableReservedThroughput() | Reserved read/write throughput | 0 (すべての読み書きは従量課金制) |
以下は、テーブルを作成するときに予約済み読み書きスループットを設定する例です。
CreateTableRequest req;
{
// テーブルの不変の設定
TableMeta& meta = req.mutableMeta();
meta.mutableTableName() = "create_table_with_reserved_throughput";
{
// 厳密に1つの整数プライマリキー列を持ちます。
Schema& schema = meta.mutableSchema();
PrimaryKeyColumnSchema& pkColSchema = schema.append();
pkColSchema.mutableName() = "pkey";
pkColSchema.mutableType() = kPKT_Integer;
}
}
{
TableOptions& opts = req.mutableOptions();
{
// 予約済み読み取り容量単位は 0、予約書き込み容量単位は 1 です。
CapacityUnit cu(0, 1);
opts.mutableReservedThroughput().reset(util::move(cu));
}
}
CreateTableResponse resp;
Optional<OTSError> res = client.createTable(resp, req);
テーブル名を一覧表示する (ListTable)
現在のインスタンスで作成されたすべてのテーブルの名前を取得するために使用されます。
API
SyncClient::listTable()
をインスタンス下にあるすべてのテーブルをリストするために使用します。
SyncClient* client = ... ;
ListTableRequest req;
ListTableResponse resp;
Optional<OTSError> res = client->listTable(resp, req);
例
インスタンスの下にあるすべてのテーブルの名前を取得するために使用されます。
const IVector<string>& xs = resp.tables();
for(int64_t i = 0; i < xs.size(); ++i) {
cout << xs[i] << endl;
}
テーブルを更新する (UpdateTable)
指定されたテーブルの変数パラメーターを更新します。
例
予約済みスループットを更新します。
UpdateTableRequest req;
req.mutableTable() = "YourTable";
UpdateTableResponse resp;
{
TableOptions& opts = req.mutableOptions();
{
// 予約済み読み取り容量単位は 0、予約済み書き込み容量単位は 1 です。
CapacityUnit cu(0, 1);
opts.mutableReservedThroughput().reset(util::move(cu));
}
}
Optional<OTSError> res = client.updateTable(resp, req);
テーブル情報を照会する (DescribeTable)
以下のテーブル情報は、describeTable()
インターフェイスを介して照会できます。
情報アイテム | 説明 |
---|---|
テーブルの状態 | 以下を含みます。
|
テーブルメタ | 「テーブルの作成」をご参照ください。 |
可変テーブルパラメーター | 「可変パラメーター」をご参照ください。 |
シャード間でポイントを分割する | Table Store テーブルは、水平方向にいくつかのシャードに分割されています。 分割ポイントはこのインターフェイスを通して得られます。
注 Table Store は、負荷に応じてバックグラウンドで自動的に分割およびマージできます。 そのため、このインターフェイスが受け取る分割ポイントは過去のシャードを反映することが保証されていますが、現在進行中のものと必ずしも一致するわけではありません。
|
例
DescribeTableRequest req;
req.mutableTable() = "YourTable";
DescribeTableResponse resp;
Optional<OTSError> res = client.describeTable(resp, req);
テーブルを削除する (DeleteTable)
このインスタンスの下にある指定されたテーブルを削除します。 唯一の要件は、テーブル名を指定することです。
例
DeleteTableRequest req;
req.mutableTable() = "YourTable";
DeleteTableResponse resp;
Optional<OTSError> res = client.deleteTable(resp, req);