写点什么

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

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

关注

评论

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

直播预告!生鲜与零售商品识别系统产业实践与部署详解

飞桨PaddlePaddle

人工智能 百度飞桨 硬件生态

OLAP数据库引擎怎么选?这本白皮书详解

Geek_2d6073

6 个用于 3D 网页图形渲染的最佳 WebGL 库

3D建模设计

图形引擎

WebGPT VS WebGPU

3D建模设计

webgpu webgpt

WebVR — 网络虚拟现实

3D建模设计

WebVR

3D 碰撞检测

3D建模设计

3D 碰撞检测

DR5018M|IPQ5018 11AC SOM WIFI6 Pioneering the Future of Wireless Innovation

wallyslilly

wifi6 ipq5018

Data Rescue Pro for Mac(磁盘数据恢复工具) v6.0.8中文版

mac

数据恢复软件 苹果mac Windows软件 Data Rescue

华为云软件精英实战营——感受软件改变世界,享受Coding乐趣

华为云PaaS服务小智

软件开发 华为云 大赛

com.google.guava:guava 组件安全漏洞及健康分析

墨菲安全

组件 组件健康度

九科信息成功签约东风汽车财务有限公司RPA项目

九科Ninetech

PHP/MySQL开发环境 MAMP Pro for Mac激活安装

胖墩儿不胖y

Mac软件

TDD、BDD、ATDD都是什么、有什么区别?(上)

禅道项目管理

低代码开发平台如何提升企业应用构建效率

力软低代码开发平台

WebGL:基于web的交互式2D/3D图形引擎

3D建模设计

JavaScript WebGL

MegEngine 使用小技巧:Profiler使用手册

MegEngineBot

开源 性能优化

朝夕光年游戏自动化测试实践

字节跳动技术范儿

测试 自动化测试 游戏测试

低代码/无代码平台:加速应用开发的工具

高端章鱼哥

低代码 快速开发 无代码 JNPF

关于信创技术你需要了解这些概念

Onegun

操作系统 中间件 信创产业 信创生态

低代码是什么?能做什么?

树上有只程序猿

低代码 应用开发

智能汽车驾驶演进:虚拟ECU种类与优劣分析

DevOps和数字孪生

虚拟ECU 汽车行业

软件测试/测试开发丨Python 学习笔记 之 链表

测试人

Python 程序员 软件测试 自动化测试 测试开发

GitHub Copilot三连更:能在代码行里直接提问,上下文范围扩展到终端

Openlab_cosmoplat

人工智能

AI技术图像编辑 Luminar Neo for Mac激活中文

mac大玩家j

图像编辑 Mac软件 编辑图像 图像处理工具

面试了38位Java候选人之后,我总结出了他们关于面试中的16条通病

程序员小毕

Java 程序员 面试 简历 八股文

HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航

HarmonyOS开发者

HarmonyOS

Premiere Pro 2023 for Mac(pr2023视频编辑软件)v23.6中文激活版

mac

pr2023 苹果mac Windows软件 视频编辑软件 Premiere Pro

软件测试/测试开发丨UI自动化测试用例结构分析

测试人

Python 程序员 软件测试 自动化测试 测试开发

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