不用 MotherDuck,直接用 DuckDB 搭建分析栈
上周 Lightdash 宣布了 MotherDuck 的原生集成:5 分钟接入,dbt 语义层 + DuckDB 速度 + 按秒计费。官宣文章里反复提 "agentic era"——每个 AI Agent 一个独立计算实例,互不干扰。
听起来很美。但你仔细想一下:这些能力到底是 MotherDuck 独有的,还是 DuckDB 本来就有的?
我的答案:90% 的能力,开源 DuckDB 就能做到。MotherDuck 卖的是运维便利,不是独有能力。
● ● ●
MotherDuck 到底给了你什么
先拆一下 MotherDuck 的产品卖点:
| 卖点 | 本质 |
|---|---|
| Serverless 数仓 | DuckDB 实例 + 自动启停 |
| Hypertenancy(每用户独立计算) | 多个 DuckDB 进程,各自跑各自的 |
| 按秒计费 | 用量追踪 + 账单系统 |
| Flights(Agent 写 Pipeline) | Python 运行时 + LLM + DuckDB SQL |
| Dives(AI 仪表盘) | BI 层 + LLM + DuckDB |
| MCP Server | 把 DuckDB 操作暴露为 MCP 工具 |
| DuckLake 数据湖 | DuckDB 的 DuckLake 格式 |
| Read Scaling 副本 | 读写分离的多 DuckDB 实例 |
拆开看,每一层都有一个开源 DuckDB 等价物。
● ● ●
不用 MotherDuck 怎么做 Hypertenancy
MotherDuck 宣传最多的就是 Hypertenancy:每个用户一个 Duckling 实例,完全隔离。
你用 DuckDB 怎么做?Quack 协议。
DuckDB 1.5 开始内置了 Quack——一个 HTTP 协议,让远程客户端像连 PostgreSQL 一样连 DuckDB。架构长这样:
用户A → Quack Server A (duckdb user_a.db) ← 独立计算 用户B → Quack Server B (duckdb user_b.db) ← 独立计算 用户C → Quack Server C (duckdb user_c.db) ← 独立计算
每个用户启动一个 Quack 进程:
# 起一个 Quack server
(echo "LOAD quack; CALL quack_serve('quack:0.0.0.0:9494', token := 'user_a_token');" && cat) | \
duckdb /data/user_a.db > /dev/null 2>&1 &
客户端连过来:
LOAD quack; CREATE SECRET (TYPE QUACK, TOKEN 'user_a_token'); ATTACH 'quack:localhost:9494' AS remote; -- 现在所有查询跑在 user_a 的独立实例上
效果和 MotherDuck 的 Hypertenancy 一样:每个用户独立计算,谁的重查询都不影响别人。区别是,你不按秒付费。你付的是一台 VPS 的固定月费。
一台 $20/月的 8 核 VPS 能跑几十个 Quack 实例。MotherDuck 的 Standard 实例 $2.40/小时——跑满一个月要 $1,728。
● ● ●
不用 MotherDuck 怎么做 Agentic 查询
MotherDuck 的叙事里,AI Agent 需要独立计算实例,因为 Agent 会产生大量探索性查询。
DuckDB 本身就是 Agent 的理想搭档:
1. 内存模式,用完就扔
import duckdb
# Agent 启动一个新会话——零成本
conn = duckdb.connect(':memory:')
conn.execute("ATTACH '/data/shared.db' AS shared (READ_ONLY)")
conn.execute("CREATE TABLE temp_results AS SELECT * FROM shared.orders WHERE ...")
# Agent 随便折腾 temp_results
# 会话结束——内存释放,数据库毫发无损
Agent 的查询在内存里跑,主数据库设成只读,没法搞破坏。这比 MotherDuck 的 isolation 更彻底。MotherDuck 的 Duckling 至少还能写数据,Agent 搞坏了还得恢复。
2. MCP Server 直接用社区方案
MotherDuck 的 MCP Server 是最近刚推出的。DuckDB 社区早就有几个 MCP Server 实现,比如 duckdb-mcp-server。Agent 通过 MCP 直接发 SQL,DuckDB 执行——跟 MotherDuck 的体验一模一样。
3. 本地跑,延迟为零
MotherDuck 再快也是云服务,有网络延迟。Agent 的千次级迭代查询,每次多个几十毫秒,累积起来很明显。本地 DuckDB 没有这个问题。
● ● ●
不用 MotherDuck 怎么做 BI
Lightdash 本身就支持 DuckDB——它不是只支持 MotherDuck。
在 Lightdash 里选 DuckDB 作为 warehouse,填上数据库路径就行:
Settings → Connections → Add warehouse → DuckDB Database path: /data/analytics.db
然后指向你的 dbt 项目。整个链路是:
dbt models (YAML) → Lightdash → DuckDB 本地文件 → 仪表盘
不需要 MotherDuck。不需要云服务。不需要 token。一个 .db 文件就搞定。
如果你不用 Lightdash,Metabase 也支持 DuckDB——Driver 已经进了 Metabase 主线。Apache Superset 通过 SQLAlchemy 驱动也能连。
● ● ●
一张图说清楚
本质是一样的。上面那层花钱买运维,下面那层花时间换自由。
● ● ●
什么时候你确实需要 MotherDuck
不说「MotherDuck 是智商税」——它不是。它在以下场景有真实价值:
1. 你不想管服务器。 这是 MotherDuck 最核心的价值。Quack server 起停、监控、备份、升级——如果你团队没有运维人力,MotherDuck 省下的时间是实打实的。
2. 读负载需要弹性扩缩。 MotherDuck 的 Read Scaling 让你给 Duckling 挂读副本,高并发时自动分担。自己搞这个需要负载均衡 + 多副本同步,工程量不小。
3. 你的数据量超过单机承载。 DuckDB 是单节点列式引擎。MotherDuck 背后做了分布式查询的分片和调度(虽然细节不公开),纯自建 DuckDB 有单机瓶颈。
4. 你需要 SOC 2 / HIPAA 合规。 自己搭的数仓过合规审计,跟买一个过了审计的云服务,工作量差一个数量级。
● ● ●
但 99% 的团队不需要
大部分说「我们需要 MotherDuck」的团队,实际需求是:
- 一个能跑 SQL 的分析数据库(DuckDB 能做)
- 不想被 Snowflake 的账单吓到(DuckDB 免费)
- 让 BI 工具(Lightdash/Metabase)连上(DuckDB 支持)
- 给 AI Agent 一个查询入口(DuckDB + MCP 能做)
这四个需求,DuckDB 全包了。一分钱不用花。
Lightdash + DuckDB(开源)的组合,跟 Lightdash + MotherDuck(付费)的组合,对 90% 的查询来说体验是一样的——因为底层都是 DuckDB 引擎。SQL 兼容性一样,性能一样,dbt 对接一样。
换个说法就是:你付不付钱。
● ● ●
我的建议
如果你的团队已经有运维能力(哪怕只是一个会写 Dockerfile 的人),直接用 DuckDB。起一个 Quack server 花不了 10 分钟。把省下来的 MotherDuck 账单($1,728/月起)拿去干别的。
如果你不想碰服务器,MotherDuck 是 DuckDB 生态里最好的托管方案——但记住,你买的不是新能力,是运维便利。
DuckDB 已经够好了。MotherDuck 只是让它更容易用。