OrioleDB 构建现代云原生存储引擎开源项目

我要开发同款
白开水不加糖2023年07月19日
33阅读
开发技术C/C++
所属分类数据库相关、数据库服务器
授权协议PostgreSQL License

作品详情

OrioleDB是PostgreSQL的全新存储引擎,为该数据库平台带来了现代化的数据库容量、功能和性能。目前正处于公测状态。建议用于实验、测试、基准测试等,但不建议用于生产用途。

OrioleDB包含一个扩展,它构建在创新的表访问方法框架和其他标准Postgres扩展接口的基础上。通过扩展和增强当前的表访问方法,OrioleDB为未来更强大的存储模型打开了大门,这些模型针对云和现代硬件架构进行了优化。

OrioleDB目前在标准PostgreSQL许可证下分发。

专为现代硬件而设计。OrioleDB设计避免了包含数十个和数百个CPU核心的现代服务器上的遗留CPU瓶颈,从而优化了现代存储技术(例如SSD和NVRAM)的使用。

减少维护需求。OrioleDB实现了撤消日志和页面合并的概念,消除了对专用垃圾收集过程的需要。此外,OrioleDB实现了默认的64位事务标识符,从而消除了众所周知且令人痛苦的环绕问题。

设计为分布式。OrioleDB实现了行级预写日志并支持并行应用。该日志架构针对基于raft共识的复制进行了优化,允许实现主动-主动多主控。

OrioleDB的关键技术差异如下:

没有缓冲区映射和无锁页面读取。OrioleDB中的内存页面通过直接链接连接到存储页面。这消除了缓冲区内映射及其相关瓶颈的需要。此外,在OrioleDB中,内存页面读取不涉及原子操作。这些设计决策共同将Postgres的垂直可扩展性提升到了一个全新的水平。

MVCC基于UNDO日志概念。在OrioleDB中,旧版本的元组不会导致主存储系统膨胀,而是被逐出到包含撤消链的撤消日志中。页级撤消记录使系统能够轻松地尽快回收已删除元组占用的空间。这些机制与页面合并一起消除了大多数情况下的膨胀。也不需要对表进行专门的VACUUMing,从而消除了系统性能恶化和数据库中断的重要且常见的原因。

写时复制检查点和行级WAL。OrioleDB利用写时复制检查点,它每时每刻都提供结构一致的数据快照。这对于现代SSD很友好,并允许行级WAL日志记录。反过来,行级WAL日志记录很容易并行化(已完成)、紧凑且适合主动-主动多主机(计划中)。

更多详情可参阅用法、架构、项目结构文档以及 PostgresBuild2021幻灯片。要开始开发,可参阅 OrioleDB开发快速入门。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论