Dolt的新存储引擎

1,471 阅读2分钟

开始我们使用的存储引擎:NomsNoms 是Aaron Boodman和Attic Labs的作品,它引入了 Prolly Trees ,这是一种全新的搜索索引结构,支持 diff/merge/sync 操作。后来 Noms 的开发停止了,但它的贡献在开源社区中继续存在。ReplicacheDolt 都使用基于 Prolly Tree 的存储引擎。

DoltHub成立于2018年,愿景是创建一个开放的数据共享和协作平台。我们希望创建 Git-for-Data,我们建立了Dolt作为我们的协作工具。

从一开始,Dolt就建立在Noms上。这就是为什么Dolt是唯一一个可以支持 branch/diff/merge/push/pull 的数据库。随着DoltHub的发展,我们的重点已经从数据共享转移到成为一个生产数据库。

本周我们推出了Hosted Dolt,这是第一次提供Dolt的云服务。随着我们目标的改变,性能已经成为开发的一个主要焦点。优化我们的存储引擎的索引访问对于提高Dolt的效率特别重要,我们在追赶MySQL的基准方面取得了重大进展。

逐步优化Noms在效率上有了很大的提高,但我们已经达到了一个收益递减的点。一个主要障碍是需要保持与Noms二进制序列化格式的兼容性。改变这种格式对Dolt的客户来说是一个重大的突破性变化,需要进行数据库迁移,但我们相信这是最好的发展道路。

而在今天我们宣布Dolt新的存储引擎的alpha版本!

专用存储引擎

存储引擎是数据库的核心。它们负责为数据建立索引,管理事务并发以及隔离,并提供持久化保证。它们通常与数据库之间的一个关键区别:存储层的设计决定会影响整个系统的功能和性能特征。

Noms 被描述为一个 "去中心化的数据库",一个用 Prolly Trees 索引的可同步的点对点数据存储。Noms的数据格式是无关系模型,有点像NoSQL数据库。总的来说,Noms存储层的设计是为了获得最大的灵活性,其数据模型反映在其二进制格式中。然而,这种灵活性确实是有代价的,在 Dolt 这样的关系型数据库的背景下,基本没有必要。


TODO!!!

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情