CouchDB视图和设计文档

Jus*_*oud 4 couchdb couchdb-futon cloudant

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

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

Wil*_*ley 8

在内部,每个设计文档中的视图在"视图组"中一起管理.每个视图组在访问时生成一个单独的视图服务器 - 即如果有8个视图组,则将有8个JavaScript进程.这当然具有设计和性能影响.从CouchDB 文档中,

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

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

您还可以使用视图组 - 视图服务器关系.例如,如果您的CPU具有8个核心,则可能有8个视图组,每个核心1个,以提高并行性.

  • 我理解在同一设计文档中保留多个视图的缺点.如果更新设计文档,它将从头开始重建所有索引.在同一设计文档中保留多个视图有什么好处? (3认同)
  • 我的理解是视图组标识是使用设计文档的"视图"部分的MD5签名来确定的.这就是为什么后台视图构建技巧有效(如果签名相同,两个设计设计文档可以共享相同的视图组).如果没有视图,则设计文档不应生成视图服务器,因为没有关联的视图组. (2认同)