mongodb - MongoDB 丰富的查询和隔离保证
问题描述
求朋友。我们可以使用 MongoDB 版本 4 编写包含丰富查询的 ACID 事务吗?
如果是这样 - 我可以有一个示例或指向 API 的指针吗?
提前致谢。
解决方案
看来我们可以用 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。
推荐阅读
- c# - 尝试使用 Tpm2Lib 创建主键时出现 BadAuth 响应
- android - 如何使用 DateTimeFormatter 转换为字符串
- javascript - 如何将焦点设置在 Vuejs 2 中 v-for 内呈现的 textarea 上?
- gerrit - 如何限制对自定义 gerrit 插件的访问
- apache-spark - 如何修复“BlockManagerMasterEndpoint - 没有更多副本可用于 rdd”问题?
- clips - 对一组事实 CLIPS 进行排序
- java - 为什么将信息从 Java 代码更新到 SQL 数据库时会出现错误?
- excel-formula - 索引 Minif excel
- ruby-on-rails - Rails 深度嵌套连接
- informatica-powercenter - 如何不考虑 Informatica Source 中的列数据中存在的行分隔符