2015-04-05 73 views
3

我們有一個包含1500萬條記錄的表,而我們是一個10節點的cassandra集羣。我們有一個有近20個可重複值的列。建議在此專欄上建立二級索引?低基數列的二級索引cassandra

回答

5

假設該列上的分佈完全一致,那麼每個列值將映射到750,000行。當When To Use An Index上的DataStax文檔聲明...

內置索引在包含索引值的許多行的表上是最好的。

750,000行肯定具有「許多」的資格。但即使如此,請記住,當您履行您的查詢時,您也正在談論Cassandra需要的14,250,000行忽略。另外,除非你的射頻頻率爲10(並且我懷疑你會有10個節點),否則隨着Cassandra在完成查詢所需的所有不同節點之間工作,您將產生網絡時間。對於750,000行,這可能會超時。

我認爲這可能是有效的唯一方法,將首先限制您的查詢由分區鍵。使用二級索引同時限制分區鍵可以幫助Cassandra更快地找到你的行。即使如此,如果數據集很大,我會重新評估您的數據模型,並嘗試找出不同的表來滿足該查詢,而不需要二級索引。

+0

hi Bryce;非常感謝解釋。爲了增加上述問題,我們將對查詢應用限制「1」。所以這將是「select * from secondary_index ='xyz'limit 1」。限制函數是否也會導致RPC超時? – kris433 2015-04-05 20:42:27

+0

@ kris433與極限1,它可能不會太糟糕。嘗試一下,看看你的響應時間是什麼樣子。 – Aaron 2015-04-05 21:21:29

相關問題