【问题标题】:CouchDB Views and Design DocumentsCouchDB 视图和设计文档
【发布时间】:2014-01-14 09:02:03
【问题描述】:

对于 CouchDB,您可以创建多个视图和/或多个设计文档。

将视图分组在同一个设计文档中还是将每个视图保留在自己的设计文档中更好?

【问题讨论】:

    标签: couchdb cloudant couchdb-futon


    【解决方案1】:

    在内部,每个设计文档中的视图在“视图组”中一起管理。每个视图组在访问时都会生成一个单独的视图服务器 - 即,如果有 8 个视图组,您将有 8 个 JavaScript 进程。这肯定会影响设计和性能。来自 CouchDB documentation

    当来自同一视图组的一个视图(即在单个设计文档中定义的所有视图)被确定为需要重建时,就会发生视图索引重建。例如,如果您有一个具有不同视图的设计文档,并且您更新了数据库,则设计文档中的所有三个视图索引都将更新。

    因此,从设计/部署的角度来看,您需要注意更改单个视图将重建设计文档中的所有其他视图。您可以使用this trick 在后台构建它们,但它仍将构建组中的所有视图,因此可能很昂贵。

    您还可以利用视图组-视图服务器关系来发挥自己的优势。例如,如果您的 CPU 有 8 个内核,则您可能有 8 个视图组,每个内核 1 个,以提高并行度。

    【讨论】:

    • 感谢您的澄清。我有一个后续问题。设计文档中的更新功能呢?或者更一般地说,如果设计文档不包含任何视图会发生什么?
    • 我的理解是视图组的身份是使用设计文档“视图”部分的 MD5 签名确定的。这就是背景视图构建技巧起作用的原因(如果签名相同,两个设计设计文档可以共享相同的视图组)。如果没有视图,则设计文档不应生成视图服务器,因为没有关联的视图组。
    • 我理解在同一个设计文档中保留多个视图的缺点。如果更新设计文档,它将从头开始重建所有索引。在同一个设计文档中保留多个视图有什么好处?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多