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