【深入理解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是騰訊出品的分散式NoSQL資料庫,儲存和排程的程式碼完全自研。具備快取+落地融合架構、PB級儲存、毫秒級時延、無損水平擴充套件和複雜資料結構等特性。同時具備豐富的生態、便捷的遷移、極低的運維成本和五個九高可用等特點。客戶覆蓋遊戲、網際網路、政務、金融、製造和物聯網等領域。