gpt4 book ai didi

replication - CouchDB 冲突解决

转载 作者:行者123 更新时间:2023-12-04 01:50:14 28 4
gpt4 key购买 nike

CouchDB 在进行双向复制时如何处理冲突?

例如:
假设有两个地址簿数据库(在服务器 A 和 B)。有一份 jack 的文件,其中包含 jack 的联系方式。

  • 服务器 A 和 B 被复制,并且都具有相同版本的 Jack 文档。
  • 在服务器 A 中,Jack 的手机号码已更新。
  • 在服务器 B 中,Jack 的地址已更新。
  • 现在当我们进行双向复制时会发生冲突。

  • couchDB 是如何处理的?如果我们在Java程序中启动复制,有没有办法知道Java程序是否有冲突?

    最佳答案

    CouchDB documentation提供了解释。

    简而言之:CouchDB 不会尝试合并冲突的版本。两个版本都被复制到两个副本中。确定性(但从应用程序的角度来看可能是任意的)算法选择其中一个作为“官方”版本。它将在两个副本上选择相同的版本。默认情况下和 View 中仅此版本可见。您的应用程序可以查询其他版本,并根据需要合并它们(可能通过在屏幕上显示所有版本来涉及用户)。如果您的应用程序不查找冲突,则两个更新之一将有效丢失。

    如果您没有使用复制或批量加载 API(而是每个文档的 REST API),则冲突更新将不会进入数据库,但会因 409 错误而被拒绝。您必须先合并,然后再尝试更新(就像在 Subversion 中一样)。

    关于replication - CouchDB 冲突解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605870/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com