【TcaplusDB知識庫】TcaplusDB全域性索引介紹
索引說明
-
本地索引:基於TcaplusDB主鍵欄位建立的索引,在建表時隨表一起建立。
-
全域性索引:基於TcaplusDB表一級欄位(包括主鍵欄位和非主鍵欄位)建立的索引。
通過本地索引和全域性索引,使用者可方便利用索引進行資料查詢。優勢:
-
基於本地索引查詢,可以滿足使用者通過部分主鍵欄位進行索引查詢
-
基於全域性索引,可以滿足使用者通過任意一級欄位進行多種形式查詢,如範圍、模糊、聚合、分頁等。
全域性索引
介紹
全域性索引,顧名思義,就是tcaplus與索引系統之間是相互獨立的,通過非同步同步的方式,將tcaplus中的資料同步到索引系統,因此,全域性索引是一個準實時索引系統,即進行索引查詢時,tcaplus表中新更新的資料無法實時查詢出來,正常情況下,新更新的資料到能夠通過索引查詢出來的時延為秒級,大部分情況是1秒之內;
全域性索引目前只支援對generic表建立索引,並且只支援表的一級欄位(包括key欄位和value欄位)建立索引;並且也只支援簡單型別建立索引,支援的型別包括:int8, uint8, int16, uint16, int32, uint32, int64, uint64, float, double, string(字串); 對於pb表的bool和enum型別也支援,當pb表欄位定義為string型別,如果該欄位儲存的是二進位制,那麼查詢結果可能會不符合預期;對於uint64型別,如果值大於int64的最大值,查詢結果將不符合預期,因此,如果該欄位值會超過int64的最大值,建議不要為該欄位建立索引;
tcaplus支援動態建立和修改索引,業務可以隨時增加或刪除或者修改全域性索引,修改全域性索引時,比如增加了一個索引欄位,不會影響業務對修改前的全域性索引查詢;
tcaplus與全域性索引之間的架構如下圖所示:
建立
建立或者修改全域性索引,需要在頁面上進行申請,進入oms頁面,點選 “業務管理” ---- > "表管理" ---- > 選擇要建立全域性索引的表,拉到最右側,如下圖:
點選 “索引”,進入到索引配置頁面,在該頁面勾上要建立索引的欄位,然後點選“確認建立索引”按鈕,這樣就生成了建立全域性索引的申請單,dba稽核之後,會生成一個建立全域性索引的事務,當事務執行成功後,該索引就可以被訪問了。
資料同步
資料同步,是指tcaplus資料同步到索引系統,兩者之間的資料是最終一致的,資料同步架構如下圖所示:
索引查詢
tcaplus提供sql查詢語句進行索引查詢,其中,sql查詢條件中的欄位必須是建立了全域性索引的欄位,另外,如果是聚合查詢,那麼聚合查詢的欄位也必須是建立了全域性索引的欄位;
一個索引查詢請求,當前限制最多返回3000條記錄;
支援的sql查詢語句
條件查詢
支援 =, >, >=, <, <=, !=, between, in, not in, like, not like, and, or , 比如:
select * from table where a > 100 and b < 1000 ;
select * from table where a between 1 and 100 and b < 1000 ;
select * from table where str like "test" ;
select * from table where a > 100 or b < 1000 ;
注意:between查詢時,between a and b,對應的查詢範圍為[a, b],比如 between 1 and 100, 是會包含1和100這兩個值的,即查詢範圍為[1,100]
注意:like查詢是支援模糊匹配,其中"%"萬用字元,匹配0個或者多個字元; “_”萬用字元,匹配1個字元;
分頁查詢
支援limit offset分頁查詢,比如:
select * from table whre a > 100 limit 100 offset 0;
注意:當前limit必須與offset搭配使用,即不支援limit 1 或者 limit 0,1這種;
聚合查詢
當前支援的聚合查詢包括:sum, count, max, min, avg,比如:
select sum(a), count(*), max(a), min(a), avg(a) from table where a > 1000;
注意:聚合查詢不支援limit offset,即limit offset 不生效;
注意:目前只有count支援distinct,即 select count(distinct(a)) from table where a > 1000; 其他情況均不支援distinct
部分欄位查詢
支援查詢部分欄位的值,比如:
select a, b from table where a > 1000;
對於pb表,還支援查詢巢狀欄位的值,類似:
select field1.field2.field3, a, b from table where a > 1000;
不支援的sql查詢語句
不支援聚合查詢與非聚合查詢混用
select * , a , b from table where a > 1000 ;
select sum (a ) , a , b from table where a > 1000 ;
select count ( * ) , * from table where a > 1000 ;
不支援order by查詢
select * from table where a > 1000 order by a;
不支援group by查詢
select * from table where a > 1000 group by a;
不支援having查詢
select sum(a) from table where a > 1000 group by a having sum(a) > 10000;
不支援多表聯合查詢
select * from table1 where table1.a > 1000 and table1.a = table2.b;
不支援巢狀select查詢
select * from table where a > 1000 and b in (select b from table where b < 5000);
不支援別名
select sum(a) as sum_a from table where a > 1000;
不支援的其他查詢
-
不支援join查詢;
-
不支援union查詢;
-
不支援類似 select a+b from table where a > 1000 的查詢;
-
不支援類似 select * from table where a+b > 1000 的查詢;
-
不支援類似 select * from table where a >= b 的查詢;
-
不支援其他未提到的查詢。
索引查詢流程
索引使用方式
tcaplus_client客戶端工具
tcaplus_client工具支援全域性索引查詢,查詢命令直接使用sql查詢語句進行查詢即可,使用help select 命令可以獲取相關查詢命令。注意tcaplusdb_client使用版本,目前最新的支援3.46.0。
C++ SDK
C++ SDK 已整合相關全域性二級索引API,在示例程式碼中也有相關實現,具體請參考:
# C++ TDR SDK 全域性二索引示例路徑 TcaplusServiceApiXXX/release/x86_64/examples/tcaplus/C++_tdr1.0_syncmode_generic_simpletable/SingleOperation/globle_index_query #C++ PB SDK全域性全域性索引示例路徑TcaplusPbApiXXX/release/x86_64/examples/tcaplus/C++_pb2_coroutine_simpletable/SingleOperation/global_index_query
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982264/viewspace-2843482/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【TcaplusDB知識庫】TcaplusDB本地索引介紹索引
- 【TcaplusDB知識庫】預設Schema表型別介紹型別
- 【TcaplusDB知識庫】什麼是TcaplusDB資料庫?資料庫
- [TcaplusDB知識庫]TcaplusDB客戶端及常用命令客戶端
- [TcaplusDB知識庫]資料庫支撐底盤引擎計算層介紹資料庫
- 【TcaplusDB知識庫】如何對陣列進行操作陣列
- 【TcaplusDB知識庫】條件過濾說明與更新
- 【TcaplusDB知識庫】PB表 C++ 示例程式碼-更新資料C++
- 【TcaplusDB知識庫】PB表 C++ 示例程式碼-讀取資料C++
- 【TcaplusDB知識庫】PB表C++示例程式碼-刪除資料C++
- 資料庫安全知識介紹資料庫
- 資料庫基礎知識介紹!資料庫
- 玩轉騰訊資料庫TcaplusDB|期待下次與你相見!資料庫
- 資料庫開發必備知識介紹資料庫
- TcaplusDB君 · 行業新聞彙編(一)行業
- TcaplusDB君 · 行業新聞彙編(二)行業
- TcaplusDB君 · 行業新聞彙編(三)行業
- Oracle全域性索引和本地索引Oracle索引
- 本地索引、全域性索引、字首索引、非字首索引索引
- Epub基礎知識介紹
- angular中的全域性方法和指令介紹1Angular
- 全域性索引有缺陷啊索引
- Oracle database 補丁知識介紹OracleDatabase
- shiro入門知識介紹
- JDE 的掃盲知識介紹。。。
- 全域性索引和本地索引的比較索引
- 分割槽索引和全域性索引(轉載)索引
- 淺談索引系列之本地索引與全域性索引索引
- 全域性分割槽索引和區域性分割槽索引索引
- 騰訊雲遊戲資料庫 TcaplusDB 的一些常見問題的解答遊戲資料庫
- TcaplusDB君 · 行業新聞彙編(9月10號)行業
- TcaplusDB君 · 行業新聞彙編(9月7日)行業
- TcaplusDB君 · 行業新聞彙編(9月3號)行業
- TcaplusDB君 · 行業新聞彙編(9月8號)行業
- TcaplusDB君 · 行業新聞彙編(10月2號)行業
- TcaplusDB君 · 行業新聞彙編(9月13號)行業
- MySQL索引介紹MySql索引
- Sql索引介紹SQL索引