【发布时间】:2011-04-22 12:05:35
【问题描述】:
我目前正在研究 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-Tree 节点中的值?
【问题讨论】: