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);
			
詳細なコードは createTable@GitHub にあります。

可変パラメーター

データテーブルにはいくつかの可変パラメーターを設定できます。 可変パラメーターは、テーブルの作成時に設定することも、テーブルのアップデートを使用して変更することもできます。

可変パラメーターには次のものがあります。

可変パラメーター 名前 デフォルト値
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;
}
			
詳細なコードは、『listTable@GitHub』をご参照ください。

テーブルを更新する (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);
			
詳細なコードは、『updateTable@GitHub』をご参照ください。

テーブル情報を照会する (DescribeTable)

以下のテーブル情報は、describeTable()インターフェイスを介して照会できます。

情報アイテム 説明
テーブルの状態 以下を含みます。
  • kTS_Active: テーブルは通常の読み書きサービスを提供できます。
  • kTS_Inactive: テーブルは読み書きできませんが、テーブルデータは予約されています。 このステータスは通常、プライマリバックアップテーブルの切り替え中に発生します。
  • - kTS_Loading: テーブルは作成中です。 テーブルは読み書きできません。
  • kTS_Unloading: テーブルは削除中です。 テーブルは読み書きできません。
  • kTS_Updating: 変数テーブルパラメーターは更新中です。 テーブルは読み書きできません。
テーブルメタ テーブルの作成」をご参照ください。
可変テーブルパラメーター 可変パラメーター」をご参照ください。
シャード間でポイントを分割する Table Store テーブルは、水平方向にいくつかのシャードに分割されています。 分割ポイントはこのインターフェイスを通して得られます。
Table Store は、負荷に応じてバックグラウンドで自動的に分割およびマージできます。 そのため、このインターフェイスが受け取る分割ポイントは過去のシャードを反映することが保証されていますが、現在進行中のものと必ずしも一致するわけではありません。

DescribeTableRequest req;
req.mutableTable() = "YourTable";
DescribeTableResponse resp;
Optional<OTSError> res = client.describeTable(resp, req);
			
詳細なコードは、『describeTable@GitHub』をご参照ください。

テーブルを削除する (DeleteTable)

このインスタンスの下にある指定されたテーブルを削除します。 唯一の要件は、テーブル名を指定することです。

DeleteTableRequest req;
req.mutableTable() = "YourTable";
DeleteTableResponse resp;
Optional<OTSError> res = client.deleteTable(resp, req);
			
詳細なコードは、『deleteTable@GitHub』をご参照ください。