在开源数据库领域,PostgreSQL的地位正变得愈发稳固。它以其强大的扩展性、标准兼容性和活跃的社区生态,成为无数初创企业和大型公司的首选。然而,正如任何拥有数十年历史的系统所面临的那样,PostgreSQL在底层存储引擎上也有其固有的痛点。正是看到了这些痛点,一家快速崛起的基础设施公司正在采取行动,那就是Supabase。作为Y Combinator 2020年冬季营的毕业生,Supabase构建了强大的开源Firebase替代品,如今它正在为其核心数据库技术 - - OrioleDB项目寻找顶尖人才,这一举动引发了业界的广泛关注。 Supabase的核心理念是让开发者能够快速构建应用,而无需在基础设施上花费过多精力。
它基于PostgreSQL构建,提供身份验证、实时订阅、存储和自动生成的API,这些功能开箱即用。与Firebase相比,Supabase的最大优势在于它并没有创建一个孤立的生态,而是站在PostgreSQL这个巨人肩膀上。这意味着开发者可以享受传统关系数据库所有的优势和灵活性,同时还能获得现代后端即服务(BaaS)带来的便捷。但正是这种对PostgreSQL深度依赖的定位,也迫使Supabase团队必须直面其底层引擎的局限,并思考如何让其适应未来更高负载、更低延迟的应用需求。 PostgreSQL的架构允许开发人员从多个存储引擎中进行选择,而OrioleDB正是这些新选择中最具前瞻性的一个。要理解OrioleDB的重要性,我们首先需要明白当前PostgreSQL默认存储引擎(堆存储)的困境。
在传统实现中,当更新一行数据时,PostgreSQL并不会直接覆盖原数据,而是插入一个新版本的行,这就是所谓的多版本并发控制(MVCC)。虽然这为并发控制提供了灵活性,但也导致了表膨胀(bloat)问题。随着时间的推移,那些旧版本的行会变成"死元组",占据磁盘空间。为了清理这些冗余数据,通常需要运行VACUUM操作,这个过程非常耗时,并且在生产环境中需要谨慎地调度,以免影响性能。这不仅增加了存储成本,也给数据库管理员带来了沉重的运维负担。 OrioleDB正是针对这些问题而设计的下一代存储引擎。
它的目标是从根本上减少膨胀,并消除或减轻对VACUUM的依赖。与传统的堆存储不同,OrioleDB采用了一种基于行级写时复制(copy-on-write)和非易失性存储感知的架构。它不再使用单一的顺序堆表结构,而是将数据存储在更精细的页面结构中,并通过撤销日志(undo log)来跟踪更改。当一个事务更新一行时,它不再生成整行的多个副本,而是只记录变更前和变更后的值。这种方式大大减少了写入放大,提高了空间利用率,并且使得清理过期的旧版本数据变得更加高效。更重要的是,OrioleDB使用了一种无VACUUM的清理机制,它能够主动、自动地回收废弃的空间,从而让表始终保持紧凑,性能更加稳定。
对于Supabase这样的服务商来说,采用或开发OrioleDB不仅仅是一个性能优化的问题,更是一个战略选择。Supabase的客户经常在无服务器架构(serverless)和并发请求极高的场景下运行应用。这些应用对数据库的扩展性提出了严苛的要求。传统的PostgreSQL在写密集或热点更新的情况下,会迅速出现膨胀和锁竞争,导致查询延迟飙升。OrioleDB通过其创新的架构,能够显著提高写入吞吐量,并降低长风事务(long-running transactions)对系统的影响。这意味着Supabase可以在不牺牲一致性和数据持久性的前提下,为更多用户提供更平滑、可预测的数据库体验。
那么,OrioleDB具体是如何实现这些强大能力的呢?技术层面来看,它引入了几个关键的数据结构和算法。首先是前面提到的撤销日志。在传统数据库中,实现事务回滚往往需要保留整个旧版本的元组,而OrioleDB则通过撤销日志来记录原始值的位置。这极大地减少了存储占用。其次,OrioleDB采用了有序的存储布局(row-store),并利用一种称为"行级锁"的机制来减少锁争用。与表级锁或页面级锁相比,行级锁使得不同事务可以并发修改同一张表中的不同行,而不会互相阻塞。
另一个关键创新是它利用持久化内存(persistent memory, PMem)和固态硬盘(NVMe)的特性,优化了日志的写入路径。传统的WAL(预写式日志)机制强制要求每个事务提交时都要将日志刷入磁盘,而OrioleDB通过B树结构的管理,能够更有效地合并多个事务的小写入,从而大幅减少磁盘同步次数。 从工程角度来看,开发OrioleDB这样的项目需要极其扎实的计算机科学基础和丰富的系统编程经验。这不仅仅是编写一个扩展那么简单,而是要对PostgreSQL的内部机制、事务管理器、缓冲池、以及操作系统层面的文件I/O有深入的理解。因此,Supabase在招聘这一岗位时,毫无疑问地要求候选人具备C语言或Rust语言的深度专业知识,熟悉内存管理,理解并发编程中的锁与原子操作,并且对数据库理论有透彻的掌握。但除了硬核的编程技能之外,文化契合度同样重要。
Supabase是一家高度开放、透明且以社区为导向的公司。开源是它的根基,也是其吸引顶尖人才的核心优势之一。被录用者所写的每一行代码,都会运行在成千上万个Production数据库实例上,这对任何工程师来说都是一个巨大的责任和荣耀。 对于开发者社区而言,OrioleDB的成熟将极大地改变PostgreSQL的形象。很长一段时间里,一些开发者在需要处理高性能写入场景时,往往不得不转向像MySQL的InnoDB,或者使用一些分布式数据库分片方案。虽然这些方案各有优势,但它们往往牺牲了PostgreSQL丰富的SQL功能和可扩展性。
OrioleDB有望让PostgreSQL在同等硬件条件下,达到甚至超越这些竞争引擎在写入密集场景下的表现,同时保留开发者熟悉的所有高级特性。例如,在例如记录实时点击流、IoT设备采集的数据、或实现无服务器电商购物车等场景中,数据库端经常需要处理大量的"upsert"(更新或插入)操作。OrioleDB通过其低写放大和高速恢复的特性,能够在这些工作负载下提供极其优异的性能。 为什么Supabase愿意投入如此多的精力和资金来研发OrioleDB?这是因为在云原生的时代,数据库的存储层是决定整个技术运维成本和应用程序响应速度的关键因素。如果Supabase能够将OrioleDB整合为托管服务的一部分,他们将拥有一个极具竞争力的技术壁垒。其他云服务商可能会提供相同的PostgreSQL引擎,但他们受限于上游代码,难以做出根本性的改进。
而Supabase通过掌控底层的存储引擎,可以针对特定的工作负载进行深度定制,提供诸如"热备份"、"分层存储"或"时间旅行"等功能。这意味着他们能够比对手更快地响应客户需求,并推出差异化的产品。 当然,与任何雄心勃勃的技术变革一样,在PostgreSQL中引入新的存储引擎也面临着挑战。其中最主要的是稳定性和兼容性的平衡。PostgreSQL拥有一个庞大的生态,包括无数扩展、第三方工具和文档。OrioleDB必须确保能够无缝支持这些生态,否则会阻碍用户的迁移。
此外,新的存储引擎在初期可能会缺乏长期运行所必需的战斗测试。幸好Supabase是一家以工程文化著称的公司,他们喜欢快速迭代并接受来自社区的代码审查。随着越来越多敢于尝试新事物的开发者加入测试,OrioleDB正在迅速成熟。在2023年的官方状态报告中,已经可以看到OrioleDB支持了更多的功能,比如事务隔离级别、滚动更新的恢复等,并显著提升了在OLTP(联机事务处理)场景下的稳定性。 假如你是一位具有创新精神且对数据库底层技术充满好奇的工程师,加入Supabase的OrioleDB团队将意味着什么呢?首先,你将有机会深入参与一个决定未来数十年数据存储方向的项目。这比单纯的业务开发或Web服务开发更具挑战性和吸引力。
其次,你会与世界上一些最优秀的数据库工程师一起工作。Supabase团队经常远程协作,文化开放,他们乐于分享。你会持续地学习、研究最新的论文并付诸实践。第三,随着OrioleDB逐步被更广泛的社区接纳和使用,你在这个项目中的工作会留下深刻的烙印。每一个Perf优化,每一个bug修复,都会化为开源历史中的一部分,帮助无数开发者从膨胀和锁等待的困境中解脱出来。 对于公司而言,这笔投资是明智的。
当市场同时存在低技术门槛的数据库服务(如Firebase)和高性能的自主数据库(如Aurora)时,开发者越来越渴望能有一个折中的方案 - - 既可以像使用Firebase那样简单,又能使用PostgreSQL的全部功能,同时在性能上不输给商业数据库。Supabase正是看到了这一空白,并通过对OrioleDB的研发来填补它。这个职位很可能会被标记为"高级数据库工程师"或"数据库内核开发者",但实际的职责范围可能更加广泛,从剖析性能瓶颈到设计新的索引结构,再到调试棘手的并发问题。 在即将结束这篇长文时,我们不妨审视一下未来数据库的发展趋势。随着存储硬件不断演进,特别是英特尔傲腾之类的持久内存在数据中心中逐渐普及,数据库的存储引擎必须随之变革。OrioleDB支持多级存储架构,例如将热数据缓存在DRAM中,温数据保存在持久内存中,而冷数据则存储于固态硬盘上。
这种分层结合了NVRAM的非易失性特点与DRAM的高速访问能力,可以大幅提升数据库重启和崩溃恢复的速度。在传统的PostgreSQL中,如果数据库发生崩溃,它需要从头回放WAL,这往往需要数分钟甚至数小时。而OrioleDB可以减少这种恢复时间至几秒钟,这对于要求24/7在线服务的企业极为重要。 概括来说,Supabase招聘OrioleDB开发人员并非一个孤立的事件,这是一个信号,显示了开源基础设施公司正如何从"搭积木"走向"造砖头"。他们不再满足于仅仅充当PostgreSQL生态的消费者,而是愿意在基础层面进行投资和创造。这或许预示着"存储引擎即服务"或"数据库扩展"的新趋势。
如果你是一位拥有良好的Rust或C开发能力,并希望将自己的技术用于解决真实世界的数据规模问题的专家,那么这个职位值得你密切关注。Supabase提供的不仅仅是一份薪水,更是一个平台,让你能够在一个极快的迭代周期内对代码进行实质性的更改,并看到这些更改如何直接改善数十亿次数据库请求的处理方式。 最后,从开发者使用者的角度来看,也许在不久的将来,当我们比较不同数据库服务时,会以它们是否采用类似OrioleDB的先进存储引擎作为评判标准。在一个数据量呈指数级增长的时代,能够抵御膨胀、提高写入速度并且减少运维干预的存储引擎,将成为新的基本需求。Supabase已经在其中占据了先机。通过向世界展示这种强有力的技术愿景,并公开招募实现这一愿景的人才,他们不仅是在为当前的产品招揽人才,而且是在塑造数据库领域未来十年进化的蓝图。
无论结果如何,这个旅程本身就将成为开源软件发展史上的一个重要篇章。而对于那些始终关注技术前沿,并渴望通过编写高性能代码来解决难题的程序员来说,通往理想之路的大门已经敞开。在开源的指引下,任何敢于挑战传统、拥抱创新的开发者都可能成为这场变革的参与者,而这份工作,或许就是那把开启未来数据库之门的钥匙。 。