2016-01-10 99 views
2

根據互聯網上的大多數文章隨機分區(RP)比數據分發的有序分區(OP)原因要好。其實,我認爲,即使我們使用OP的數據,數據複製的原因也會很好地分佈!那麼第一個假設是否仍然如此?命令分區vs隨機分區

閱讀表現如何?嘗試讀取相同範圍內的兩個值之間的數據時,OP是否比RP更好?

非常感謝

回答

2

我回答不了真正自信滿滿地回答HBase的(僅支持有序分區據我所知),但卡桑德拉我強烈建議使用OrderPreservingPartitioner和ByteOrderedPartitioner的,除非你有一個非常需要它的特定用例(例如,如果您需要跨密鑰執行範圍掃描)。這不是很常見的使用

事實上有序分區程序,我想,即使我們使用的是OP的數據複製使得數據將分佈均勻!那麼第一個假設是否仍然如此?

不是特別的,它更有可能遇到有序分區器與隨機分區器相關的熱點。作爲對Cassandra的維基從Partitioners page描述:

全球訂購您的所有分區生成熱點:一些分區併攏會得到更多的活動比其他人,而承載這些節點將相對於其他被重載。您可以嘗試減輕主動負載平衡,但這在實踐中效果不佳;在您調整令牌分配的時間以便在超負荷節點上出現較少的熱分區時,您的工作負載通常會發生足夠的變化,以至於熱點現在位於其他地方。請記住,保留全局秩序意味着您不能選擇要重定位的熱分區,必須重新定位連續範圍。

還有其他問題,有序分區,遠遠here描述:

難負載均衡:

更多的管理開銷,需要進行負載平衡羣集。有序分區程序要求管理員根據分區鍵分佈的估計值手動計算分區範圍。實際上,這需要主動移動節點令牌,以便在數據加載後適應數據的實際分佈。多個表

不平衡負載均衡:

如果你的應用程序有多個表,有機會,這些表有不同的行鍵和數據的不同分佈。對一個表進行平衡的有序分區可能會導致同一集羣中另一個表的熱點和不均勻分佈。

至於:關於閱讀的表現是什麼

?嘗試讀取相同範圍內的兩個值之間的數據時,OP是否比RP更好?

對於範圍掃描(即獲取該鍵和該鍵之間的所有數據),您肯定會獲得更好的性能。

所以它真的歸結爲你正在做的查詢。範圍掃描查詢是否對您至關重要?在這種情況下,HBase可能是更適合您的解決方案。如果它不那麼重要,則有理由考慮C *。我不會添加更多,因爲我不想讓我的答案轉化爲比較兩種解決方案:)。

+1

好回答Andy。我有一個關於BOP的答案,以及:http://stackoverflow.com/questions/27939234/cassandra-byteorderedpartitioner/27944273#27944273 – Aaron

+1

我希望他們只是不贊成它,所以人們停止嘗試使用它。 – Aaron

+0

優秀的答案亞倫,我特別喜歡你使用多列主鍵進行範圍查詢的要點。我同意應該解決用戶需求的很大一部分,我會保留在我的後面的口袋:)。在C *中棄用BOP也是+1! –