① 标题党#
主标题:DuckDB 的文件怎么这么小?压缩也有方法论
备选A:数据没少,占用却少一大截,DuckDB 存盘有讲究
备选B(短视频):小文件,装大智慧
② 开场钩子#
我导了 100 万行数据进 DuckDB,存盘一看,文件小得不像话。数据没丢,却省了这么多——它压缩有一套。
③ 主角特性:压缩 / 列式存储收益#
- 列式存储把同类型数据放一起 → 高重复度 → 压缩率极高。
- 支持多种压缩(ZSTD 等),配合字典/游程编码,数字和枚举类列压缩尤其夸张。
- 查询时对压缩数据尽量”不解压就过滤”,省 IO 又省 CPU。
意义:分析查询吞吐翻倍 + 磁盘占用腰斩。受限环境/磁盘紧张时,DuckDB 是救星。
④ 最小可复现#
CREATE TABLE t AS SELECT i % 100 AS kind, i FROM range(1000000) t(i);
COPY t TO 't.parquet'; -- 高重复列压缩惊人
-- 对比:同样数据行式存 vs 列式压缩后的大小sql⑤ 结论#
DuckDB 文件小,不是偷数据,是把”重复”压缩到位。磁盘受限时,这种空间魔法尤其珍贵。
⑥ 配图脚本#
列式压缩示意 / 压缩前后大小对比 / 丢数据/原数据对比 / 结论卡
系列总览(全部完成)#
| # | 标题党主题 | 细粒度特性 |
|---|---|---|
| 01 | 快得离谱 | 列存 + 向量化 |
| 02 | 一个文件一个库 | 嵌入式 / 单文件 |
| 03 | 连 CPU 缓存都算计 | 缓存局部性 / 批处理 |
| 04 | 一张 SQL 查遍所有库 | 联邦查询 / attach |
| 05 | 脏乱差也能存 | VARIANT 半结构化 |
| 06 | 库不够用自己加轮子 | 扩展机制 / TableFunction |
| 07 | CONNECT 革别人命 | DuckDB as Server / Quack |
| 08 | 空间魔法 | 压缩 / 列式收益 |
每篇含:标题党(3版) + 30s 钩子 + 主角特性 + 最小可复现 SQL + 结论金句 + 5 帧配图脚本。 素材多来自你做 DuckDB 的真实经历(联邦查询、http-json 扩展、v2.0 畅想)——第 4/6/7 篇是你自己的实证。