Cassandra索引詳解

轉自: https://www.cnblogs.com/bonelee/p/6278943.htmlhtml

1.什麼是二級索引?優化

咱們前面已經介紹過Cassandra之中有各類Key,好比Primary Key, Cluster Key 等等。若是您對這部分概念並不熟悉,能夠參考以前的文章: [Cassandra教程] (四)使用Key的正確姿式 對於Cassandra來講,一級索引就是Primary Key. 由於查詢的時候,能夠直接根據Key算出token而後直接獲取對應的記錄。spa

而二級索引,做爲輔助索引就是爲了找到一級索引。而後再經過一級索引找到真正的值.net

原文連接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/翻譯

2. 二級索引的原理3d

Cassandra之中的索引的實現相對MySQL的索引來講就要簡單粗暴不少了。他其實是 自動偷偷新建立了一張表格,同時將原始表格之中的索引字段做爲新索引表的Primary Key!而且存儲的值爲原始數據的Primary Keycode

所以,什麼樣的數據、字段適合作二級索引,也就很清楚了。htm

咱們翻譯一下官方的解釋:blog

參考網址: https://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_when_use_index_c.html教程

原文連接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/

3. 何時 不適合 用索引

  1. High-cardinality 列。 至關於這一列的值不少不少的時候。
    1. 由於查詢了不少結果只能取出一小部分數據集
  2. counter 類型的列
  3. 刪除、更新太過頻繁的列
    1. Cassandra刪除、更新數據都會給老數據設置一個Tombstone(墓碑)。當Tombstone的數據查過10K的時候,就會報錯
    2. 再加上須要同步的更新索引表,Tombstone自己的標記也會很消耗資源
  4. 數據集值太多
    1. 原文英文沒怎麼看懂,這是筆者本身的理解。
    2. 再次強調一下:二級索引裏面存儲的是原始數據的Primary Key。所以若是一次查詢的數據過多就會遇到超時異常

總結一下:

就是索引對應的數據值不能太多也不能太少。 太多就超時,太少就浪費資源(須要建立太多的Primary Key)。 同時索引的列還要穩定,不能頻繁的刪除或者更新~

因此我的認爲, 能不用Cassandra之中的索引就不要用 ,還不如本身顯示的建立一個

原文連接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/

4. 如何使用索引

索引的使用很是簡單,參考下面的代碼以及相應的註釋:

-- 建立索引 CREATE INDEX artist_names ON playlists( artist );   -- 查詢 SELECT * FROM playlists WHERE artist = 'Fu Manchu';   -- 優化查詢 SELECT * FROM playlists WHERE id = 62c36092-82a1-3a00-93d1-46196ee77204 AND artist = 'Fu Manchu';

原文連接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/

相關文章
相關標籤/搜索