摘要: DuckDB 於 2026 年 5 月 12 日公布實驗性遠端協定 Quack,讓一個 DuckDB 直接連到另一個,並支援多個行程併發讀寫。它建在 HTTP 上,正式版預定隨秋季 v2.0 交付;官方提醒預設未啟用 SSL,對外服務應搭配反向代理。
DuckDB 團隊在 2026 年 5 月 12 日公布了遠端協定 Quack,讓一個 DuckDB 從此可以直接連往另一個 DuckDB。同一套軟體既扮演 client 也扮演 server,多個行程——無論同機或跨機——得以併發讀寫資料表,誰也不會鎖住誰。協定現階段以實驗性擴充套件的形態問世,正式版本排定跟著 2026 年秋季登場的 v2.0 一起交付。
這正是懸宕多年的缺口。DuckDB 自問世之初便選定 in-process 路線(跟 SQLite 站在同一陣營),憑此在 notebook 與嵌入應用表現極為亮眼;但「好幾個行程要寫同一份資料」始終等不到官方答案。團隊把話講得很直白:他們看重的是使用者體驗,而非在架構路線之爭裡搶下結論。
Quack 究竟是什麼
Quack 沒有自訂傳輸層,直接疊在 HTTP 上。訊息採用全新的 MIME type application/duckdb,內容沿用 DuckDB 內部的序列化原語——與 write-ahead log 出自同一套機制。連線之後,每筆查詢來回一次就夠;結果太大時,改以 fetch 訊息接續取回,並能分派給多個執行緒平行處理。DuckDB-Wasm 對這套協定內建支援,瀏覽器裡的 DuckDB 於是能直接連上 EC2 上的 server。預設 port 為 9494——取其中的 94,呼應 Netscape Navigator 問世的年份。實務上,server 以 CALL quack_serve 啟動,client 則在建立 secret 後下 ATTACH。擴充套件採 MIT 授權,程式碼放在 duckdb/duckdb-quack repo。
捨 Arrow Flight SQL 而不用的原因
理由有兩個。第一,Flight SQL 屬於外部治理的交換格式,一旦採用,協定日後的演進就得遷就別人的時程。第二,它的每筆查詢固定要兩次往返——先送 CommandStatementQuery、再跑 DoGet——對講求小而頻繁的交易來說,round trip 成了明顯拖累。團隊也承認,這類需求早就有跡可循:社群各自補洞——自製 RPC、Flight adapter、MotherDuck 私有協定都有人做,甚至有人用 pg_duckdb 拼出「EleDucken」。
實測數據:一次往返帶來的差距
整表搬移的基準跑在 AWS m8g.2xlarge(8 vCPU、32 GB RAM)上,測試標的是 TPC-H lineitem:搬運 6,000 萬列,Quack 僅需 4.94 秒,經 GizmoSQL 走 Arrow Flight SQL 要 17.40 秒,PostgreSQL 則耗上 158.37 秒;規模降到 1,000 萬列時,三邊分別為 0.89、2.90 與 25.64 秒。單列 INSERT 的中位數結果:執行緒只有 1 條時,Quack 每秒可完成 1,038 筆,Arrow 只有 469,PostgreSQL 為 839;執行緒拉到 8 條時,數字依序是 5,434、1,358 與 4,320。官方替它下的註解是「把資料表塞進 socket 的最快方式」;不過執行緒一超過 8 條,PostgreSQL 的延展性反而領先,癥結是 DuckDB 的併發寫入限制。
安全機制與現階段的限制
server 每次啟動都生成一組隨機 auth token,且預設只監聽 localhost;SSL 並非預設開啟,要對外提供服務時,官方建議在前面架上 nginx 反向代理並搭配 Let’s Encrypt。驗證與授權兩個環節都開放覆寫:token 檢查可以整段換成自訂程式碼,授權 callback 甚至能直接以 SQL macro 撰寫(比方說對接 LDAP)。官方也不諱言,現階段屬於 pre-release 的實驗性產物,repo 裡的 Releases 清單至今空無一物。Hacker News 上的討論串目前已累積 387 點。打算前進生產環境的團隊,把「預設無加密」視為既定前提、據此設計網路邊界,會是比較務實的做法。
後續藍圖:v2.0、DuckLake 和唯讀複本
首個正式版本會跟著秋季的 DuckDB v2.0 一起到位,其後的規劃還包含:DuckLake 整合(由遠端 DuckDB 出任 catalog)、auto-install、更高的吞吐量、可擴充的訊息設計,以及面向唯讀複本的 replication。團隊同時致謝 MotherDuck 的 Boaz Leskes 與 GizmoSQL 的 Philip Moore——早在官方團隊動手之前,後者便已實作出 client-server 版的 DuckDB。下一階段的更多細節,將在 6 月 24 日的 DuckCon #7 上說明。
