【深入理解TcaplusDB技术】详细介绍Client工具

TcaplusDB提供client工具,支持使用条件过滤进行查询或更新。

Client工具在Api包的路径:release/x86_64/bin/tcaplus_client

Client命令中,可用条件过滤的命令有:

  • dump,全表扫描。
  • select,条件查询。
  • update,条件更新。
  • replace,条件替换。
  • delete,条件删除。
  • query,数组查询。

详细使用见client的help信息。

1 Dump

  • 全表扫描

    client 内部调用 Traverse 或 ListTraverse 接口全表扫描。

    如: dump * from user where rank < 10 limit 10;

2 Select

  • 主键查询

    若条件中指定了主键(但不仅只有主键),client 内部调用 Get 或 ListGet 或 ListGetAll 接口进行查询。

    如: select * from list_user where id = 1 and name = 'aka' and $.LastAccessTime < '2021-10-01';

  • Partkey查询

    若条件中指定了部分key字段(可能还有其他条件),client 内部使用 IndexGetRequest 请求进行查询。

    如: select * from list_user where id = 1 and $.LastAccessTime < '2021-10-01' limit 10;

    注意,若可能返回多个记录,需使用 limit 指定数目,默认是 limit 1

  • 全表查询

    若条件中无法确定全key(主键)或者部分key,那么 client 无法使用 ListGet 或 ListGetAll 接口进行查询。 那么 client 会优先尝试使用全局索引进行全表的SQL查询,若全局索引服务不可用,client 则使用 Traverse 或 ListTraverse 接口全表扫描,即等价于Dump。

    Select 命令中,全局索引的优先级总是比全表遍历过滤查询高,在全局索引服务可用的情况下,若想强行使用全表遍历过滤,则可使用 Dump 命令。

    如:select * from list_user where $.LastAccessTime < '2021-10-01' limit 10;

    注意,若可能返回多个记录,需使用 limit 指定数目,默认是 limit 1

3 Update

  • 字段更新

    client 内部调用 FieldSet 或 ListReplace 接口进行记录修改,因此条件中必须给定主键,对于 List 表还必须给定 -index 的值。

    如: update list_user set rank = 0 where id = 1 and name = 'aka' and -index = 0;

  • 数组更新

    client 内部调用 UpdateItem 或 ListUpdateItem 接口进行记录修改,因此条件中必须给定主键,对于 List 表还必须给定 -index 的值。

    如: update user push gameids#[-1][$=123] where id = 1 and name = 'aka' and gameids not contains($=123);

4 Replace

  • 记录替换

    client 内部调用 Set 或 ListReplace 接口进行记录修改,对于 List 表还必须给定 -index 的值。

    如: replace into list_user (id, name, rank) values(1, 'aka', 100) where rank = 0 and -index = 0;

5 Delete

  • 记录删除

    client 内部调用 Del 或 ListDel 接口进行记录修改,因此条件中必须给定主键,对于List表还必须给定 -index 的值。

    如: delete from user where id = 1 and name = 'aka';

  • ListDelAll

    List 表,若不指定 -index,删除该主键下 List 的所有记录,但当前 ListDelAll 暂不支持条件过滤,因此条件中必须只有主键。

6 Query

  • 数组查询

    client 内部调用 Query 或 ListQuery 接口查询数组字段,因此条件中必须给定主键,对于List表还必须给定 -index 的值。

    如: query user get mailbox#[0 - -1][title = 'tcaplus'] where id = 1 and name = 'aka';


【深入理解TcaplusDB技术】详细介绍Client工具_第1张图片

TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。

你可能感兴趣的:(TcaplusDB,数据库,nosql,tcaplusdb,腾讯云)