我正在深入研究CouchDB,我对视图中Map-Reduce计算的分布感到困惑。我看到很多资源都提到Map-Reduce本身是分布式的,因为你可以在服务器A上处理一半数据,另一半在服务器B上处理,然后减少两个结果。一个例子是本演示文稿的幻灯片16:
http://www.slideshare.net/gabriele.lana/couchdb-vs-mongodb-2982288
这看似合乎逻辑,但是:
CouchDB似乎没有提供用于将计算分派给多个服务器的API。它似乎提供的唯一分发是将整个数据集复制到其他服务器(我假设它会计算自己的视图数据)。
CouchDB使用B-Tree来存储基于视图算法的Map步骤中生成的密钥的视图数据,这排除了基于应该在哪个服务器上对文档进行适当分区。
那么,CouchDB是否会分发Map-Reduce计算?或者Map-Reduce属性仅用于缓存B树节点中的值?
答案 0 :(得分:9)
您正在寻找BigCouch,它启用了CouchDB群集并使用分布式MapReduce。
答案 1 :(得分:3)
CouchDB不会跨节点分发视图,因为couchdb不是分布式应用程序。您只能从一个实例连续复制到另一个实例,但每个实例仍可单独工作。