七万号·数据平台实战手记

Back

① 标题党#

主标题DuckDB 还能装插件?给数据库加能力是种什么体验 备选A从 http/json 到联邦,DuckDB 扩展让我自己造数据源 备选B(短视频)库不够用?自己给它加个轮子

② 开场钩子#

标准 DuckDB 已经很强,但当我想让它读一个自定义 HTTP 接口时,发现它还能扩展。给数据库写插件,这个自由度让我停不下来。

③ 主角特性:扩展机制 / TableFunction / ParserExtension#

  • Extensions:核心可裁剪可扩展,装 httpfs/postgres/parquet 等按需加载。
  • 自定义 TableFunction:你可以写一个表函数,把任意数据源暴露成 DuckDB 表(如自读 HTTP JSON)。
  • ParserExtension:甚至可以接管自定义 SQL 语法(CREATE TABLE x USING http_json(...)),几乎重定义数据库语法。

:扩展 API 跨版本不稳,常要随 DuckDB 重编译;但因为是开源,能看到源码自己补。

④ 最小可复现#

-- 装官方扩展
INSTALL httpfs;
LOAD httpfs;
-- 直接读 S3/HTTP 上的 parquet
SELECT * FROM read_parquet('s3://bucket/a.parquet');
sql

(自定义扩展:见「方案C」的 http-json 插件——把 REST 接口当表)

⑤ 结论#

DuckDB 的扩展机制,让”数据库”从封闭走向可编程。你能给它加轮子,甚至改语法——这是它区别于大多数库的自由。

⑥ 配图脚本#

扩展装载流程 / 自定义数据源暴露成表 / ParserExtension 语法接管 / 结论卡


扩展机制:给 DuckDB 写点东西其实很爽(也有坑)
https://realcpf.tech/blog/duckdb-06
Author 刘佳成
Published at 2026年9月3日