CouchDB视图和设计文档

CouchDB视图和设计文档,couchdb,cloudant,couchdb-futon,Couchdb,Cloudant,Couchdb Futon,对于CouchDB,您可以创建多个视图和/或多个设计文档 将同一设计文档中的视图分组还是将每个视图保留为其自己的设计文档更好?在内部,每个设计文档中的视图在“视图组”中一起管理。每个视图组在被访问时都会生成一个单独的视图服务器,即,如果有8个视图组,那么您将有8个JavaScript进程。这当然会对设计和性能产生影响。从CouchDB 当同一视图组中的一个视图(即在单个设计文档中定义的所有视图)被确定为需要重建时,将发生视图索引重建。例如,如果有一个具有不同视图的设计文档,并且更新了数据库,则设

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


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

在内部,每个设计文档中的视图在“视图组”中一起管理。每个视图组在被访问时都会生成一个单独的视图服务器,即,如果有8个视图组,那么您将有8个JavaScript进程。这当然会对设计和性能产生影响。从CouchDB

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

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


您还可以利用视图组与视图服务器的关系。例如,如果您的CPU有8个核心,那么您可能有8个视图组,每个核心1个,以提高并行性。

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