2011-03-05 51 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