2011-03-05 48 views
0

我正在設計一個Riak集羣,並想知道是否有可能暗示Riak應該在集羣的單個節點上放置一組特定的密鑰?如何使Riak數據本地化?

例如,有一些用戶的私人數據,只有她能夠訪問。這些數據包含大約10k個文檔(太大而無法保存在一個關鍵/文檔中),並且爲了提供一個頁面,我們需要檢索它們中的大約100個。將整個組合保存在單個節點上會更好+在同一個實例上使用該應用程序以使其更快。對於Cassandra來說很容易:只需使用OrderedPartitioner和像這樣的鍵:<hash(username)>/<private data key>。這樣,幾乎所有的用戶密鑰都將保存在單個節點上。

回答

5

使用Riak的一個要點是您的數據在整個羣集中被複制並均勻分佈,從而提高了您對網絡分區和中斷的容忍度。在特定節點上放置數據違背了該目標,並增加了您的漏洞。

+0

我相信複製和均勻分佈都可以使用我爲Cassandra描述的設置(假設用戶數量比節點數量大得多)來實現。我想在這裏做的是嘗試將我的應用程序更接近數據,更多Map/Reduce思維方式,但應用於Web服務。 – 2011-03-06 00:45:03

+1

我可以理解,這聽起來像MapReduce將是適當的方式來做到這一點。但是將計算轉移到數據並決定數據在哪裏存在是兩個不同的問題。 – seancribbs 2011-03-14 00:21:54