2024 年 6 月 3 日,备受瞩目的数据分析引擎 DuckDB 迎来了一个重要的里程碑 ——1.0.0 版本正式发布。

DuckDB 是高性能的分析型关系数据库,旨在实现高效的数据分析。它易于安装,运行速度非常快,并且可以在进程内 (in-process) 运行。

DuckDB 背后的核心思想是保留 SQLite 的简单性和易用性,同时通过 R/Python 和 RDBMS 之间的快速分析处理和快速数据传输进行增强,以处理 OLAP 工作负载。

该项目被命名为 “DuckDB”,因为创建者认为鸭子具有弹性并且可以靠任何东西为生,类似于他们设想的数据库系统运行方式

DuckDB 1.0.0 代号为 "Snow Duck"(雪鸭),寓意着 DuckDB 在数据分析领域已经达到了一个新的高度,同时也象征着 DuckDB 团队对系统稳定性的不懈追求。

DuckDB 项目始于 2018 年,经过近 6 年的不断打磨,如今已发展成为一个拥有 30 多万行 C++ 引擎代码、4.2 万次代码提交、解决了 4000 个 issue 的成熟开源项目。

DuckDB 以其卓越的查询性能和易用性在业界赢得了广泛赞誉,GitHub 和社交媒体平台上的关注者数以万计,每月下载量高达数百万次,仅扩展模块的下载流量就超过了每天 4TB。现在,就连维基百科也开始认可 DuckDB 的地位。

DuckDB 之所以选择在此时发布 1.0.0 版本,是因为团队意识到,数据管理系统作为应用程序的核心组件,开发者和用户之间存在着信任的契约。

用户依赖数据库提供正确的查询结果并确保数据安全,而系统开发者需要意识到不能随意破坏用户应用程序的责任。

DuckDB 致力于成为人们构建应用程序的可靠基础,1.0.0 版本的发布标志着 DuckDB 在存储格式稳定性、查询语义一致性等方面的重大突破,为用户提供了强有力的稳定性保证

公告写道,发布v1.0.0的主要障碍之一是存储格式 (storage format.)。DuckDB有自己的定制数据存储格式。这种格式允许用户在单个文件中管理许多(可能非常大的)表,具有完整的事务语义和最先进的压缩。

但设计新的文件格式并非没有挑战,随着时间的推移,DuckDB 必须对格式进行重大更改。这导致了 DuckDB 成为次优方案,即每当发布新的DuckDB版本时,使用旧版本创建的文件无法与新的DuckDB版本配合使用,必须手动升级。

此问题在2月份的v0.10.0中得到了解决——引入了DuckDB存储格式的向后兼容性和有限的前向兼容性。团队称此功能现已使用一段时间,没有出现严重问题——他们有信心保证使用DuckDB v1.0.0创建的DuckDB文件将与未来的DuckDB版本兼容。

除了系统稳定性,DuckDB 1.0.0 另一个核心方面是跨版本的稳定性。虽然永远不会破坏任何人的工作流程可能是不可能的,但他们在今后会更加谨慎地处理面向用户的变化。特别是,DuckDB计划专注于为SQL方言以及C API提供稳定性。

展望未来,DuckDB 将持续专注于系统稳定性,同时也计划丰富 DuckDB 周边的扩展环境。通过社区贡献的扩展,DuckDB 有望成为下一个数据革命的基础,为用户提供高性能的统一 SQL 接口。

此外,DuckDB 背后有着强大的资金支持和长期发展战略。

DuckDB Labs 公司目前拥有近 20 人的核心团队,专注于 DuckDB 的长期战略发展;而非营利性的 DuckDB 基金会则确保了 DuckDB 在 MIT 开源许可下的长期发展。

P.S. 据称 DuckDB Labs 公司 CTO Mark 是最主力的程序员,50%的代码是他一人完成,另外还有13个程序员,1个测试实习生,1个人负责开发者生态,1个人负责培训与文档。

Reference

https://github.com/duckdb/duckdb/releases/tag/v1.0.0
https://duckdb.org/2024/06/03/announcing-duckdb-100.html