【问题标题】:How can I achieve JTA-like transactional operations with a document-oriented DB such as MongoDB?如何使用 MongoDB 等面向文档的数据库实现类似 JTA 的事务操作?
【发布时间】:2013-12-18 14:14:55
【问题描述】:

环顾四周,我真的很难找到这个问题的合适答案。

我已经尝试过使用 Mongo 的两阶段提交的机会,如下所述:http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/,但它似乎很乏味,并且缺少与其他层的分布式事务。

我还需要关于韧性和可靠性的有力论据。

有没有人在这方面成功地研究或实施生产?

我的基本需求是将面向文档的持久性添加到 JCR 实现中。

感谢您的帮助

【问题讨论】:

  • 获取 ACID 兼容的数据库?
  • 或使用 STM(软件事务内存)在应用程序级别进行管理。
  • 嗯,STM 实际上会在应用程序级别转移问题而不是解决它。我的问题中预期的事务支持旨在为多个不同的数据存储层(DB、FS 等)提供可靠性。
  • 这个问题经常出现,因为有些人认为有一个“解决方法”。不幸的是,如果跨层事务对您的应用程序很重要,那么您选择了错误的数据库技术。

标签: mongodb jta


【解决方案1】:

不幸的是,大多数 NoSQL 数据库不支持 ACID 或 XA,但 Neo4j 等图形数据库除外。 Mongodb 仅支持在单个文档内进行原子操作。这就是为什么你会发现 mongodb 文档中所谓的两阶段提交如此繁琐的原因。您可能还想了解使用 compensating transaction 是否适合您的用例。

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多