CouchDB中的rereduce和group = true

时间:2014-11-19 04:04:34

标签: mapreduce couchdb

实际上这个问题是由here https://stackoverflow.com/questions/13338799/does-couchdbs-group-true-prevent-rereduce的其他人提出的。

但是没有令人信服的答案。

  

group = true是group_level = exact的概念等价物,因此CouchDB在地图行集中运行每个唯一键的减少量。

这是doc中解释的方式。 听起来CouchDB会收集相同密钥的所有值,每个不同密钥只减少一次。

但在另一个article中,据说

  

如果查询是关于每个键的reduce值(group_by_key = true),   然后CouchDB尝试找到每个键的边界。从此范围   可能不完全符合B + Tree节点,CouchDB需要   弄清楚两端的边缘以找到部分匹配的假   B + Tree节点并将其地图结果(使用该键)重新发送到View   服务器。然后,此减少结果将与现有的rereduce合并   结果计算此密钥的最终减少结果。

听起来当group = true时可能会发生rereduce。

在我的项目中,有许多文档,但在为每个不同的键分组后,有大多数2个值具有相同的键。 在这种情况下会发生重新减少吗?

最好的问候

1 个答案:

答案 0 :(得分:0)

是。 Rereduce总是有可能。

如果这是一个问题,reduce函数中有一个rereduce参数,可以让你检测是否发生这种情况。

http://docs.couchdb.org/en/latest/couchapp/ddocs.html#reduce-and-rereduce-functions