2012-07-21 15 views
2

當我使用cassandra時,我遇到了cassandra閱讀的性能瓶頸。這是性能更好,indexedslicesquery或rangelices查詢Hector?

有兩種方式來讀取我的數據,這是巨大的行鍵。第一個是使用索引並通過索引切片查詢API進行查詢。第二個是使用rangeslicequery API,因爲該行是序列。

當我使用索引時,它總是拋出timeoutexception。那麼我想知道rangelicequery是否更好?

具有200k行和3m列的cf。查詢與檢索20k行。

鍵緩存是30000

回答

2

我認爲,在這種情況下你可能會更好使用range_slice_query。它將數據以塊的形式從磁盤中流出,而不是對每個索引條目進行隨機讀取(我認爲這是get_indexed_slices的工作方式)。唯一確定的方法是嘗試並比較它們。

要停止超時,可以減少每個查詢返回的行數(「計數」http://wiki.apache.org/cassandra/API/)或增加使用hector的超時長度。

你有沒有考慮過使用hadoop來做你想做的事情? 20k行相當多,它可能會更適合您的任務。有一個可以使用的cassandra源代碼提供的InputFormat。它使用下面的範圍查詢,事先檢查哪個節點要查詢每個令牌的範圍。這可能是執行查詢的最快方法。這是關於http://wiki.apache.org/cassandra/HadoopSupport的文檔。