我正在处理一个couchdb数据库,我现在正在处理或多或少的400000个文档。
我有几个视图(只有map,no reduce),当我想用couchapp更新其中一个时,我会被迫更新所有视图。 事实上,正如How to update a document's record/field in couchdb所述,不可能只更新文档的PART。
由于数据库有很多文档,所有视图的内部更新(构建b树)需要相当长的时间(超过半小时)。
这是一个非常烦人的问题,因为在部署阶段我无法挂起服务器只更新一个或两个视图。
那么,这是一个很好的策略来更新一个或两个视图而不强制couchdb更新所有视图?
也许有办法告诉系统只更新其中的一些......但我不知道如何。
答案 0 :(得分:3)
单个设计文档中的所有视图在保存到CouchDb后会更新。视图按需更新(查询时),除非您想要更改视图的性质,否则无需正常更新它们。您可以使用多个设计文档,因此可以使用视图来更好地控制更新视图代码的结果。
在查询任何单个视图时,设计文档中的所有视图都是updated,因此在决定设计文档和视图的结构时考虑这一点很重要。但是,要控制此行为,可以包含stale
参数以指示视图可以返回旧数据。从上面链接的页面上的文档:
如果设置了
stale=ok
,CouchDB即使过时也不会刷新视图,这样可以提高查询延迟。如果设置了stale=update_after
,CouchDB将在返回过时结果后更新视图。