MongoDB 中的交易

问题描述 投票:0回答:4

我正在使用带有 Java 和 Spring Data 的 NoSQL 数据库 MongoDB。我知道 MongoDB 仅支持单个文档的事务。

我正在使用 Spring Transactions 进行 MongoDB 交易。我正在使用交易模板。使用TransactionTemplate时,TransactionManager中应该设置什么?

编辑

我有这样的东西:

<bean id=”txtTemplateBean” class=”org.springframework.transaction.support.TransactionTemplate”>
<property name=”transactionManager” ref=”txnManagerBean”></property>

我需要定义 txnManagerBean 以指向 MongoDB 数据库的 DataSourceTransactionManager 之类的东西。

java spring mongodb transactions
4个回答
6
投票

5
投票

MongoDB 使用两阶段提交支持事务like语义。

还有另一个独立的工作使用乐观锁定支持 mongodb 中的事务。


1
投票

MongoDB不支持事务,只支持原子操作。

http://docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/

这里是一个使用乐观锁为 MongoDB 实现事务的人的帖子: https://stackoverflow.com/a/12757751/1173560


0
投票

之前我对 MongoDB 事务有疑虑,但是通过 MongoDB 网站、StackOverflow 上的各种文章和本地实验,我已经成功地让多文档事务正常工作。我在以下教程草稿中报告了实验,希望得到更有经验的 MongoDB 用户的指正:

MongoDB 事务第一部分 - 独立

MongoDB 事务第二部分 - ReplicaSet

MongoDB 事务第三部分 - 故障转移测试

在故障转移情况下,MongoDB 驱动程序会自动将客户端连接重新连接到新的主节点,但中断的事务是否需要由客户端重新启动? 从客户端的角度来看,故障转移所花费的时间有时比 2 秒心跳时间 + 10 秒主响应时间等待时间的技术时间要短得多。解释是什么?此外,某些故障转移类型无法继续复制过程,这对应用程序来说是致命的。

© www.soinside.com 2019 - 2024. All rights reserved.