MongoDB丰富的查询和隔离保证

问题描述 投票:-1回答:1

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

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

提前致谢。

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

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

在我个人的观点中,如果你需要很多地依赖交易,我不会选择mongo。

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