【问题标题】:CouchDb and data writesCouchDb 和数据写入
【发布时间】:2011-08-27 06:53:26
【问题描述】:

据我了解,CouchDb 永远不会覆盖记录,而是使用新的 _rev 创建一个新文档。在这种情况下会发生什么?

  1. 用户 A 读取文档
  2. 用户 B 读取相同的文档
  3. 用户 A 更新文档
  4. 用户 B 更新文档

在这种情况下用户 A 的更改不会丢失吗?

【问题讨论】:

    标签: couchdb b-tree


    【解决方案1】:

    不,相反,用户 B 将收到 409 错误,因为转速将不再匹配。要让用户 B 提交他们的文档,他们需要重新获取文档,以便获得最新的文档修订版本。

    这称为乐观锁定,旨在专门防止您遇到的问题。

    没有什么可以阻止用户 B 踩用户 A 的文档,但现在他们必须重新获取文档并使用新的 _rev 参数,从而更加意识到这一点。

    【讨论】:

    • 可以允许用户 B 的更改,以便至少 B 的客户端可以成功存储一次往返的更新。然而,这将导致 CouchDB 中的冲突,某些客户端软件必须解决该冲突。但正如威尔所说,在大多数情况下,人们会提前失败并让 B(或 B 的软件)重新运行查询
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多