SDK提供了CreateTable、ListTable、UpdateTable、DescribeTable和DeleteTable等表層級的操作介面。
说明 以下操作為同步介面的樣本,非同步介面的操作請參見非同步介面。
建立表(CreateTable)
建立表時必須指定表的名字和主鍵。主鍵包含 1~4 個主鍵列,每一個主鍵列都有名字和類型。
Table Store的表可以設定自增主鍵列,詳情參見主鍵列自增。
樣本
在本樣本中,表名為simple_create_delete_table,主鍵只含一個主鍵列,名為pkey,類型為整型(kPKT_Integer)。
CreateTableRequest req;
{
// immutable configurations of the table
TableMeta& meta = req.mutableMeta();
meta.mutableTableName() = "simple_create_delete_table";
{
// with exactly one integer primary key column
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() | 資料生命週期 | -1(即永不到期) |
mutableMaxVersions() | 最大版本數 | 1 |
mutableMaxTimeDeviation() | 有效版本偏差 | 86400秒(即一天) |
mutableReservedThroughput() | 預留讀寫輸送量 | 0(即全部讀寫隨用隨付) |
以下是一個建表時設定預留讀寫輸送量的樣本:
CreateTableRequest req;
{
// immutable configurations of the table
TableMeta& meta = req.mutableMeta();
meta.mutableTableName() = "create_table_with_reserved_throughput";
{
// with exactly one integer primary key column
Schema& schema = meta.mutableSchema();
PrimaryKeyColumnSchema& pkColSchema = schema.append();
pkColSchema.mutableName() = "pkey";
pkColSchema.mutableType() = kPKT_Integer;
}
}
{
TableOptions& opts = req.mutableOptions();
{
// 0 reserved read capacity-unit, 1 reserved write capacity-unit
CapacityUnit cu(0, 1);
opts.mutableReservedThroughput().reset(util::move(cu));
}
}
CreateTableResponse resp;
Optional<OTSError> res = client.createTable(resp, req);
列出表名稱(ListTable)
擷取當前執行個體下已建立的所有表的表名。
介面
使用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 reserved read capacity-unit, 1 reserved write capacity-unit
CapacityUnit cu(0, 1);
opts.mutableReservedThroughput().reset(util::move(cu));
}
}
Optional<OTSError> res = client.updateTable(resp, req);
说明 詳細代碼在updateTable@GitHub擷取。
查詢表資訊(DescribeTable)
通過describeTable()
介面可以查詢如下表資訊:
資訊項 | 描述 |
---|---|
表的狀態 | 包括:
|
表meta | 參見建立表。 |
表的可變參數 | 參見可變參數。 |
分區之間的分割點 | 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擷取。