① 标题党#
主标题:DuckDB 把整个数据库塞进一个文件?还跑得飞快
备选A:没有服务器、没有端口,一个文件就是你的数据湖
备选B(短视频):你的库,只有一个文件那么大
② 开场钩子#
传统数据库要有服务、有端口、要安装客户端。DuckDB 却告诉我:你要的库,备份一下就是一个文件。这背后是它”嵌入式”的野心。
③ 主角特性:嵌入式 / 单文件存储#
- 嵌入式:DuckDB 跑在你的进程里,不单独起服务,Python/Rust/Java 直接 import 调用,零部署。
- 单文件:整个库就是一个
.duckdb文件。拷走这个文件,你的数据就跟手走。 - 支持内存模式(
:memory:)临时分析 + 磁盘模式持久化。
取舍:单机嵌入式(无内置服务器、单写者)适合分析/开发/嵌入式产品,不适合高并发 OLTP——但它本就不打算干那个活。
④ 最小可复现#
# Python 里直接连一个文件库,不装服务
python3 -c "import duckdb; duckdb.sql('create table t as select 42 as x'); duckdb.sql('copy t to \"db.parquet\"')"
# db.parquet 拷走,数据跟手走bash⑤ 结论#
DuckDB 把”数据库”从”要伺候的服务”变成了”一个随取随用的文件”。嵌入式的爽,用过就回不去。
⑥ 配图脚本#
服务式 vs 嵌入式架构对比 / 单文件拖走示意 / 各语言 import / 结论卡