发布时间:2023-11-05 11:30
TcaplusDB提供client工具,支持使用条件过滤进行查询或更新。
Client工具在Api包的路径:release/x86_64/bin/tcaplus_client
。
Client命令中,可用条件过滤的命令有:
详细使用见client的help信息。
全表扫描
client 内部调用 Traverse 或 ListTraverse 接口全表扫描。
如: dump * from user where rank < 10 limit 10;
主键查询
若条件中指定了主键(但不仅只有主键),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
。
字段更新
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);
记录替换
client 内部调用 Set 或 ListReplace 接口进行记录修改,对于 List 表还必须给定 -index
的值。
如: replace into list_user (id, name, rank) values(1, \'aka\', 100) where rank = 0 and -index = 0;
记录删除
client 内部调用 Del 或 ListDel 接口进行记录修改,因此条件中必须给定主键,对于List表还必须给定 -index
的值。
如: delete from user where id = 1 and name = \'aka\';
ListDelAll
List 表,若不指定 -index
,删除该主键下 List 的所有记录,但当前 ListDelAll 暂不支持条件过滤,因此条件中必须只有主键。
数组查询
client 内部调用 Query 或 ListQuery 接口查询数组字段,因此条件中必须给定主键,对于List表还必须给定 -index
的值。
如: query user get mailbox#[0 - -1][title = \'tcaplus\'] where id = 1 and name = \'aka\';
TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。