寻求朋友。 我们可以使用MongoDB版本4编写包含丰富查询的ACID事务吗?
如果是这样-我可以举一个示例或指向API的指针吗?
谢谢。
答案 0 :(得分:1)
似乎我们可以使用MongoDB 4.0做到这一点: https://docs.mongodb.com/master/core/transactions/?_ga=2.98680029.215960757.1535643945-1204416970.1535643943
MongoDB提供了对副本集执行多文档事务的功能。多文档事务可用于多个操作,集合,数据库和文档。多文档交易提供了“全有或全无”的主张。提交事务时,将保存该事务中进行的所有数据更改。如果事务中的任何操作失败,则事务中止,并且在事务中进行的所有数据更改都将被丢弃,而不会变得可见。在提交事务之前,在事务外部看不到该事务中的任何写操作。
Java中的一些示例: https://spring.io/blog/2018/06/28/hands-on-mongodb-4-0-transactions-with-spring-data
似乎在Java中,您甚至可以像使用Hibernate一样将其设置为使用@Transactional批注来管理事务。 请注意,通常使用事务会带来额外的性能成本。
在大多数情况下,与单文档写入相比,多文档事务导致更高的性能成本,并且多文档事务的可用性不应替代有效的架构设计。
以我个人的观点,如果您需要大量依赖交易,我不会选择mongo。