2012-11-14 31 views
0

我是新來的riak,並試圖發現它的潛力。目前我玩弄N,R,W設置來查看影響。我在這裏想念的是檢查哪些數據存儲在哪個節點/分區上。找到存儲特定數據的節點/分區

有沒有辦法問

  • 只有一個節點,數據IT賣場?
  • 每個節點,誰存儲我想要的具體數據?

所以,如果我能得到這樣的節點2和3商店,我需要的數據信息,要求如果我stop節點2和3

回答

2

我不知道的任何標準方式的數據會失敗準確找出某個特定記錄存儲在哪個節點上(但不排除存在一個)。然而,這通常不是人們需要關注的事情。

Riak以對用戶透明的方式基於一致哈希散佈物理節點上的記錄,並在節點以有序方式添加或刪除時在整個集羣中重新分發數據(以維護n_val拷貝)。

如果某個節點意外停止運行,那麼在該節點上保存的數據更改將在停機期間由其他節點跟蹤並在該節點恢復後傳遞給該節點。

這意味着只要您根據您對數據的一致性要求定義N,R和W,即使添加或刪除了節點,Riak仍將保留這些要求。

以這種方式,我相信Riak在某種程度上與依賴分片的數據庫有所不同,因爲數據與特定節點綁定更多,而不一定會自動重新分配給其他節點/分片。

+0

謝謝,最終在riak存儲它的時候真的不那麼重要。但是,如果我們不能發現它,它會很奇怪嗎?對你最後一句話:如果我有3個節點,停止一個和'N = 3',我可以寫嗎? – stb

+0

如果您在羣集中有3個節點並通過riak-admin以受控方式刪除了一個節點,Riak會將此節點上的數據移動到其他節點上,並且在單個物理節點上實際有2個副本。如果3個節點中的一個意外關閉,另外兩個節點將臨時跟蹤更改,並在發生故障後將其發送給故障節點。在這兩種情況下,您都可以繼續讀取和寫入(可能取決於R和W值)。 –

+2

正如僅供參考,我們推薦最少5個節點(默認情況下N = 3),以保證一個節點沒有給定數據的多個副本。不,沒有辦法找出哪些數據存儲在任何給定節點上。 –

相關問題