2014-03-26 33 views
3

我想知道爲什麼輔助索引甚至在Cassandra上是必需的。爲什麼我們需要cassandra中的二級索引,它們是如何工作的?

我知道二級索引的使用,因爲:

「次要索引允許,用於通過使用等式謂詞特定值有效的查詢(其中x列=值y)另外,查詢就索引值可以應用附加的過濾器。執行範圍查詢等操作。「

來自:http://www.datastax.com/docs/0.7/data_model/secondary_indexes

但我不明白的是爲什麼像查詢:

get users where birth_date = 1973; 

需要將birth_date有一個輔助索引。爲什麼二級索引需要存在? cassandra不能只通過表格,然後在約束匹配時返回值?爲什麼我們需要以任何特殊的方式來處理我們可能想要以這種方式查詢的內容?

我假設cassandra分佈並遍歷整個表的事實可能並不容易,因爲每個行密鑰都分配給了一個不同的節點,使得它有點複雜。但我並不真正瞭解如何使問題分佈複雜化,以及二級指標如何解決問題(即cassandra如何解決這個問題?)。

與此問題相關的是,輔助索引和主鍵是唯一可以在SELECT * FROM column_family_table WHERE col_x = constraint中查詢的東西嗎?爲什麼主鍵很特別?

回答

3

對於這些nosql數據庫意味着要處理的數據量,進行表掃描或區域掃描不是一種選擇。這就是Cassandra限制的內容,只有在啓用了輔助鍵時才允許對非行鍵列進行查詢。那樣的話,這樣的索引和數據將位於相同的數據節點上。

希望它有幫助。

-Vivek

+0

是的,這是有幫助的。作爲後續問題,我有點不確定哪些事情可以用這些限制來查詢?即只能使用colx =約束來查詢二級索引?還是包括整個主鍵?日Thnx! – Pinocchio

+1

應該同時使用輔助鍵和主鍵 –

相關問題