嵌入式資料庫DuckDB 2.0強化伺服器模式,加入完整觸發器並更換SQL解析器

開源嵌入式分析資料庫DuckDB 公佈 2.0重大版本預覽,主要更新包括透過Quack實現的伺服器模式轉為穩定、完整支援資料庫觸發器,並更換SQL語法解析器、升級預設儲存格式。DuckDB過去主要直接在應用程式內執行,不必另外架設資料庫伺服器,2.0則進一步支援透過網路提供資料庫服務。

DuckDB是一套針對資料分析設計的開源SQL資料庫,設計概念類似SQLite,可直接嵌入Python等應用程式,也能查詢Parquet、CSV、JSON及S3上的資料。2025年Stack Overflow開發者調查中,DuckDB的使用比例由前一年的1.4%增加至3.3%,雖然其使用規模仍不及傳統主流資料庫,但在開發者社羣的使用比例持續成長。

伺服器模式透過Quack實現,DuckDB今年5月已先行公開Quack遠端通訊機制,目前仍處於預覽階段,預計在2.0轉為穩定功能。使用者可讓一個DuckDB實例透過網路提供資料,再由其他DuckDB連線存取。2.0並新增CONNECT指令,可將查詢工作切換至遠端資料庫執行。

CONNECT也不限定連接DuckDB,新版本可把SQL查詢直接交給PostgreSQL或MySQL執行,再將結果傳回,減少為了分析而先把資料表搬到本機的需要。伺服器模式也讓原本多半在單一應用程式內執行的DuckDB,可以支援多個用户端透過網路存取。

DuckDB 2.0也將完整加入資料庫觸發器。觸發器可在資料新增、修改等操作發生前後,自動執行事先設定的工作,例如資料異動時同步留下稽核紀錄。新版本可依每筆資料或每個SQL敍述觸發,也能取得修改前後的資料內容,補上長時間運作資料庫服務常見的資料異動處理需求。

新版底層架構也有明顯調整,DuckDB 2.0將換掉源自PostgreSQL的SQL語法解析器,改用自行開發的版本,除了改善錯誤訊息,也允許擴充套件加入新的SQL語法。預設儲存格式同步升級至2.0,大型索引不再需要全部常駐記憶體,而是依使用需求載入,以降低大型資料庫開啟時的記憶體需求。