加载失败
DuckDB(一个嵌入式分析型 SQL 引擎)长期以本地、零配置和易嵌入著称,而 Quack 把它扩展成可远程访问的 client-server protocol,让普通客户端甚至 duckdb-wasm(DuckDB 的 WebAssembly 版本)也能直接连上去。这个变化之所以重要,是因为很多数据工作流并不只停留在本地查询,还需要共享 compute、cache、storage 和 metadata,尤其是在 DuckLake(DuckDB 的 lakehouse 方案)、Parquet(列式存储格式)和 observability 数据场景里。部分评论担心 HTTP/2(HTTP 的第二代传输层协议)不适合大规模传输和 streaming,也担心 DuckDB 的定位越来越发散;另一部分则认为这正是 DuckDB 从“单机分析工具”走向“现代数据工作流 SQL 层”的自然演进。它还和 MotherDuck(围绕 DuckDB 的商业托管服务)以及 catalog 设计相关,因为远程协议可以把重试、元数据和访问控制更紧密地放在服务器侧。
很多人把它理解成一个立刻能解决日常痛点的补丁:不用为了看数据而停掉现有服务,也不用把数据库本身暴露给外部工具。有人拿它接传感器数据、内部应用框架、Excel-like 列式表格、S3 上的 .duckdb 文件和 observability 数据,觉得这会省掉大量自建 HTTP/RPC 接线工作。还有人直接把 DuckDB 视为自己工作流里的基础设施,尤其在 analytics、pipeline 和 LLM 相关数据处理里很顺手。整体上,这一派最看重的是“少搭一层胶水,马上能用”。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]
一部分评论在争论 DuckDB 到底想成为什么,但另一部分则认为它的路线其实很清楚:它是一个很快的嵌入式分析引擎,同时也可以作为更大系统里的组件。Quack 被解读成把 DuckDB 拉回到传统 client-server RDBMS 的熟悉模式,只不过这个模式服务的是分析场景,而不是 OLTP。有人把它类比为 SQLite:SQLite 也是嵌入到手机、浏览器、桌面应用和 IoT 里的基础组件,只是 DuckDB 这次把“远程”也纳入了官方能力。这个角度下,Quack 不是迷失方向,而是让 DuckDB 的适用范围更容易理解。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
最受关注的深层用途之一,是把 Quack 用在 DuckLake 的 catalog 和远程存储访问上。评论者认为,如果 catalog 也能落在 DuckDB 上,就能减少非 DuckDB catalog 带来的类型映射问题,避免 inline 时的转换开销和正确性风险。也有人指出,远程协议意味着服务端可以直接拥有存储、计算、重试逻辑和 metadata,客户端只管连上来,这比自己手写一套 RPC 更省事。这个话题还延伸到了 observability 数据、lakehouse 和更低运维复杂度的替代方案,比如可能替换掉 Mimir 或 Clickstack 一类系统。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
有相当一部分评论在质疑协议选择本身,认为 HTTP 对大吞吐传输和 streaming 并不理想,尤其在请求大小、timeout 和客户端限制上都有现实问题。还有人指出,文章里的 benchmark 只拿 CSV 体积说事,缺少压缩后大小和更细的吞吐分解,因此很难判断它到底接近硬件上限到什么程度。回应则强调 Quack 实际上用了 HTTP/2,并且支持 streaming,而且测试网络本身也只有 15 Gbps 上限,不能拿理论极限硬比。另一种更温和的看法是,DuckDB 团队一贯优先做“实践上好用”的工程选择,而不是追求协议纯洁性。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]
不少人把问题拉回到传统数据库选择:Quack 是否真能让一个小型应用支持多用户同时读写。回复普遍认为 DuckDB 更偏 analytics,不是默认的 OLTP 方案;如果要做真正的多用户并发,PostgreSQL 仍然是最稳妥的默认答案。也有人提到 MySQL、Firebird,或者用 SQLite 加 litestream 做复制来“伪装”多用户,但这本质上还是绕开了原生 client-server 模式。另一些评论转向 CRDT 和 local-first,讨论离线同步与协作编辑,但也明确指出这和实时多用户并发访问不是一回事。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11] [来源12] [来源13] [来源14]
浏览器端支持是另一条被反复称赞的线索,因为 Quack 让 duckdb-wasm 也能原生说同一种协议。评论里提到文章和视频末尾就有 WASM demo,展示了浏览器里的 DuckDB 可以直接连到远端 DuckDB 实例。对做浏览器分析工具、表格应用或跨端查询的人来说,这意味着前后端可以共享同一套访问模型,不必再单独发明一层 HTTP API。很多人把这看作 Quack 最有说服力的亮点之一。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
Quack: DuckDB 新推出的 client-server protocol,用于让远程客户端访问 DuckDB 服务器。
DuckLake: DuckDB 相关的 lakehouse 方案,用来处理 metadata、catalog 和 Parquet 数据。
duckdb-wasm: DuckDB 的 WebAssembly 版本,可在浏览器中运行。
Parquet: 常见的列式存储格式,适合分析型数据和大规模数据交换。
Iceberg: 一种开放 table format,常用于 lakehouse,但接入和运维复杂度较高。
CRDT: Conflict-free Replicated Data Type,可用于离线协作和并发编辑同步。
local-first: 以本地数据为中心、再同步到其他设备的架构思路,不等同于传统 client-server 多用户数据库。