2 月 16 日,大年初一,MongoDB 联合创始人以及 CTO Eliot Horowitz 在其官方博客上宣布 MongoDB 即将在 4.0 版本中支持跨文档事务,也就是说,MongoDB 即将成为唯一一款同时具备速度、灵活性和支持 ACID 事务特性的文档数据库。
MongoDB 的事务机制通过快照隔离提供了全局的数据一致性视图,并强制执行所有操作或不执行任何操作来实现数据完整性。
MongoDB 的事务与开发者所熟悉的关系型数据库的事务类似,它们具有相似的语法,比如完成一个事务需要多个语句(如 start_transaction 和 commit_transaction),这样给开发者带来的开发体验与之前是相似的。
MongoDB 加入跨文档事务支持并不会对不需要事务的操作造成任何性能上的影响。MongoDB 4.0 将于今年夏天发布,支持跨单个副本集的事务,而 MongoDB 4.2 将支持跨整个集群的事务。
文档模型将原先在关系型数据库中需要通过父子表来表示的相关数据组合在同一篇文档中,MongoDB 的单文档原子操作已经为大部分应用提供了事务语义。
而跨文档事务为开发者提供了更多的选择,他们因此可以更容易地解决更多问题,省掉了很多麻烦。开发人员完全可以信赖 MongoDB 4.0 的事务机制,从而更自由地进行数据建模。
即将到来的事务特性经过了多年的开发,最早是从 3 年前集成 WiredTiger 存储引擎开始的。这几年,MongoDB 几乎对服务器的每个部分都进行了深入改造,从存储层到副本共识协议,再到分片架构。
现在它已经可以提供良好的一致性和持久性保证,并引入了全局逻辑锁,重构了集群元数据管理机制等等。同时,MongoDB 还将这些增强特性通过 API 的方式暴露出来,客户端驱动器也可以使用这些 API。目前官方已经完成了 85% 与事务特性相关的工作,具体如下图所示:
要想深入了解跨文档事务特性,可以参考 [链接 1]。如果读者已经迫不及待要体验事务特性,可以加入我们的 beta 计划,更多细节可参官方文档(链接 2)。
具体链接如下:
链接 1:https://www.mongodb.com/blog/post/multi-document-transactions
链接 2:https://www.mongodb.com/transactions/。
新闻源:https://www.mongodb.com/blog/post/multi-document-transactions
针对运维从业者,这里编辑强烈推荐极客时间 App 上赵成老师带来的运维体系管理专栏。
赵成说他踏上运维之路有很大的偶然性,第一,不忍心看着自己跟团队开发出来的系统到了线上总是出问题,所以每当有问题时,他总是第一个冲在前面解决问题,久而久之,便积累了丰富的经验,也成为团队中比较重要的角色;第二,也是更重要的一个因素,他说自己非常享受那种攻克难题之后的成就感。他的专栏里将会介绍他所遇到过的挑战,他的尝试、实践经验和感悟体会,以及他十年来对运维产生的不一样的思考。欢迎点击阅读原文链接学习。
新人注册即送 30 元优惠券!