我正在使用带有 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 之类的东西。
MongoDB 4.0 现在支持多文档 ACID 事务!请参阅https://www.mongodb.com/blog/post/mongodb-multi-document-acid-transactions-general-availability
MongoDB不支持事务,只支持原子操作。
http://docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/
这里是一个使用乐观锁为 MongoDB 实现事务的人的帖子: https://stackoverflow.com/a/12757751/1173560
之前我对 MongoDB 事务有疑虑,但是通过 MongoDB 网站、StackOverflow 上的各种文章和本地实验,我已经成功地让多文档事务正常工作。我在以下教程草稿中报告了实验,希望得到更有经验的 MongoDB 用户的指正:
在故障转移情况下,MongoDB 驱动程序会自动将客户端连接重新连接到新的主节点,但中断的事务是否需要由客户端重新启动? 从客户端的角度来看,故障转移所花费的时间有时比 2 秒心跳时间 + 10 秒主响应时间等待时间的技术时间要短得多。解释是什么?此外,某些故障转移类型无法继续复制过程,这对应用程序来说是致命的。