首页 > 解决方案 > MongoDB 丰富的查询和隔离保证

问题描述

求朋友。我们可以使用 MongoDB 版本 4 编写包含丰富查询的 ACID 事务吗?

如果是这样 - 我可以有一个示例或指向 API 的指针吗?

提前致谢。

标签: mongodb

解决方案


看来我们可以用 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 中,您甚至可以使用 @Transactional 注释将其设置为管理事务,就像在 Hibernate 中一样。请注意,通常使用事务会带来额外的性能成本。

在大多数情况下,多文档事务比单个文档写入会产生更大的性能成本,并且多文档事务的可用性不应替代有效的模式设计。

就我个人而言,如果您需要大量依赖交易,我不会选择 mongo。


推荐阅读