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