CouchDb和数据写入

CouchDb和数据写入,couchdb,b-tree,Couchdb,B Tree,据我所知,CouchDb从不覆盖记录,而是使用新版本创建新文档。在这种情况下会发生什么 用户A读取文档 用户B读取相同的文档 用户A更新文档 用户B更新文档 在这种情况下,用户A的更改没有丢失吗?没有,相反,用户B将收到409错误,因为转速不再匹配。为了让用户B提交文档,他们需要重新蚀刻文档,以便获得最新的文档修订版 这称为乐观锁定,专门用于防止您看到的问题 没有什么能阻止用户B践踏用户A的文档,但现在他们更清楚地意识到了这一点,他们必须重新蚀刻文档并使用新的_rev参数。允许用户B进行更改,以

据我所知,CouchDb从不覆盖记录,而是使用新版本创建新文档。在这种情况下会发生什么

  • 用户A读取文档
  • 用户B读取相同的文档
  • 用户A更新文档
  • 用户B更新文档

  • 在这种情况下,用户A的更改没有丢失吗?

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

    这称为乐观锁定,专门用于防止您看到的问题


    没有什么能阻止用户B践踏用户A的文档,但现在他们更清楚地意识到了这一点,他们必须重新蚀刻文档并使用新的_rev参数。

    允许用户B进行更改,以便至少B的客户端能够通过一次往返成功地存储更新。但是,这将导致CouchDB中的冲突,某些客户端软件必须解决该冲突。但正如威尔所说,在大多数情况下,人们会提前失败,让B(或B的软件)重新运行查询