4

抱歉,我想不出一个更具描述性的标题:我们在更新 couchDB 视图时遇到问题,因为在重新索引设计文档时无法访问它们。是允许陈旧视图的唯一解决方案吗?

在一种情况下,有几个 couchDB 节点相互复制。更新一个视图将导致所有 couchDB 节点重新索引设计文档。是否不能在一个节点上更新视图然后复制结果?我认为问题在于新文档可以在重新索引时插入其他节点。

在另一种情况下,我们有几个 couchDB 节点,它们是读/写和相互复制的。对于 Web 应用程序,还有另一个带有只读 couchDB 节点的集群……它们不会复制出去,而是从读/写池复制到。这里的解决方案可能是将节点从集群中取出,更新视图并等待它重新索引。但是,该节点不会丢失在重新索引期间创建的任何文档吗?是否可以在重新索引时继续接收文档插入?

还有其他可能的解决方案吗?我们正在迁移到第二种情况,这就是我主要关心的问题,但我想知道是否有针对这两种情况的通用解决方案。使用陈旧的视图不是一个理想的场景,因为重新索引可能需要很长时间,而且它是一个高流量的站点。

4

1 回答 1

4

很高兴听到您在 CouchDB 方面取得了成功。

我建议您使用wiki 中描述的staging-and-upgrade 技术。它需要一些准备才能开始工作,但是一旦你开始工作,它就可以很好地工作,无需任何人力。

于 2012-04-20T14:05:51.020 回答