【发布时间】:2010-05-12 04:58:59
【问题描述】:
是否有任何可靠且知名的 NoSQL DB 支持 JTA 事务?在我的应用程序中,我需要在同一个事务中将一些数据存储到 RDBMS DB 和一些数据存储到 NoSQL DB,并且我使用 JTA 进行 RDBMS 事务。
【问题讨论】:
-
为什么需要nosql数据库?你的用例是什么?
是否有任何可靠且知名的 NoSQL DB 支持 JTA 事务?在我的应用程序中,我需要在同一个事务中将一些数据存储到 RDBMS DB 和一些数据存储到 NoSQL DB,并且我使用 JTA 进行 RDBMS 事务。
【问题讨论】:
是否有任何可靠且知名的 NoSQL DB 支持 JTA 事务?
Neo4j 确实支持 XA 协议事务、死锁检测、事务恢复、JTA。
更新:回答 OP 的评论:
虽然 Neo4j 不是 RDBMS,但据我了解,NoSQL 数据库指的是新一代的面向文档的数据库,如 CouchDB 和 MongoDB。但感谢您的回答。
面向文档的数据库(CouchDB 和 MongoDB)只是 ONE 一种 NoSQL 数据库,你的理解是错误的。 键/值数据库(Riak、Redis、Voldemort)、面向列的数据库(HBase 和 Cassandra)、面向图的数据库(Neo4j、 HypergraphDB 和 FlockDB)都属于 NoSQL 数据库家族。
如果您专门寻找面向文档的数据库,您可能应该更新您的问题,因为它具有误导性。
【讨论】:
嗯,这是一个是与否的答案,是的,一些 NoSQL 数据库提供原子操作,但这些不是 RDMBS 意义上的事务,通常只影响single document。
但是你有一个更大的问题,你的 NoSQL 连接资源需要支持 XA 事务,这是一个很大的问题,我在最流行的产品中找不到任何关于 XA 事务支持的参考。您总是可以创建自己的 XA 资源或可能将东西放在 UserTransaction 中?
【讨论】: