4.5. 视图推荐

以下是一些关于使用 CouchDB 的(基于 JavaScript 的)视图的技巧和窍门。

4.5.1. 在生产环境中部署视图更改

可以更改视图的定义,构建索引,然后使这些更改生效,而不会导致应用程序停机。使此方法起作用的诀窍是 CouchDB 的 JavaScript 视图索引文件基于设计文档的内容,而不是其名称、_id 或修订版。这意味着两个具有相同视图代码的设计文档将共享相同的磁盘上的视图索引文件。

以下是一个工作示例,假设您的 /db/_design/ddoc 需要更新。

  1. 将旧的设计文档上传到 /db/_design/ddoc-old(或复制文档),如果您希望在出现问题时能够轻松回滚,这将是一个简单的方法。 ddoc-old 文档将引用已为 _design/ddoc 构建的相同视图索引。

  2. 将更新后的设计文档上传到 /db/_design/ddoc-new

  3. 查询新设计文档中的视图以触发辅助索引生成。您可以通过 /_active_tasks 端点或通过 Fauxton Web 界面跟踪索引进度。

  4. 索引构建完成后,将更新后的设计文档重新上传到 /db/_design/ddoc(或复制文档)。 ddoc 文档现在将引用已为 _design/ddoc-new 构建的相同视图索引。

  5. 根据您的需要删除 /db/_design/ddoc-new 和/或 /db/_design/ddoc-old。不要忘记触发 视图清理 以在删除 ddoc-old 后回收磁盘空间。

可以使用 COPY HTTP 动词使用单个命令复制设计文档

curl -X COPY <URL of source design document> -H "Destination: <ID of destination design document>"