一个重磅消息,MongoDB支持ACID事务了。这也是社区里一直呼吁的事情,这一目标终于要实现了。这里的ACID事务是针对多文档间的事务,multi-document。过去的好多NoSQL数据库都只是支持聚合内事务,如今MongoDB终于要支持跨聚合事务了。
不过现在只是beta版,正式的事务版本(version 4.0)将会在今年夏天推出。
你如果等不及,可以暂时先用beta版去体验。
MongoDB的核心就是一个文档数据库,在默认情况下,这些类型的数据库一般都不是ACID标准的,特别是涉及到多文档事务(在文档级别,MongoDB已经支持ACID事务,也就是前面说的聚合内事务)。而且大多数情况下,对于使用MongoDB等NoSQL数据库系统的公司而言,这并不是什么大问题,因为他们不会同时写入多个文档。
许多公司使用MongoDB的同时也在并行使用关系数据库。
在NoSQL的圈内,大家有一个共识就是不支持跨聚合事务,你可以去查阅一些NoSQL的书籍,例如《NoSQL Distilled》有较详细的论述。但在事实上的一些具体场景中,开发者们希望支持跨文档(聚合)事务。
这也正是MongoDB想要支持跨文档事务的原因。
但MongoDB官方也并不认为开发者们会默认开启这个功能,人们只有在非常具体的案例下才会启动这个功能。MongoDB的CTO也不认为跨文档事务是写入MongoDB的常用方式。
而且为了实现这个跨文档事务,MongoDB公司内部大动干戈,在过去的三年里,团队内部实际把数据库系统的每个组件都涉及到了。
不多说,如果你想提前体验一把跨文档事务,可以去https://www.mongodb.com/transactions此处进一步了解。
本文中涉及到的"跨聚合事务"是NoSQL通用叫法,具体到MongoDB就是指跨文档事务(mulit-document)