CouchDB视图:map reduce中可以接受多少处理?

Kri*_*ian 8 database couchdb mapreduce nosql

我一直在使用CouchDB来解决Map Reduce问题.一些示例显示了map reduce函数中的一些可能很重的逻辑.在一个特定情况下,他们在地图中执行循环.

在发出所选文档之前,是否会对每个可能的文档运行map reduce吗?

如果是这样,我认为这意味着地图中减少函数运行任何类型的迭代处理都会使处理负担增加一个数量级,至少.

基本上它归结为以下问题:在一个不合理的昂贵查询之前,可以在map中执行多少逻辑

Jas*_*ith 8

CouchDB map-reduce中可以接受大量昂贵的处理.

CouchDB视图(map-reduce)更像是CREATE INDEX它们SELECT FROM.

具体来说,CouchDB保证每个文档运行一次map函数.(好吧,实际上每个文档都会改变一次.)这就是"迭代map-reduce".

因此,假设您有10,000个文档,并且每个文档需要1 才能处理(这比我见过的要高).完全构建视图需要10,000秒或2.8小时.但是,一旦视图完成,查询任何row(?key=...)或行slice(?startkey=...&endkey=...)的时间与直接查询文档的时间相同.查找时间是文档计数的O(log n).

换句话说,即使每个文档需要1秒来执行映射,也需要几毫秒来获取结果.(当然,视图必须首先构建,因为它实际上是一个索引.)