Riak-如何基于另一个桶过滤一个桶的对象?

时间:2014-03-04 11:01:18

标签: mapreduce riak ripple riak-search riak-js

我正在使用带有多个存储桶的3节点Riak群集。我有一个名为 user_account 的存储桶,其中包含名称,地址等用户信息。

user_account = {"id" => 1,"name"=>"abc", "address"=>"xyz"}

还有另一个存储桶 user_metadata ,用于更新此数据。其中的记录如下:

user_metadata = {"id" => 1, "created_at"=>"20140304", "updated_at" => "20140304"}

两个桶都具有相同的密钥,即id。我想在存储桶 user_account 上运行map_reduce,以便在 user_metadata 中的日期范围内更新所有密钥。 有没有办法可以做到这一点,目前在user_metadata存储桶中没有updated_at键的索引。

1 个答案:

答案 0 :(得分:0)

由于Riak中没有连接,解决此问题的常用方法是对数据模型进行反规范化。在您的情况下,这些记录之间存在一对一的关系,这表明合并它们可能是个好主意。这还可以允许您定义二级索引,这些索引可以提高MapReduce作业的性能,并更有效地为其定义合适的输入。它还可以帮助您更有效地从Riak检索数据,因为通常最好检索一些较大的对象而不是大量较小的对象。