时事通讯




Wiredtiger如何彻底改变MongoDB


与许多其他“下一代”数据库不同,MongoDB不是由现有数据库公司或大型云基础设施架构师创建的。相反,MongoDB的创始人首先是渴望为其他开发人员创建一个更高效的数据库系统的开发人员。

开发人员社区热情地回应了发展以中心的方法,而MongoDB迅速赢得了开发人员思维的战斗。MongoDB的初始版本易于部署和易于集成到现有和新兴的编程范例中。但是在引擎盖下,与替代方案相比,原来的MongoDB架构很简单。

软件架构的简单性基本上是一件好事。特别是,开发人员已经开始不信任和避免管理过于复杂和困难的Enterprise数据库。然而,数十年的软件工程进入这些企业数据库并不是没有价值的。在规模上,这些传统数据库能够执行一个挑战MongoDB早期版本的级别。

最初MongoDB架构的一个核心限制是一个相对简单的存储引擎。存储引擎充当数据库api(以表或文档的形式公开数据)和底层磁盘系统之间的接口。在MongoDB的第一个版本中,“MMAP”存储引擎允许在内存中使用操作系统“MMAP”调用访问包含MongoDB文档的文件。这种实现是健壮和可靠的,但有显著的性能限制。例如,MMAP不能提供文档级锁定,这意味着对集合的同步更新可能会造成性能瓶颈。

2014年,MongoDB发布了一个“可插拔”存储引擎API,允许新的存储引擎与MongoDB数据库集成。各种替代存储引擎出现了。Facebook提供了基于RocksDB的存储引擎,Perconna也发布了自己的TokuMX引擎。然而,在2014年底,MongoDB收购了WiredTiger,后者已经调整其存储引擎以适应MongoDB API。WiredTiger在2015年随MongoDB 3.0发布,并成为MongoDB 3.2的默认存储引擎。虽然MongoDB仍然可以使用其他存储引擎,但目前绝大多数MongoDB实现都使用WiredTiger。

Keith Bostic和Michael Cahill于2010年创立了WiredTiger。Keith和Michael是开源数据库的资深人士,他们是开源数据库BerkeleyDB的先驱,该数据库于2005年被Oracle收购。在Oracle工作一段时间后,他们创建了WiredTiger,以构建下一代无锁、键值数据库,可以作为存储引擎,用于MySQL等已建立的数据库系统和Riak等新兴分布式系统。当MongoDB宣布其存储引擎API时,WiredTiger团队立即发现了机会,并竞相提供最佳解决方案。剩下的,正如他们所说,都是历史了。

夸大了Wiredtiger技术在MongoDB上的影响很困难。在一年内,Wiredtiger成为MongoDB加密,压缩和内存存储引擎的基础。Wiredtiger的内部交易和快照管理设施,MongoDB 4.0中交易的出现是可能的。同样重要的是,Wiredtiger在MongoDB架构中删除了许多瓶颈,允许MongoDB在高端部署中成功,对MongoDB的持续增长越来越重要。

作为一个副作用,MongoDB公司的数据库专业知识的注入帮助平衡了以开发人员为中心和技术深度。可以说,MongoDB的成功是由于抛弃了几十年的关系数据库包袱。然而,通过WiredTiger, MongoDB集成了一个核心引擎,该引擎利用了数十年的数据库研究和开发。

Cahill现在管理MongoDB Labs-A全日制的研究小组,查看MongoDB技术的未来。我们将遵循MongoDB实验室的冒险,非常兴趣。