在CouchDB中处理冲突

问题描述:

假设我有一个包含两个属性的文档“开始”和“结束”。一个版本可能有开始时间,结束时为空,反之亦然。我不希望选择单一修订版作为获胜者,而是希望最终文档包含修订版的开始时间,其中不为空,对于结束部分也是一样的。在CouchDB中处理冲突

在同步过程中是否有处理此类冲突解决方案的最佳做法?我找到的文档包含选择单个修订版作为获胜者的说明,但我想选择多个转速的值。

特定于C#/ MyCouch库的示例将非常棒,但任何一般或其他语言的建议也非常感谢。

在复制(又名同步)期间,您无法指定冲突解决的自定义方式。 CouchDB的自动选择获奖修订版本,你不能影响是:

默认情况下,CouchDB中挑选一个任意修改为使用确定的算法,使得同样的选择将在所有的同行进行 的“赢家”, 。

您可以等待复制完成,然后通过执行文档修订的特定于应用程序的合并来处理冲突。

寻找到用于Working with conflicting documents的文档,我发现下面的伪代码示例:

  1. GET的docID冲突=真
  2. 对于_conflicts阵列中的每个构件: GET的docID转= XXX 如果在此阶段发生任何错误,请从步骤1重新启动。 (可能有其他人已经解决了此冲突并删除了该版本的竞赛)
  3. 执行特定于应用程序的合并
  4. 将_bulk_docs写入第一个版本的更新,并删除其他版本的 。