Mongodb是否缺乏交易成为交易破坏者?

我一直在做一些研究,但已经达到了我认为MongoDB / Mongoose(在Node.js上)不适合工作的地步。 这是场景…

两个文件:帐户(金钱)信息和库存信息

  1. 检查用户的帐户是否有足够的钱
  2. 如果是,请检查并扣除库存
  3. 从帐户信息扣除资金

看来我真的需要一个交易系统来防止其他事件在步骤之间改变数据。

我是正确的,还是可以在MongoDB / Mongoose中处理? 如果没有,是否有一个NoSQL的数据库,我应该检查出来,最好与Node.JS的支持?

实现事务安全性通常比较棘手,不仅仅需要数据库事务,例如,如果您需要以可靠的方式与外部进行通信,或者事务运行时间长达数分钟,数小时甚至数天。 但是,这导致很大。

无论如何,在数据库方面,你可以使用两阶段提交在MongoDB中进行交易,但这并不是微不足道的。

有很多支持事务处理的NoSQL数据库,例如redis ,cassandra(使用Paxos协议 )和foundationdb 。

然而,这对我来说似乎是随机的,因为NoSQL数据库的想法是使用一个适合您的特定问题的想法。 如果你只是需要事务的任何东西,一个SQL数据库可能会做这个工作,对吧?