SDK提供了CreateTable、ListTable、UpdateTable、DescribeTable和DeleteTable等表级别的操作接口。

说明 以下操作为同步接口的示例,异步接口的操作请参见异步接口

创建表(CreateTable)

创建表时必须指定表的名字和主键。主键包含 1~4 个主键列,每一个主键列都有名字和类型。

表格存储的表可以设置自增主键列,详情参见主键列自增

示例

在本示例中,表名为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()接口可以查询如下表信息:

信息项 描述
表的状态 包括:
  • kTS_Active:表可以正常提供读写服务。
  • kTS_Inactive:表上不可读写,但表上数据保留。通常这个状态出现在主备表切换时。
  • kTS_Loading:正在建表过程中。表上不可读写。
  • kTS_Unloading:正在删表过程中。表上不可读写。
  • kTS_Updating:正在更新表可变参数中。表上不可读写。
表meta 参见创建表
表的可变参数 参见可变参数
分片之间的分割点 表格存储上的一张表被水平切分成若干分片。通过这个接口可以获取各分片间的分割点。
说明 由于表格存储会在后台根据负载进行自动分裂与合并,这个接口取到的分割点保证是曾经出现过的分片情况,但不保证与当前情况完全吻合。

示例

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获取。