一个由 Microsoft 支持的开源项目旨在帮助解决 PostgreSQL 作为分析数据库的弱点。
该项目在宽松的 MIT 许可下,计划将流行的进程内 OLAP 系统 DuckDB 引入 PostgreSQL,PostgreSQL 自 2023 年以来一直被评为开发人员中最受欢迎的数据库。
虽然 PostgreSQL 的受欢迎程度在过去 28 年中稳步增长,这归功于其强大且可扩展的设计,但开发人员一直在努力构建基于数据库的分析系统,因为它们既能有效地支持事务,又能有效地构建分析系统。
嵌入 DuckDB 分析引擎的开源 PostgreSQL 扩展旨在帮助解决这个问题。
为DuckDB提供后端服务和扩展的MotherDuck的一篇博客文章称,该IP由独立的非营利性DuckDB基金会拥有,确保其保持开源。它托管在官方的 DuckDB GitHub 仓库中。
“PostgreSQL在很多事情上都很棒,但如果你试图用它来分析,你很快就会碰壁,”这篇文章说。“也就是说,它非常擅长创建、查找和定位单个行,但如果你想了解数据集中发生了什么,它可能会非常慢。
“人们试图添加创可贴来提高PostgreSQL的分析性能,但他们并没有特别成功,因为擅长分析需要不同的技术来运行你的查询,比如能够一次对成批的行进行操作,并避免解压缩数据,直到绝对需要。通常,这需要一个专门构建的分析引擎,这需要大量的努力。
DuckDB 嵌入在主机进程中,因此无需安装、更新或维护 DBMS 服务器软件。例如,DuckDB Python 包可以直接对 Python 软件库 Pandas 中的数据运行查询,而无需导入或复制数据。DuckDB 是用 C++ 编写的,在 MIT 许可下是免费和开源的。
MotherDuck 表示,DuckDB 的矢量化查询引擎一次处理大量数据,这使得它对于回答有关数据中正在发生的事情的分析问题很有价值。“由于其速度、易用性和多功能性,DuckDB 的受欢迎程度一直在飙升,”该博客声称。
新的 DuckDB PostgreSQL 扩展 pg_duckdb 得到了 DuckDB Labs 的支持,DuckDB Labs 是由 DuckDB 的开发人员创立的商业支持公司,Microsoft托管 PostgreSQL 服务并雇佣 PostgreSQL 提交者,Hydra(启动 pg_duckdb 的数据和软件公司)和提供无服务器 PostgreSQL 数据库平台的 Neon。MotherDuck 也为该项目提供支持。
卡内基梅隆大学(Carnegie Mellon University)数据库学副教授安迪·帕夫洛(Andy Pavlo)表示,自2000年代以来,开发人员一直在尝试制作PostgreSQL的OLAP版本,“但这些都是Postgres代码的硬分叉”,例如Greenplum,Vertica,Aster Data和ParAccel。
“这种方法在当时是必要的,因为PostgreSQL扩展或'钩子'API始于2006年,最初是为了[提供]对调试功能的支持,”他告诉我们。“然后在 2010 年代初期,像 Citus 这样的系统展示了如何创建一个完全基于使用扩展的 PostgreSQL 版本。另一个表明您不需要分叉 Postgres 来支持自定义工作负载的大玩家是 Timescale。
“就服务年限而言,DuckDB 的优化器不如 PostgreSQL 那么久经沙场。但是 DuckDB 的优化器设计是基于 TUM 的 HyPer 优化器,它是世界上最好的优化器之一。例如,它可以取消嵌套甚至连 Microsoft SQL Server 或 Oracle 都无法处理的任意子查询。
Pavlo 补充说,支持该项目的公司范围令人印象深刻,尤其是MotherDuck,Neon和Microsoft。“如果我是一名开发人员,并且已经在我的堆栈中使用了 Postgres + DuckDB,并且我希望能够将两者结合在一起,我会选择pg_duckdb而不是其他 DuckDB Postgres 扩展替代方案,”他说。
作者:
Lindsay Clark
2024年8月20日




