【发布时间】:2017-02-08 02:03:31
【问题描述】:
有没有办法在执行批量保存时在 Couchdb 中创建锁?我相信没有内置的方法可以实现这一点,但是是否可以通过解决方法来解决这个问题?我有一个类似于以下的场景(我使用 Node.js 与 couchdb 数据库交互):
用户支付另一个用户创建一个新的文档对象如下:
{
_id: SOMEID
type: "PAYMENT"
username: SOMEUSER
paidto: ANOTHERUSER
amount: 10
}
保存后,我还需要更新用户在他/她的account document 中的余额(从他/她的钱包中减去 10)。然后我使用 bulk_docs 一次保存这两个文档(新创建的transaction document 和更新的account document)。
但是,如果在此过程中用户通过其他方法(假设在另一个选项卡中)对account document 进行了更改,我们会遇到新的transaction document 被保存而account document 无法更新的问题。这会产生一个大问题和一致性问题。
为了解决这个问题,我们必须锁定account document,直到批量保存过程结束,在此期间第二个选项卡中的过程等待锁定被释放。
我正在尝试部署 Couchdb 是一个文档之间的一致性非常重要但没有锁的环境,这变得非常困难。
【问题讨论】:
标签: couchdb