CouchDb一个具有许多视图的设计文档,或许多具有视图的设计文档

时间:2017-01-13 17:15:59

标签: couchdb

我理解在同一设计文档中保留多个视图的缺点。如果更新设计文档,它将从头开始重建所有索引。在同一设计文档中保留多个视图有什么好处?

1 个答案:

答案 0 :(得分:3)

  

如果设计文档已更新,它将从头开始重建所有索引。

不是从零开始。根据我的经验和我读到的关于views cleanup的内容,我得到了每个视图文件都以其定义的哈希命名。 因此,当修改设计文档时,每个视图都会更新,您是对的,但如果它们的定义和数据都没有更改,则立即更新。 为了更进一步,如果修改视图定义,然后将其更改回原始定义,将使用旧文件,以便不从头开始计算视图。

问题出在其他地方。每次查询视图时,都会更新所有视图。根据我的经验,如果您同时拥有“小”视图(每个文档只有少量发出,小键,很少或没有值)和“大”视图,那么这可能是一个问题。即使您只需要小视图的结果(例如,为了浏览您的数据),您也必须等待大视图计算才能完成。

  

在同一设计文档中保留多个视图有什么好处?

这样做的主要优点是视图是同一个“app”的一部分。 无论是真正的Web应用程序还是HTTP API,您都可以通过rewrite拥有一组连贯的URI。

另一个优点,即我之前提到的缺点的“半满玻璃”部分,是视图更频繁地更新,因此一点一点地计算。因此,当您查询视图时,更新的可能性会更快。