【发布时间】:2013-06-10 09:38:11
【问题描述】:
我正在处理一个 couchdb 数据库,我现在正在处理大约 400000 个文档。
我有几个视图(只有 map,没有 reduce),当我想用 couchapp 更新其中一个时,我不得不全部更新。 事实上,正如How to update a document's record/field in couchdb 所说,不可能只更新文档的一部分。
由于数据库有很多文档,所有视图的内部更新(构建 b 树)需要相当长的时间(超过半小时)。
这是一个非常烦人的问题,因为在部署阶段我不能只更新一两个视图而挂起服务器。
那么,在不强制 couchdb 更新所有视图的情况下,仅更新一两个视图是一种好的策略吗?
也许有一些方法可以告诉系统只更新其中的一些......但我不知道如何。
【问题讨论】:
-
需要 30 分钟才能准确发生什么?无非就是更新几个文件?您的代码没有重新创建视图,对吗?
-
重新创建视图需要 30 分钟(实际上更多)。 “您的代码没有重新创建视图”是什么意思?视图是相同的,但是当我更新设计文档时,我的印象是即使代码相同,也会重新创建视图。
-
为什么要重新创建视图?除非您想要一个新的数据“视图”,否则您不需要这样做。
-
如果更新设计文档,CouchDB 需要重建整个视图。因此,我希望花一些时间来翻阅所有文档并重建索引。
-
好的,但问题是是否有一种方法可以只更新一个视图,而无需重新计算所有视图。这显然是不可能的,因为设计文档中包含视图,该文档作为单个文档上传,即使您只是更改“;”,couchdb 也会重建所有视图。在设计文档中。对吗?
标签: performance couchdb