【问题标题】:Transaction mongodb事务mongodb
【发布时间】:2016-08-01 07:31:38
【问题描述】:

我需要使用 'all or nothing' 进程写入两个不同的 mongodb 集合。仅供参考,我在后端使用 NodeJs。

据我所知,MongoDb 在单个集合中提供原子性,但在我们需要写入多个集合时却没有。

所以我想知道一种在 nodejs/mongodb 中模拟此事务的方法,以避免在另一个集合失败时写入一个集合,并且还有可能进行“滚动”如果第二个进程失败,则返回'。

谢谢你们!

【问题讨论】:

    标签: node.js mongodb transactions rollback


    【解决方案1】:

    从 4.0 版开始,MongoDB 将添加对多文档事务的支持。 MongoDB 中的事务将类似于关系数据库中的事务。 有关详细信息,请访问此链接: https://www.mongodb.com/blog/post/multi-document-transactions-in-mongodb?jmp=community

    【讨论】:

      【解决方案2】:

      我写了一个实现上述两阶段提交系统的库。在这种情况下它可能会有所帮助。 Fawn - Transactions for MongoDB

      【讨论】:

        【解决方案3】:

        MongoDB 4.0 已经引入了多文档的事务处理!!!

        https://docs.mongodb.com/manual/core/transactions

        【讨论】:

          【解决方案4】:

          在 MongoDB(4.0 之前)中,您无法在数据库级别完全实现事务。然而,有一些机制提供了一些交易功能。您可以在documentation 中了解它们。

          自 MongoDB 4.0 起,支持事务。您当前的代码中只需要很少的 chage 即可支持它们。 documentation fully dedicated to the subject 中有一个新部分

          【讨论】:

          • 感谢@JustLogin。事实是我已经阅读了所有这些文档,但我想知道是否有其他方法可以模拟它。再次感谢。
          • @Mochics 如果您需要大量事务,则必须使用另一个数据库。据我所知,没有完全支持事务的 NoSQL DB。
          • 我只需要在整个平台的一次操作中完成一个事务,我无法更改数据库,所以我担心我会被它阻止。我将尝试模拟 MongoDb 提出的两阶段提交,但我不确定它是否真的有效......
          • 您可以在服务器端创建事务。在许多情况下,这是唯一的方法。
          • MongoDB 4.0 完全支持事务docs.mongodb.com/manual/core/transactions
          猜你喜欢
          • 2011-02-08
          • 1970-01-01
          • 2015-11-13
          • 2013-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多