0

我正在处理一个 couchdb 数据库,我现在正在处理或多或少的 400000 个文档。

我有几个视图(只有 map,没有 reduce),当我想用​​ couchapp 更新其中一个视图时,我不得不全部更新它们。事实上,正如How to update a document's record/field in couchdb所述,不可能只更新文档的一部分。

由于数据库有很多文档,所有视图的内部更新(构建 b 树)需要相当长的时间(超过半小时)。

这是一个非常烦人的问题,因为在部署阶段我不能只更新一两个视图而挂起服务器。

那么,在不强制 couchdb 更新所有视图的情况下,仅更新一两个视图是一个好策略吗?

也许有一些方法可以告诉系统只更新其中的一些......但我不知道如何。

4

1 回答 1

3

单个设计文档中的所有视图稍后在保存到 CouchDb 时都会更新。视图是按需更新的(当被查询时),除非你想改变视图的性质,否则不需要正常更新它们。您可以使用多个设计文档和视图来更好地控制更新视图代码的结果。

当查询任何单个视图时,设计文档中的所有视图都会更新,因此在决定设计文档和视图的结构时考虑这一点很重要。但是,要控制此行为,您可以包含stale参数以指示视图可以返回旧数据。从上面链接的页面上的文档:

如果stale=ok设置,CouchDB 不会刷新视图,即使它是陈旧的,好处是改进了查询延迟。如果stale=update_after设置,CouchDB 将在返回过时的结果后更新视图。

于 2013-06-11T10:53:46.933 回答