全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
表格存储

表操作

更新时间:2018-03-08 20:37:51

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

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

创建表(CreateTable)

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

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

示例

在本示例中,表名为simple_create_delete_table,主键只含一个主键列,名为pkey,类型为整型(kPKT_Integer)。

  1. CreateTableRequest req;
  2. {
  3. // immutable configurations of the table
  4. TableMeta& meta = req.mutableMeta();
  5. meta.mutableTableName() = "simple_create_delete_table";
  6. {
  7. // with exactly one integer primary key column
  8. Schema& schema = meta.mutableSchema();
  9. PrimaryKeyColumnSchema& pkColSchema = schema.append();
  10. pkColSchema.mutableName() = "pkey";
  11. pkColSchema.mutableType() = kPKT_Integer;
  12. }
  13. }
  14. CreateTableResponse resp;
  15. Optional<OTSError> res = client.createTable(resp, req);

说明:详细代码在createTable@GitHub获取。

可变参数

您可以在数据表上设置若干可变参数。可变参数可以在建表时设定,也可以通过更新表来修改。

可变参数包括以下几项:

可变参数 名称 默认值
mutableTimeToLive() 数据生命周期 -1(即永不过期)
mutableMaxVersions() 最大版本数 1
mutableMaxTimeDeviation() 有效版本偏差 86400秒(即一天)
mutableReservedThroughput() 预留读写吞吐量 0(即全部读写按量计费)

以下是一个建表时设定预留读写吞吐量的示例:

  1. CreateTableRequest req;
  2. {
  3. // immutable configurations of the table
  4. TableMeta& meta = req.mutableMeta();
  5. meta.mutableTableName() = "create_table_with_reserved_throughput";
  6. {
  7. // with exactly one integer primary key column
  8. Schema& schema = meta.mutableSchema();
  9. PrimaryKeyColumnSchema& pkColSchema = schema.append();
  10. pkColSchema.mutableName() = "pkey";
  11. pkColSchema.mutableType() = kPKT_Integer;
  12. }
  13. }
  14. {
  15. TableOptions& opts = req.mutableOptions();
  16. {
  17. // 0 reserved read capacity-unit, 1 reserved write capacity-unit
  18. CapacityUnit cu(0, 1);
  19. opts.mutableReservedThroughput().reset(util::move(cu));
  20. }
  21. }
  22. CreateTableResponse resp;
  23. Optional<OTSError> res = client.createTable(resp, req);

列出表名称(ListTable)

获取当前实例下已创建的所有表的表名。

接口

使用SyncClient::listTable()来列举实例下的所有表。

  1. SyncClient* client = ...;
  2. ListTableRequest req;
  3. ListTableResponse resp;
  4. Optional<OTSError> res = client->listTable(resp, req);

示例

获取实例下的所有表名。

  1. const IVector<string>& xs = resp.tables();
  2. for(int64_t i = 0; i < xs.size(); ++i) {
  3. cout << xs[i] << endl;
  4. }

说明:详细代码在listTable@GitHub获取。

更新表(UpdateTable)

更新指定表的可变参数

示例

更新预留吞吐量。

  1. UpdateTableRequest req;
  2. req.mutableTable() = "YourTable";
  3. UpdateTableResponse resp;
  4. {
  5. TableOptions& opts = req.mutableOptions();
  6. {
  7. // 0 reserved read capacity-unit, 1 reserved write capacity-unit
  8. CapacityUnit cu(0, 1);
  9. opts.mutableReservedThroughput().reset(util::move(cu));
  10. }
  11. }
  12. Optional<OTSError> res = client.updateTable(resp, req);

说明:详细代码在updateTable@GitHub获取。

查询表信息(DescribeTable)

通过describeTable()接口可以查询如下表信息:

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

示例

  1. DescribeTableRequest req;
  2. req.mutableTable() = "YourTable";
  3. DescribeTableResponse resp;
  4. Optional<OTSError> res = client.describeTable(resp, req);

说明:详细代码在describeTable@GitHub获取。

删除表(DeleteTable)

删除本实例下指定的表。只需指定表名。

示例

  1. DeleteTableRequest req;
  2. req.mutableTable() = "YourTable";
  3. DeleteTableResponse resp;
  4. Optional<OTSError> res = client.deleteTable(resp, req);

说明:详细代码在deleteTable@GitHub获取。

本文导读目录