QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:002865
用户头像

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

关注

评论

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

使用PyTorch构建神经网络模型进行手写识别

Shirakawa

神经网络 机器学习 深度学习 PyTorch 手写识别

贝壳找房基于StarRocks构建全新统一的极速OLAP平台实践

StarRocks

数据库 数据分析 OLAP StarRocks

架构实战营毕业设计

Saber

架构实战营

外包三年给整废了,备战两月终拿到4家大厂offer,阿里P6+这回稳了

Java架构师迁哥

hbase运维故障案例分析

GrowingIO技术专栏

大数据 运维 HBase

FastApi-06-请求体-3

Python研究所

FastApi 8月日更

从关门“振动”说起,在这部剧本杀综艺里,爱奇艺隐藏了多少技术“小心机”

爱奇艺技术产品团队

综艺节目 互动视频技术 爱奇艺

架构实战营模块四作业

maybe

双证在手,运维无忧!明道云通过两项国家级质量认证

明道云

区块链技术改进身份和访问管理(IAM)的10种用例

CECBC

阿里顶级大佬整理出十六个专题的Java面试指南,金九银十不用愁!

Java 编程 架构 面试 架构师

专访融云 CTO 任杰:构建通信云全能力

融云 RongCloud

Java操作Office:POI之word生成

程序员架构进阶

Java Apache POI 技术应用 8月日更 代码实战

101道经典JavaScript面试题总结(附答案,建议收藏)

前端依依

面试 大前端 JavaScrip

基于 HLS 创建 Golang 视频流服务器

声网

音视频 HLS

摘下手机赛场的夏季“金牌”,荣耀的“飞人之路”

脑极体

现有市值管理机器人|交Y机器人系统源码搭建

Geek_23f0c3

做市机器人 去中心化市值管理机器人

中台的前世今生

涛哥 数字产品和业务架构

企业架构 中台架构 中台的由来

PostgreSQL正强势回归!

数据库 大数据 时序数据库 tsdb 数据智能

getInteger还是getIntValue,这是一个问题

FunTester

Java json Groovy

Black Hat 2021上的七大网络威胁趋势

百度开发者中心

最佳实践 方法论

一个算法“拿下”两个榜单!爱奇艺ICCV 2021论文提出人手三维重建新方法

爱奇艺技术产品团队

vr 论文 ICCV2021 高精度三维重建

人在年轻的时候,最核心的能力是什么?

非著名程序员

认知提升 个人提升 提升自我 8月日更

如何洞察出推荐的关键时刻

石云升

推荐 用户体验 体验设计 8月日更

强推!华为内部都在用的783页大数据处理系统:Hadoop源代码pdf

Java 编程 架构 面试 架构师

这是一次鸡肋的代码审计

网络安全学海

网络安全 信息安全 计算机 渗透测试 安全漏洞

MQTT-消息传输协议

一个大红包

8月日更

明道实施与需求的耦合

明道云

云原生时代,腾讯如何做好容器安全体系建设?

腾讯安全云鼎实验室

腾讯云 容器

趁着课余时间学点Python(五)用课余时间提升自己关于高级数据类型的知识

ベ布小禅

8月日更

使用 MVC 架构构建 Flask CRUD 应用程序

吴脑的键客

Python flask

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