写点什么

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

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

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

关注

评论

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

火山引擎AB测试:广告实验深度打通巨量引擎,高效测试广告素材

字节跳动数据平台

大数据 A/B测试 对比试验 企业号 7 月 PK 榜 数字化增长

工赋开发者社区 | 面向CPS的制造执行系统(MES)实验平台验证

工赋开发者社区

工赋开发者社区 | 复杂电子装备制造数字化工厂实现逻辑与实施步骤

工赋开发者社区

探索Linux命名空间和控制组:实现资源隔离与管理的双重利器

柠檬汁Code(binbin0325)

Linux 容器 namespace 底层原理 Cgroups

如何为Spring和Mybatis增加可逆计算支持

canonical

Spring Boot mybatis 低代码 可逆计算 Nop平台

在 Go 语言单元测试中如何解决 MySQL 存储依赖问题

江湖十年

golang Web 后端 单元测试 测试 单元测试

未来前端框架将持续推进组件化开发

没有用户名丶

面试官:说出 Java 中的 7 种重试机制

java易二三

编程 程序员 面试 计算机

特性快闪:使用 Databend 玩转 Iceberg

Databend

这次是运行在 Intel AIxBoard™ 开发板上的 TDengine 预测“未来”

爱倒腾的程序员

2023 云原生编程挑战赛火热报名中!导师解析 Serverless 冷启动赛题

阿里巴巴云原生

阿里云 Serverless 云原生

企业号 8 月 PK 榜,火热开启!

InfoQ写作社区官方

热门活动 企业号 8 月 PK 榜

直播平台源码开发,信息收发功能搭建

山东布谷科技

软件开发 直播 源码搭建 消息发送 直播平台源码

解析游戏陪练app源码的开发与意义

山东布谷网络科技

游戏 开源代码 APP软件开发

Android 架构模式如何选择

vivo互联网技术

mvc Compose MVVM 解耦 MVI

【华秋干货铺】一文轻松搞定PCB叠层和阻抗设计

华秋电子

RLHF 技术:如何能更有效?又有何局限性?

Baihai IDP

人工智能 强化学习 白海科技 RLHF 大语言模型

TypeScript 玩转类型操作之字符串处理能力

小乌龟快跑

typescript 面试 前端

飞桨AI Studio可以玩多模态了?MiniGPT4实战演练!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

细数不懂Spring底层原理带来的伤与痛

java易二三

spring 程序员 Spring Boot 计算机 底层原理

零信任体系化能力建设(1):身份可信与访问管理

权说安全

分享一些常用的开源博客社区网站

兮动人

博客 开源社区

7月征文活动结果出炉,快来看看有没有你

InfoQ写作社区官方

热门活动 年中技术盘点

Spring AOP 中的代理对象是怎么创建出来的?

江南一点雨

Java spring

【实践篇】最全的【DDD领域建模】小白学习手册(文末附资料) | 京东云技术团队

京东科技开发者

架构 DDD 领域建模 企业号 7 月 PK 榜

竞速榜实时离线对数方案演进介绍 | 京东云技术团队

京东科技开发者

实时数据 企业号 7 月 PK 榜 竞速榜 离线数据

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