Hacker News 中文摘要

RSS订阅

Quack:DuckDB 客户端-服务器协议 -- Quack: The DuckDB Client-Server Protocol

文章摘要

DuckDB团队推出了名为Quack的远程协议,使DuckDB实例能够以客户端-服务器模式运行,支持多并发写入。该协议基于HTTP等成熟技术,简单易用且性能高效,可处理从批量操作到小型事务等多种工作负载。这延续了DuckDB一贯的简洁设计理念,同时突破了传统单机架构的限制。

文章总结

标题:Quack:DuckDB的客户端-服务器通信协议

核心内容概述:

  1. 协议背景
  • DuckDB团队于2026年5月12日推出Quack远程协议
  • 该协议支持多写入者并发操作的客户端-服务器架构
  • 基于HTTP等成熟技术,具有简单设置和高性能特点
  1. 架构演进
  • 传统数据库采用客户端-服务器架构(如1980年代的Sybase)
  • DuckDB和SQLite采用进程内架构,适合交互式数据分析场景
  • 多进程并发写入场景需要新的解决方案
  1. 协议特点
  • 命名灵感:鸭子通过"quack"交流,故命名为Quack协议
  • 双向通信:DuckDB实例可同时作为客户端和服务器
  • 简单示例: ```sql -- 服务端 CALL quackserve('quack:localhost', token='supersecret');

    -- 客户端 ATTACH 'quack:localhost' AS remote; ```

  1. 技术设计
  • 基于HTTP协议:兼容现有网络基础设施
  • 请求-响应模式:客户端驱动交互
  • 高效序列化:使用application/duckdb MIME类型
  • 安全机制:默认随机令牌认证和本地主机绑定
  • 性能优化:单次往返查询处理,支持批量数据传输
  1. 性能表现
  • 批量传输测试(60M行数据):
    • Quack: 4.94秒
    • Arrow Flight: 17.40秒
    • PostgreSQL: 158.37秒
  • 小事务测试(8线程):
    • Quack: 5,434 tx/s
    • PostgreSQL: 4,320 tx/s
    • Arrow Flight: 1,358 tx/s
  1. 未来规划
  • 与DuckLake集成
  • 计划在DuckDB v2.0中发布生产版本
  • 改进远程SQL语法
  • 提升事务处理能力
  • 考虑添加协议扩展和复制功能
  1. 特别说明
  • 未采用Arrow Flight SQL的原因:
    • 保持内部数据结构灵活性
    • 避免强制性的双次协议往返
    • 支持快速创新和新功能添加

该协议标志着DuckDB从交互式分析工具向现代数据架构核心组件的演进,为集中式数据管理场景提供了新的解决方案。

评论总结

总结评论内容:

  1. 对DuckDB定位的困惑
  • 观点:认为DuckDB功能多样但定位不明确
  • 引用: "I like DuckDB but I'm not sure what it wants to be"(simlevesque) "There's always new ways to use it"(simlevesque)
  1. 适用场景探讨
  • 观点:适合小型分析数据集和家庭实验室使用
  • 引用: "useful for small-ball internal analytics datasets"(NortySpock) "see exploring this for some homelab use"(NortySpock)
  1. HTTP协议的争议
  • 观点:强烈反对基于HTTP构建数据库协议
  • 引用: "HTTP is bad for transferring large amount of data"(ozgrakkurt) "no concept of streaming in it"(ozgrakkurt)
  1. 特定使用场景需求
  • 观点:对DuckDB/Quack作为目录数据库感兴趣
  • 引用: "Seems like a niche use case"(mritchie712) "DuckDB/Quack catalog would be an excellent alternative"(mritchie712)
  1. 技术整合问题
  • 观点:询问与wasm的兼容性
  • 引用: "Does this work with duckdb-wasm?"(znite)
  1. 积极评价
  • 观点:认为解决了水平扩展问题
  • 引用: "solved the 'but how do I horizontally scale this' problem"(rglover) "Love 'Quack' for the protocol name"(rglover)
  1. 替代方案咨询
  • 观点:询问DuckDB+Quack是否适合低并发场景
  • 引用: "Would DuckDb + Quack be a good choice for this?"(hermitcrab) "Performance requirements are quite low"(hermitcrab)

注:所有评论均未显示评分信息。