速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

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

关注

评论

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

SAST-静态应用安全测试

华为云PaaS服务小智

以数据赋能AI量产落地,澳鹏团队在浦东AI智能创新应用大赛斩获佳绩

澳鹏Appen

人工智能 数据标注

模块七--王者荣耀商城异地多活架构设计

闲人Eric

架构实战营

简述JavaScript异步函数 async/await

devpoint

JavaScript Async await es7

别忘记我:通过局部-全局内容建模进行文本擦除方法

合合技术团队

图像识别 图像处理 文本 图像擦除

火出圈的《中国奇谭》,如果浪浪山的小妖怪们也用WorkPlus

WorkPlus

KaiwuDB 首席解决方案专家 金宁:1.0 时序数据库核心功能解读

KaiwuDB

时序数据库 海量数据高吞吐 复杂查询

【表面缺陷检测】表面缺陷检测数据集汇总

机器不学习我学习

软件测试/测试开发 | 接口自动化测试如何搞定 json 响应断言?

测试人

json 软件测试 自动化测试 接口测试 测试开发

华为云发布CodeArts Check代码检查服务,守护软件质量和安全

IT科技苏辞

华为云GaussDB(for MySQL)通过中国信通院“可信数据库”评测

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

华为云开发者联盟

云计算 云原生 华为云 Volcano 企业号 1 月 PK 榜

光神经网络ONN:直接对光信号进行神经网络处理

Zilliz

软件测试/测试开发 | 接口测试中如何使用Json 来进行数据交互 ?

测试人

json 软件测试 自动化测试 接口测试 测试开发

华为云服务治理 | 服务治理的一般性原则

与时俱进的时代

中冶赛迪*IoTDB | 多项目全流程以IoTDB为时序数据处理方案,预计写入查询效率提升一倍

Apache IoTDB

国产时序数据库

HummerRisk V0.9.0:增加RBAC 拓扑图,云检测、漏洞、主机等模块增加规则

HummerCloud

开源 云原生安全

2022年度 FinClip 扩展SDK推荐!

FN0

小程序 sdk SDK 教程

爆竹声响又是一年春节到 归心似箭阖家团圆享美食

Geek_2d6073

阅文加入 OpenCloudOS 操作系统社区,作为成员单位参与社区共建

OpenCloudOS

Linux

软件测试/测试开发 | 接口自动化测试中,如何做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发

ING国际银行基于Volcano的大数据分析平台应用实践

华为云开发者联盟

云计算 云原生 后端 华为云 企业号 1 月 PK 榜

DTSE Tech Talk 第18期丨统计信息大揭秘,数仓SQL执行优化之密钥

华为云开发者联盟

数据库 sql 后端 华为云 企业号 1 月 PK 榜

2022年15款实用有趣的小程序推荐

FN0

小程序 小程序商城 小程序模版

软件测试/测试开发 | 接口自动化测试中如何对xml 格式做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发 接口自动化

技术人职场系列-务虚与务实

CatTalk

技术人生 职场发展

华为云云原生数据库:A Philosophy about “less”

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

荣誉+1,OpenMLDB 荣获 InfoQ 2022 年度杰出开源运营团队

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

华为云代码检查插件(CloudIDE版本)使用指南

与时俱进的时代

华为云服务治理 | 微服务常见故障模式

IT科技苏辞

一个专科生的 2022 年终总结——默默努力,成为更好的自己

程序人生 年终总结 成长感悟 自学之路

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