pg电子游戏好吗-DuckDB用关系型数据库攻克数据湖仓"小改动"难题
你的位置:pg电子游戏好吗 > 新闻动态 > DuckDB用关系型数据库攻克数据湖仓"小改动"难题
DuckDB用关系型数据库攻克数据湖仓"小改动"难题
发布日期:2026-04-29 02:31    点击次数:79

DuckDB背后的团队针对湖仓一体架构中长期存在的"小改动"问题,提出了一套解决方案。这一问题据称普遍困扰着基于Databricks、Snowflake、Google等技术构建的湖仓实现。

支持这一开源关系型数据库管理系统的咨询与服务公司,于本周正式发布了DuckLake湖仓格式的首个生产就绪版本。早在2025年5月发布的DuckLake宣言中,该团队就承诺重新设计将数据仓库与数据湖整合于单一系统的架构理念。

具体而言,DuckLake提出使用关系型数据库来管理基于Apache Iceberg和Delta Lake(由Databricks引入、Linux基金会治理)等通用开放表格式的湖仓实现中的元数据,并向工程师展示了如何将PostgreSQL、SQLite或DuckDB用作目录数据库。

在本周发布的DuckLake v1.0生产就绪湖仓格式规范中,数据库专家们展示了如何利用该数据库解决依赖Parquet文件格式的开放表格式湖仓系统中普遍存在的"小改动"问题。

DuckDB Labs联合创始人兼CEO Hannes Mühleisen向媒体解释道:"当你对表进行一个小改动,比如新增一行数据,就会影响数据湖的性能。由于其工作方式,系统必须写入一个只包含一行数据的新文件,同时还需要写入大量元数据,并更新目录。这极其低效——Parquet这类格式本不适合存储单行数据,它希望一次存储数百万行;而从对象存储中读取这些微小文件也极为低效,因为会触发大量数据传输。"

Mühleisen同时也是阿姆斯特丹数学与计算机科学研究中心(Centrum Wiskunde & Informatica)的教授。他表示,DuckLake的做法是利用元数据关系型数据库将这些小改动进行批量累积,再以相对较大的数据块写入Parquet文件。

"DuckLake与其他数据湖格式的核心设计差异在于:我们有一个数据库,并且不惧怕使用它。我们将数据湖的所有元数据存储在DuckLake数据库的目录中——哪些表存在、哪些文件存在、它们之间如何关联、随时间发生了哪些变更,一切尽在其中。当你新增一行数据时,我们不会向对象存储写入新文件,而是将其添加到数据库的一张表中。关键洞察在于:PostgreSQL、DuckDB等数据库系统处理小改动的能力,远远优于对象存储。"他说道。

元数据数据库会存储行的新增、删除等小改动,待积累到一定量后,再将其作为相对较大的文件"刷回"Parquet,同时对用户完全透明。

在1.0版本发布随附的博客文章中,DuckDB Labs首席工程师Pedro Holanda表示,公司基准测试显示,与Iceberg相比,查询速度提升了926倍,数据摄取速度提升了105倍。

"当我在博客中写到有1000倍性能差距时,我心想'可能有人会生气',但并没有。大家的反应是:'这确实是个真实存在的问题。'甚至有人说我们是在靠架构'作弊'。但这恰恰说明了问题:用更好的设计来'作弊',本就是核心所在。"他说。

不过,工程师们仍在围绕现有的湖仓架构持续构建,并尝试解决相同的问题。去年DuckLake发布时,AWS资深工程师、AI数据库公司LanceDB软件工程师Jake Ye在博客中指出,业界正"日益围绕基于JSON的协议作为互操作性基础进行整合",同时也指出DuckLake在结构化可扩展性、版本管理和传输层分离等方面存在采用挑战。

Snowflake首席工程师Russell Spitzer当时也表示,许多项目"已在Iceberg上走了很长一段路,Iceberg社区也在着手解决元数据目录问题。DuckDB仍是一个新兴数据库,而现有厂商已在市场上深度布局。我们可能还需要等待一段时间,才能判断DuckLake的理念能否真正落地。"

Q&A

Q1:DuckLake是什么?它主要解决什么问题?

A:DuckLake是DuckDB Labs发布的一种湖仓格式规范,其1.0版本于近期正式推出。它主要解决湖仓架构中的"小改动"问题——即每次对数据表进行微小修改(如新增一行)时,传统基于Parquet的开放表格式都需要写入新文件并更新大量元数据,导致性能极低。DuckLake通过关系型数据库批量累积这些小改动,再统一写入Parquet,大幅提升效率。

Q2:DuckLake与Apache Iceberg相比性能差异有多大?

A:根据DuckDB Labs发布的基准测试数据,DuckLake在查询速度上比Apache Iceberg快926倍,在数据摄取速度上快105倍。这一性能提升主要来源于其核心设计差异:使用关系型数据库(如PostgreSQL、SQLite或DuckDB)管理元数据,而非依赖对象存储处理频繁的小规模变更,从而充分发挥了数据库在处理小改动方面的天然优势。

Q3:DuckLake目前面临哪些挑战和质疑?

A:尽管性能表现亮眼,DuckLake仍面临一定的采用挑战。工程师Jake Ye指出,DuckLake在结构化可扩展性、版本管理和传输层分离方面还有待完善。Snowflake首席工程师Russell Spitzer则表示,许多企业已在Iceberg上投入较深,而Iceberg社区也在积极解决元数据目录问题,DuckDB作为相对新兴的数据库,能否撼动现有市场格局仍需时间验证。



相关资讯