DuckDB v1.4.0发布:数据库加密、MERGE 语句、Iceberg 写入等特性
DuckDB 发布了全新版本 v1.4.0,代号 “Andium”(安第斯山高原鸭,Anas andium)。这是一个 长期支持(LTS)版本,将提供 一年的社区支持,并带来了一系列重量级的新功能,包括 数据库加密、MERGE 语句、Iceberg 写入 等。
本文将带你快速了解本次更新的核心亮点。
数据库加密
数据库文件加密是社区长期呼声极高的功能,这次终于来了。在 v1.4.0 中,可以通过 ENCRYPTION_KEY 参数直接加密数据库文件:
DuckDB 使用 AES-256 GCM 模式,支持加密数据库文件、WAL 文件以及临时文件。
内置 mbedtls 库即可使用;推荐配合 httpfs 扩展的 OpenSSL 版本,利用硬件加速获得更佳性能
MERGE 语句
DuckDB 现已支持 MERGE INTO,可以在没有主键的场景下灵活实现 Upsert(更新+插入)和删除逻辑:
MERGE INTO还支持更复杂的条件和 DELETE 语句。
特点:
- 不依赖主键
- 支持 UPDATE、INSERT、DELETE
- 可结合复杂条件
这让 OLAP 场景下的批量更新、去重、数据同步更方便。
Iceberg 写入
DuckDB 的 duckdb-iceberg 扩展现在支持 写入 Iceberg。
这意味着:
- 可以从 DuckDB / DuckLake 写入数据到 Iceberg
- 也能 从 Iceberg 拷贝数据到 DuckDB

新增窗口函数:FILL
由社区开发者 Richard 贡献的 FILL 窗口函数,用于缺失值插值:以下是一个例子,您可以看到 1 到 42 之间的缺失值,在结果中被插值成 21。
性能与优化
- 排序重构:采用 k-way merge sort,性能和线程扩展性显著提升
- CTE 默认物化:提升性能,避免内联带来的 Bug
- 内存表 Checkpoint:支持压缩和空间回收,提高内存表可用性
生态与分发
- MacOS Notarization:命令行工具和库文件已完成苹果官方公证,下载更安全
- Python Client 独立仓库:Python 语言接口迁移到 https://github.com/duckdb/duckdb-python,问题反馈需在新仓库提交
总结
DuckDB v1.4.0 是一次里程碑版本:
- 首个 LTS 版本,适合生产部署
- 数据库加密 & MERGE 语句 & Iceberg 写入,直击核心需求
- 性能优化 & 生态拓展,让 DuckDB 更加成熟
本次更新包含 3500+ 提交,90+ 贡献者 的努力,更多细节请查阅 GitHub 发布页:https://github.com/duckdb/duckdb/releases。
DuckDB 正在以惊人的速度成长,期待它在数据分析与数据湖生态中发挥更大作用!
文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有