2012-07-21 96 views
1

看着Basho Vimeo談論Voxer時,Matt告訴「閱讀操作真的很貴」。是讀取操作昂貴嗎?

當讀取發生時,Riak使用某種Quorum來選擇哪個節點將提供數據?

Riak是無主的,所以每個節點都應該包含相同的數據,不是嗎? (不一致窗口之後,顯然,這是來自最終一致性)

感謝

回答

4

你稍不明白他在說什麼;他正在談論旋轉磁盤和讀取它們的費用。這不是一個Riak特定的問題。

他們有大量的數據無法放入內存。它容易使用SSD太大了,因爲它們無法將它們足夠地塞進服務器中,因爲它們當前的大小限制(這就是爲什麼他們將從SSD中移出,並在他的講話中聲明時回到旋轉磁盤上)。

如果你沒有使用內存數據庫(Riak不是,除非你使用內存後端),正如馬特在他的講話部分所說的那樣,你只是受限於如果您必須從磁盤讀取數據,您的磁盤可以爲您提供的iops數量。這是沒有辦法的;你正在讀取磁盤。他繼續說,你想緩存一切你可以幫助的。

這幾乎是如何工作的,無論您使用何種數據庫平臺來打擊磁盤;沒有免費午餐:)

如果您使用的是Riak,並且您的數據集超出了可用內存量,那麼當出現「緩存未命中」時,您將不得不從磁盤讀取數據。如果您使用默認Bitcask後端,則Riak依賴底層操作系統的磁盤緩存 - 其他後端可能會或可能不會這樣做,而是執行其自己的內存緩存。

至於你在節點上的數據問題...... Riak是無主的,最初基於亞馬遜Dynamo紙張。我們使用一致性哈希來將副本週圍的數據與副本一起分發,然後寫入相鄰節點,由您配置的「N值」控制(並且可以基於每個存儲桶配置,甚至基於每個請求)。當你讀到這個相同的散列方法被用來找到數據「生活」的節點。

默認情況下,讀取將從(n_val/2)+ 1個節點讀取,但您可以根據每個請求調整此值以滿足您的需求。通過最終的一致性,不能保證這些節點上的數據在您讀取的時間點上是相同的,並且您可能需要根據業務邏輯執行衝突解決方案。據說這樣理解,在正常操作下(例如,您沒有網絡分區或節點正在恢復),以毫秒爲單位的時間量是不一致的。

我們有一個有關這些信息在我們的網站上可用,並非常努力地組織它,所以很容易找到。特別是你可能想看看Riak - clustering數據分佈的方式。

+0

Brian,非常感謝! Iam考慮在我的項目中使用Riak,我真的不明白Matt所說的。 – CHAPa 2012-07-22 00:18:52

+0

R =通過讀操作訪問數據對象時所聯繫的節點數量,對不對?當R = 2並且這個節點有不同的數據時會發生什麼!讀取操作將失敗? – CHAPa 2012-07-28 10:43:16

+0

@CHAPa - 不,你會在客戶端進行衝突解決,並希望將解析的對象寫回Riak。如果無法讀取「R」節點(例如,它們已關閉或無法訪問),則只會發生故障 – 2012-07-28 15:36:14

相關問題