阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

MongoDB 4.0 有望支持跨文档事务

  • 2018-02-23
  • 本文字数:1023 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

自 MongoDB 并购了 WiredTiger 及其关系数据库存储引擎以来,很多技术专家一直翘首以待 MongoDB 何时提供对跨文档事务(multi-document transaction)的支持。MongoDB 在本周宣布,跨文档事务有望于今年夏天加入到 MongoDB 4.0 中。

MongoDB 的 Grigori Melnik 宣称,“80% 到 90% 的应用是完全不需要跨文档事务的”。然而他的说法有待商榷,在层次数据库中很有可能存在大量的反规范化(denormalized)数据,此类数据需要支持多地同时更新以确保一致性。Melnik 继续指出:

此外,一些开发人员和数据库管理员受限于业已存在 40 多年的关系数据建模,总是误以为多表或多文档事务是所有数据库的要求,无论实际需要构建何种数据模型。其他一些人则担心,虽然他们的应用当前不需要跨文档事务,但将来可能会需要,他们不希望过度扩展他们的数据库。

跨文档事务是 ACID 的基石。MongoDB 自 3.0 版起,开始支持跨文档事务。在 3.0 版中,MongoDB 具备了多版本并发控制(MVCC)技术,该技术是一种快照隔离技术,通常是由PostgreSQL 和Oracle 等关系数据库提供。最新版本的SQL Server 也使用MVCC 实现其“内存优化”表。

MongoDB 3.2 增加了对“读取关注”(Read Concern) 的支持。在3.2 版之前,客户只有知道进行通信的节点时,才会接收数据。读取关注功能允许客户请求为大多数节点所知的数据。需要注意的是,根据文档介绍,“无论读取的关注级别,节点上的最新数据可能并未反映系统中数据的最新版本。”

MongoDB 之后在 3.6 版中提供了其所宣称的“因果一致性”。在以前的MongoDB 版本中,并不能保证操作是按指定顺序进行的。例如,当删除一组记录后再执行一次读取操作时,可能会返回刚被删除的记录。使用因果一致性,用户可以指明读取操作取决于写操作的结果,确保了在执行读取操作之前先完成删除操作。

最后一点,MongoDB 4.0 将提供执行一致性读取的能力。也就是说,MongoDB 只返回数据库在读取操作开始时已知的数据。正如在InfoQ 文章“[事务隔离级别和脏读的快速入门] http://www.infoq.com/cn/articles/Isolation-Levels )”中所介绍的,以前版本的 MongoDB 返回的结果可能和任何时间点都不一致。它甚至可能跳过一些文档,或是在一次查询中返回同一文档的多个版本。

希望想要试用跨文档事务的开发人员,积极加入到 MongoDB 4.0 beta 计划中。

查看英文原文: MongoDB 4.0 to Include Multi-Document Transactions

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-02-23 18:002678
用户头像

发布了 391 篇内容, 共 127.0 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

探索TiDB Lightning源码来解决发现的bug

TiDB 社区干货传送门

TiDB 底层架构

TiSpark On Kubernetes实践

TiDB 社区干货传送门

实践案例

一言难尽的Prometheus监控实践

TiDB 社区干货传送门

实践案例

TiDB 悲观事务模式和Mysql的表象区别

TiDB 社区干货传送门

TiDB监控Prometheus磁盘内存问题

TiDB 社区干货传送门

故障排查/诊断

TiSpark数据写入过程解析(源码解析)

TiDB 社区干货传送门

TiDB 底层架构

骏彩竞猜分布式解决方案之路

TiDB 社区干货传送门

安装 & 部署

TiDB体系结构

TiDB 社区干货传送门

TiDB 底层架构

在CentOS7上进行TiDB/PD/TIKV编译分享

TiDB 社区干货传送门

实践案例 安装 & 部署

TiDB在个推的落地实践 | 解决热点难题,提升性能超千倍

TiDB 社区干货传送门

性能调优

记一次简单的Oracle离线数据迁移至TiDB过程

TiDB 社区干货传送门

TiDB Binlog 支持 Oracle 目标库功能用户手册

TiDB 社区干货传送门

迁移

ticdc没报错,tso却不变的奇怪现象

TiDB 社区干货传送门

JOIN 查询的执行计划 比较

TiDB 社区干货传送门

性能调优 TiDB 底层架构

TiDB 在 Cisco Webex 架构中的部署和应用

TiDB 社区干货传送门

传统行业数据架构发展变化

TiDB 社区干货传送门

数据库架构选型

dm-V1.0.5使用汇总

TiDB 社区干货传送门

管理与运维

使用SPM固定执行计划

TiDB 社区干货传送门

高并发请求下 TiDB 集群的业务无损升级

TiDB 社区干货传送门

DR Auto-Sync 搭建和计划内切换操作手册

TiDB 社区干货传送门

TiCDC 4.0.15 初体验

TiDB 社区干货传送门

实践案例

大事务的处理方式对比

TiDB 社区干货传送门

实践案例

TiDB 元信息管理方式

TiDB 社区干货传送门

TiDB 底层架构

前缀索引在特殊场景下的优化尝试

TiDB 社区干货传送门

实践案例 TiDB 底层架构

使用 TiUP 安装部署 TiDB 集群实验流程

TiDB 社区干货传送门

版本升级 集群管理 管理与运维 安装 & 部署 扩/缩容

【考试指南】TiDB 5.0认证指南之PCTA PCTP

TiDB 社区干货传送门

TiDB 底层架构

TiDB BR 备份至 MinIO S3 实战

TiDB 社区干货传送门

管理与运维

TiDB 运维基础操作脑图

TiDB 社区干货传送门

TiDB 如何获取集群创建时间

TiDB 社区干货传送门

实践案例 TiDB 底层架构

TiDB 如何在 LVS FULL NAT 模式下显示客户端真实 IP

TiDB 社区干货传送门

实践案例

记一次TiDB的临时救场

TiDB 社区干货传送门

实践案例

MongoDB 4.0有望支持跨文档事务_架构_Jonathan Allen_InfoQ精选文章