在保持 DuckDB 轻量级工作流和 SQL 兼容性的同时,Quack 能让数据集共享、并发用户支持、远程运行分析,以及在不切换到更传统、更重量级数据库系统的情况下构建生产级数据服务变得更加容易。与现有方案相比,Quack 被设计得更易用,同时显著提升性能。
/filters:no_upscale()/news/2026/05/duckdb-quack-protocol/en/resources/1duckdb-1779461054935.png)
来源:DuckDB 博客
Quack 允许多个应用通过标准 HTTP 连接同时访问同一个 DuckDB 数据库,并使用 DuckDB 的原生数据格式。DuckDB 表示,这种方式在传输大规模数据集时,比 Arrow Flight 快约 3.5 倍,并且显著快于 PostgreSQL。
DuckDB 是在宽松 MIT 许可证下发布的流行开源分析型数据库,专为在本地文件、应用或笔记本环境中对大规模数据进行高速 SQL 查询而设计。它类似 SQLite,是一种进程内数据库,可以直接嵌入应用中运行,而无需单独的数据库服务器。在介绍 Quack 时,团队写道:
有了 Quack,DuckDB 现在可以应用于更广泛的新场景,其中“集中状态管理”比“极致化的本地查询”更为重要。随着数据湖的兴起,我们也已经认识到数据并不总是本地存在。说到数据湖,Quack 还将集成进 DuckLake,使 DuckDB 本身成为一个可远程访问的 Catalog 服务器。
DuckDB 选择不采用 Arrow Flight SQL(一种使用 Arrow 内存格式与 Flight RPC 框架与 SQL 数据库交互的协议),原因在于他们希望完全掌控数据传输方式以及协议演进方向。他们同时声称 Quack 在小查询场景下更高效,因为它可以通过一次网络往返完成查询发送与结果返回。团队补充道:
我们认为,为了持续在数据系统领域进行创新,我们不能让自己受制于由外部控制的数据格式。
Hacker News 社区的反应整体较为积极,开发者普遍认为这是在保持 DuckDB 轻量和易部署的同时,迈向共享、多用户分析工作流的重要一步。Lattice Engineering 的管理负责人 Ryan Glover 表示:
这太棒了。我一直在考虑在公司内部应用框架中使用 DuckDB,这次更新直接解决了“但如何进行横向扩展”的问题。向 DuckDB 团队致敬。我也很喜欢协议名称“Quack”。
Reddit 用户 kvlonge 补充道:
能够在服务器上启动 DuckDB,并让用户像使用“普通数据库”一样远程访问它,这将是一个巨大的能力提升。
DuckDB 计划将 Quack 与 DuckLake 集成,进一步提升性能,并在 2026 年晚些时候随 DuckDB 2.0 发布生产级版本。团队也在开发对远程数据库的更好支持、更高的事务吞吐能力、可定制协议扩展以及复制功能。
在《从 DeepSeek 到 Quack:当分布式 DuckDB 的梦想开始变得真实》一文中,Amir Sefati 强调了 DuckDB 实例之间互相通信的优势:
当你将这一点与对象存储、DuckLake、Parquet 和向量数据库结合起来时,就形成了一种面向现代 AI 与数据工程的非常务实的架构。这不是因为它时髦,而是因为它减少了不必要的复杂性。
在讨论更多使用场景时,例如浏览器标签页直接与 DuckDB 服务器通信,或在 notebook 之间进行查询转发,MotherDuck(一家基于开源 DuckDB 查询引擎构建的云数据仓库公司)的数据工程师与开发者倡导者 Mehdi Ouazza 总结道:
我们是不是终于不再提“DuckDB 不支持多写入”的说法了?现在已经有很多方案了,只取决于你如何拆解和组合。
目前,该新协议需要在 DuckDB 实例中启用 Quack 扩展才能使用。最近发布的 DuckDB v1.5.3 已支持 Quack 作为可自动加载的核心扩展,并作为 DuckLake catalog 使用。
DuckDB 数据库的创建者、DuckDB Labs 的 CEO Hannes Mühleisen 此前在 QCon 上分享过关于基于进程内分析数据管理(in-process analytical data management with DuckDB)的演讲。
查看英文原文:DuckDB Quack: Client/Server Protocol over HTTP for Multi-User Analytics - InfoQ





