创建couchdb视图的最有效方法

创建couchdb视图的最有效方法,couchdb,Couchdb,我的CouchDB视图索引的创建速度比我希望的慢。编写文档并不是一个问题,但是用户可以离线编辑文档,然后进行批量更新,这似乎会让事情变得很慢 帮助,但我只是想知道,将不同的视图分成不同的设计文档eg1还是将它们全部存储在一个eg2中更好 Eg. 1 _design/posts/_view/id _design/comments/_view/id _design/tags/_view/id Eg.2 _design/webresources/_

我的CouchDB视图索引的创建速度比我希望的慢。编写文档并不是一个问题,但是用户可以离线编辑文档,然后进行批量更新,这似乎会让事情变得很慢

帮助,但我只是想知道,将不同的视图分成不同的设计文档eg1还是将它们全部存储在一个eg2中更好

    Eg. 1
    _design/posts/_view/id
    _design/comments/_view/id
    _design/tags/_view/id



    Eg.2
    _design/webresources/_view/_id?key="posts"
    _design/webresources/_view/_id?key="comments"
    _design/webresources/_view/_id?key="tags"

*此示例仅用于说明目的。我只关心构建索引所需的时间

如果你经常阅读,你会获得更好的表现。Couchdb视图在读取时更新和构建。因此,您可以在每次文档更新时读取视图以保持其热*

或者,也可以收听并跟踪文档的更新。一旦达到某个阈值,就读取视图

另一个选项是使用stale参数

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

每个设计文档都是一个单独的erlang过程。因此,在不同的设计文档中分离视图将导致它们同时生成。但是,每个视图仍将以分块方式构建。也就是说,跨不同设计文档的两个视图可以同时开始更新,但更新各个视图所需的时间将与它们位于同一设计文档中的时间相同


*你不必关心结果。我们的目标是欺骗couchdb更新视图。因此,您可以在一个单独的异步进程中发出一个请求,并完成它

谢谢。所以从本质上讲,它们是全部打包到一个设计文档中,还是分散到多个设计文档中,都没有区别?当我对许多文档执行批量更新时,问题就出现了。我想我可以将所有文件的批量更新更改为分段更新文档,并在每次更新后执行读取我想我可以将所有文件的批量更新更改为分段更新文档,并在每次更新后执行读取-是的,这是一个很好的策略。因此,从本质上讲,它们是全部打包到一个设计文档中,还是分散到多个文档中都没有区别这确实会有所不同。如果您有分散的视图,它们将在一个单独的并发进程中。威尔·霍利在这里做了一个演讲。过来看。