DuckDB v2.0 重磅预览:从嵌入式数据库迈向分布式架构
DuckDB Labs 发布了 DuckDB v2.0 的官方预览版,代号为“Cyanoptera”。作为自 1.5 版本以来包含超过 10000 次提交的里程碑,该版本标志着这款开源分析引擎在架构上的一次重大演进。DuckDB 凭借快速、嵌入式、进程内列式数据库建立了声誉,而 v2.0 在不牺牲单一二进制文件简洁性的前提下,将其运行范围扩展到分布式拓扑,并稳定了插件生态系统。正式版本计划于秋季发布。
此次发布的核心是由 quack 协议扩展和新的 CONNECT SQL 语句支持的原生客户端/服务器模式。开发者不再需要将引擎直接嵌入应用程序或依赖冗长的查询封装器,现在任何 DuckDB 实例都可以作为守护进程运行,并通过网络接受连接。用户可以挂载远程 DuckDB 端点或 PostgreSQL、MySQL 等外部关系数据库引擎,并通过下推优化直接路由查询:
复制代码CALL quack_serve(token = 'my_token');ATTACH 'quack:server.example.com' AS qk (TOKEN 'my_token');CONNECT qk;SELECT count(*) FROM events;DISCONNECT;
该网络层依赖 DuckDB 底层的多版本并发控制(MVCC)和多连接事务隔离。为了支持长期运行的多租户服务器部署,此次发布还重新设计了可观测性和指标子系统。
扩展可移植性的全面改造对生态系统同样意义重大。此前,扩展需要针对不稳定的内部 C++ API 进行编译,迫使开发者为每个 DuckDB 版本重新构建二进制文件。2.0 版本引入了版本化 C API,提供明确的 YAML 定义规范和稳定的应用程序二进制接口(ABI)保证。高级 C++ 抽象层和即将推出的 Rust 绑定让开发者能够一次构建扩展,并在多个次要版本和补丁版本中运行。此外,组织不再受限于官方仓库;v2.0 允许团队定义、通过加密方式固定并自行托管自定义扩展仓库:
复制代码SET allow_extension_repositories = 'allowed';CREATE EXTENSION REPOSITORY private_repo FROM 'https://extensions.corp.internal';INSTALL analytics_toolkit FROM private_repo;LOAD private_repo/analytics_toolkit;
除了服务器能力和扩展管理之外,此次发布还让 VARIANT 类型完全成熟。该引擎现在可以检测半结构化模式,并将类似 JSON 的载荷从磁盘到 Parquet 分解为列式表示,从而无需显式模式即可扫描嵌套字段。
这款分析引擎还用自定义的、基于 PEG 的语法取代了此前源自 PostgreSQL 的解析器,允许扩展注册自定义 SQL 语法,同时为诊断提供准确的源代码位置。其他新增 SQL 功能包括带有转换表的原生 BEFORE 和 AFTER 触发器、面向向量工作负载的 APPROX NEAREST 相似度联接,以及通用表表达式(CTE)内部的 DML 表达式。
引擎性能也获得了提升,包括跨 Amazon S3 等云对象存储的异步 I/O、感知分区的查询规划,以及通过默认 DICT_FSST 字典实现的优化字符串压缩。v2.0 存储格式为自适应基数树(ART)索引引入了延迟列元数据加载和增量检查点空间回收。此外,DuckDB 已解除对外部 ICU 的依赖,转而使用一个紧凑的、由 IANA 支持的原生子系统处理时区和排序规则逻辑,在减小二进制文件体积的同时加快时间转换。
Hacker News 和 Reddit 上的社区讨论显示,开发者对 DuckDB v2.0 表现出强烈兴趣,讨论重点集中在实际运维优势和生态系统取舍上。
在 Hacker News 上,从业者称赞 DuckDB 能够在消费级硬件上执行核外、超出内存容量的分析工作负载,从而大幅降低云基础设施成本。多位工程师重点介绍了如何使用 DuckDB-WASM 和 Parquet 直接驱动浏览器内仪表板,而不需要后端 REST 层;另一些人则欢迎新的异步 I/O 引擎,认为它能够有效地处理 HTTP 查询流量并运行实时事件流管线。在与 SQLite 的比较中,评论者强调,DuckDB 丰富的类型系统和专用列式引擎是长期数据分析的关键优势。
与此同时,在 Reddit 的 r/programming 板块,讨论集中在阐明 DuckDB 对 Web 应用程序开发者而言所扮演的架构角色。用户强调,DuckDB 并非 PostgreSQL 的事务型 OLTP 替代品,而是一个敏捷、轻量的 OLAP 主力工具,专为批量报告以及对 S3 中远程 CSV 和 Parquet 文件执行临时 SQL 查询而构建。开发者还对即将推出的稳定 C ABI 表示欢迎,指出它解决了非 C++ 语言绑定长期存在的痛点,例如 Go 的 CGO 开销和并发监控问题。
有兴趣在 2026 年秋季正式版本发布前测试新功能的开发者,可以获取面向主要平台和语言客户端的 DuckDB v2.0 预览版二进制文件和每日构建软件包。
原文链接:https://www.infoq.com/news/2026/08/duckdb-v2-distributed/