2

当我第一次查询 CouchDB/Couchbase 视图时,需要对其进行计算。如果有大量文档并且每个视图都有大量文档,这可能需要很长时间。

有没有办法将已经计算好的视图从一个沙发复制到另一个?

4

2 回答 2

1

不直接通过 CouchDB 复制,不,在如何实现这方面存在各种实际的复杂性,这使得我担心它不切实际。

对于初学者来说,这意味着 CouchDB 必须小心地管理视图计算的复制,同时以某种方式与实际数据完全同步(因此您永远不会得到比数据更新的视图计算),然后由于以下事实而变得更加复杂视图仅在请求时更新,因此任一端的视图数据可能已过期(如果用户使用 stale=ok 进行查询,甚至可能需要保持过期)。

如果您只需要一次视图同步,我相信您可以通过直接复制视图索引文件(我认为默认在 /var/lib/couchdb/.DBNAME_design/SOMEHASH.view 中)来做到这一点。不过,我建议不要将其作为通用解决方案经常这样做,因为它不是官方支持的 AFAIK 并且可能非常脆弱。

于 2013-09-02T14:12:56.887 回答
0

这不是您问题的直接答案,尽管正如 PimTerry 指出的那样,不支持复制视图索引,尤其是在不同的实现之间。

您可以做的是按照此处描述的程序进行操作:

http://wiki.apache.org/couchdb/How_to_deploy_view_changes_in_a_live_environment

这样,您可以让您的 couchdb “在后台”计算新索引,而不会阻止您的应用程序的使用。

希望这可以帮助。

于 2013-09-05T11:43:10.433 回答