本文為您介紹如何選擇表格存儲的查詢方式以及索引常見組合方案。
無需使用索引
以下情況您可以不使用索引進行數據查詢。
索引介紹
表格存儲提供了二級索引和多元索引用于加速數據查詢。
二級索引
一個二級索引是一個索引表,類似于數據表,其提供了另一種數據分布方式或者認為是另一種主鍵排序方式。一個索引對應一種查詢條件,預先將符合查詢條件的數據排列在一起,查詢效率很高,適合固定維度的查詢。索引表可支撐的數據規模與數據表相同,此外,二級索引的主鍵設計也同樣需要考慮散列問題。更多信息,請參見二級索引簡介。
表格存儲提供了全局二級索引和本地二級索引兩種類型的索引。全局二級索引以異步方式將數據表中被索引的列和主鍵列的數據自動同步到索引表中,正常情況下同步延遲達到毫秒級別。
為了滿足用戶的強一致性查詢等需求,表格存儲推出了本地二級索引。本地二級索引以同步方式將數據表中被索引的列和主鍵列的數據自動同步到索引表中,當數據寫入數據表后,即可從索引表中查詢到數據。
全局二級索引和本地二級索引在同步方式、對第一列主鍵要求、同步延遲和讀取一致性方面的區別請參見下表說明。
維度 | 全局二級索引 | 本地二級索引 |
同步方式 | 異步方式 | 同步方式 |
第一列主鍵要求 | 可選數據表中的任意主鍵列或者預定義列 | 必須和數據表的第一列主鍵相同 |
同步延遲 | 毫秒級別 | 實時 |
讀取一致性 | 最終一致性 | 強一致性 |
多元索引
一個多元索引是一系列數據結構的組合,其中的每一列都支持建立倒排索引等結構。查詢數據時可以按照其中任意一列進行排序。一個多元索引可以支持多種查詢條件,不需要對不同查詢條件建立多個多元索引。更多信息,請參見多元索引簡介。
相比二級索引,多元索引還支持多條件組合查詢、模糊查詢、全文索引、地理位置查詢等。多元索引本質上是通過各種數據結構加快了數據的篩選過程,功能豐富,但在數據按照某種固定順序讀取的場景上效率不如二級索引。多元索引的查詢效率與倒排鏈長度等因素相關,即查詢性能與整個表的全量數據規模有關,在數據規模達到百億行以上時,建議使用路由鍵(RoutingKey)對數據進行分片,查詢數據時通過指定RoutingKey查詢來減少查詢涉及到的數據量。
多元索引適合如下場景:
需要對查詢做任意組合
需要有OR的查詢,例如
X=a OR X=b
的場景需要GEO地理位置查詢
需要對字符串分詞查詢
索引對比
二級索引和多元索引的對比說明請參見下表。
對比項 | 二級索引 | 多元索引 |
查詢靈活度 | 只可使用創建索引時指定的索引組合進行查詢。如需其他組合需創建新的索引表 | 可對索引字段做任意組合查詢 |
查詢性能 | 通過索引鍵可定位到對應的分片,性能佳 | 需要查詢所有的分片 |
大范圍掃描 | 支持,性能與表引擎一致 | 支持,但性能低于表引擎及二級索引 |
數據可見延遲 |
| 秒級 |
分詞查詢 | 不支持 | 支持 |
GEO地理位置查詢 | 不支持 | 支持 |
數據一致性 |
| 最終一致 |
常見索引組合方案
每個業務都希望具備豐富的數據查詢功能,但是在數據規模很大時,靈活的查詢意味著較高的成本。例如萬億行數據的規模,使用表引擎,成本低;建立多元索引,查詢靈活但是費用較高;建立二級索引,成本較低但是只適合固定維度的查詢。
常見的超大規模數據都帶有一些時間屬性,例如大量設備產生的數據(監控數據)或者人產生的數據(消息、行為數據等),這類數據非常適合采用表格存儲進行存儲。針對這類數據建立索引的組合方案如下:
對元數據表建立多元索引,全量數據表不建立索引或采用二級索引。
元數據表一般是產生數據的主體表,例如設備信息表、用戶信息表等。在時序模型中,產生數據的主體也可以認為是一個時間線,這條時間線會不斷產生新的點。
對熱數據建立多元索引,冷數據不建立索引或者采用二級索引。
很多情況下僅需要對非常熱的數據進行多種維度查詢,對冷數據采取固定維度查詢(二級索引)即可。冷熱數據分離可以給業務提供更高的性價比。
目前多元索引支持TTL,您可以通過多元索引TTL實現熱數據和冷數據的區分。更多信息,請參見多元索引生命周期管理。
技術支持
表格存儲為您提供專業的免費的技術咨詢服務,歡迎通過釘釘加入相應交流群。
為互聯網應用、大數據、社交應用等開發者提供的最新技術交流群有
表格存儲技術交流群-3
。說明表格存儲用戶群11789671(
表格存儲技術交流群
)和23307953(表格存儲技術交流群-2
)已滿,暫時無法加入。為物聯網和時序模型開發者提供的技術交流群有44327024(
物聯網存儲 IoTstore 開發者交流群
)。