1. 程式人生 > 其它 >【深入理解TcaplusDB技術】詳細介紹Client工具

【深入理解TcaplusDB技術】詳細介紹Client工具

【深入理解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級儲存、毫秒級時延、無損水平擴充套件和複雜資料結構等特性。同時具備豐富的生態、便捷的遷移、極低的運維成本和五個九高可用等特點。客戶覆蓋遊戲、網際網路、政務、金融、製造和物聯網等領域。