DuckDB 作为一种进程内分析型数据库,现已发布代号为“Cinnamon Teal”的 2.0.0 LTS 版本。此次发布标志着从注重稳定性的 1.0 系列向功能丰富的迭代的重大转变。关键的架构更新包括集成首选 VARIANT 类型,该类型允许数据库以列式性能存储和执行 JSON 等半结构化数据。与标准 JSON 格式不同,VARIANT 类型作为原生类型进行处理,允许 DuckDB 检测常见结构并将其“粉碎”为压缩后的高性能列。

显示将 JSON 字符串转换为类型化列的图表。
VARIANT 类型将半结构化 JSON 数据粉碎为高性能列的视觉表示。duckdb.org

此图表解释了 2.0.0 发布中引入的首选 VARIANT 类型的机制。

2.0.0 版本中最具影响力的性能改进之一是引入了用于读取 Parquet 和 CSV 文件的异步 I/O。通过将 I/O 层与查询处理层解耦,DuckDB 现在可以同时发出多个后台读取请求。这种架构专门设计用于在从远程对象存储(如 Amazon S3)查询数据时最大化吞吐量,因为网络延迟否则可能会成为查询执行的瓶颈。团队提供的基准测试显示,这一变化显著提高了网络利用率并减少了远程数据获取的总运行时间。

比较同步和异步 I/O 操作的网络吞吐量图表。
DuckDB 新的异步 I/O 架构实现的网络吞吐量提升对比。duckdb.org

该图表说明了如何通过将 I/O 层与查询处理解耦来最大化远程对象存储的吞吐量。

此次发布还在 DuckDB CLI 中引入了“Agent 模式”,专门为 Claude Code 或 Cursor 等 AI 编码 Agent 量身定制。当 CLI 检测到其正被 Agent 操作时,它会自动切换到一种输出紧凑 Markdown 表格、清晰报告截断结果并以 JSON 格式提供错误信息的模式。这减少了模型必须解析的数据量——在 TPC-H 实验中减少了高达 59%——并允许 Agent 在执行前看到预期的查询成本。此外,此次更新用现代的可扩展 PEG 解析器取代了传统的源自 PostgreSQL 的解析器,这简化了在不冒风险冲突现有规则的情况下添加新 SQL 语法的过程。

虽然 DuckDB 仍是一个进程内数据库,但 2.0.0 版本优化了 Quack 协议,实现了客户端-服务器架构。这允许用户使用新的 CONNECT 语句连接并切换到远程数据库。该协议旨在与其他数据库(如 PostgreSQL 和 MySQL)协同工作,利用远程下推优化器将查询直接发送到远程服务器,而不是通过网络拉取整个表。2.0.0 发布是一个长期支持(LTS)版本,团队为从 1.5 系列迁移的用户提供了过渡期。