DuckDB:跑在你笔记本里的数据仓库

> 来源: https://duckdb.org/ | GitHub

> 日期: 2026-04-03

> 类型: 数据库 / 分析引擎 / 开发者工具

> 最新版本: v1.5.1 (2026-03-23)

🎯 一句话版本

DuckDB 是"数据分析界的 SQLite"——一个嵌入在你程序里的超快 SQL 数据库,不需要装服务器,一行命令安装,直接查 CSV/Parquet/JSON 文件,10GB 数据秒出结果。

为什么 DuckDB 重要?

它解决了什么问题?

在 DuckDB 之前,如果你想对一堆 CSV 文件跑 SQL 分析,你的选择是:

1. 导入 PostgreSQL/MySQL → 安装数据库、建表、导入数据、写 SQL、跑查询(半小时起步)

2. 用 Pandas → 写 Python 代码加载数据、写复杂的 DataFrame 操作(慢,吃内存)

3. 上 BigQuery/Snowflake → 注册账号、配置凭证、上传数据、按量付费

DuckDB 的回答是:


pip install duckdb

import duckdb
duckdb.sql("SELECT * FROM 'sales.csv' WHERE revenue > 10000").show()

完了。 不需要安装数据库服务器,不需要建表,不需要导入数据。DuckDB 直接读文件,在进程内跑 SQL,返回结果。

起源:荷兰数学中心的学术项目

DuckDB 由 Mark RaasveldtHannes Mühleisen 在荷兰 Centrum Wiskunde & Informatica (CWI) 开发。CWI 是 Python 的诞生地,也是 MonetDB(列式数据库鼻祖)的发源地。

时间线:

年份事件
2018项目启动(CWI 内部)
2019首个开源版本发布,SIGMOD 2019 Demo Paper
2021成立 DuckDB Labs(商业公司),月下载量突破百万
2023MotherDuck(云端 DuckDB)融资 $1 亿,估值 $4 亿
2024v1.0.0 发布(代号 SnowDuck),生产级稳定版
2025v1.3 重写 Parquet 引擎,v1.4 成为 LTS
2026v1.5 发布(VARIANT 类型、新 CLI、DuckLake),月下载 600 万+,v2.0 计划中

DuckDB Labs 拒绝了 VC 融资,创始人说:"投资会逼我们走向商业化,我们更想让 DuckDB 对所有人开放。" 这在 2026 年的 AI/Data 赛道极为罕见。

技术架构

核心设计哲学

DuckDB 的设计哲学可以用一句话概括:"SQLite 做 OLTP,DuckDB 做 OLAP"


┌─────────────────────────────────────┐
│         你的应用程序 / Python        │
│                                     │
│  ┌───────────────────────────────┐  │
│  │        DuckDB 引擎            │  │
│  │                               │  │
│  │  SQL 解析器 (pg_query)        │  │
│  │  ↓                            │  │
│  │  查询优化器 (Cost-based)      │  │
│  │  ↓                            │  │
│  │  向量化执行引擎               │  │
│  │  (MonetDB/X100 inspired)     │  │
│  │  ↓                            │  │
│  │  列式存储 + 压缩              │  │
│  └───────────────────────────────┘  │
│                                     │
│  直接读取:                          │
│  CSV / Parquet / JSON / S3 / HTTP  │
└─────────────────────────────────────┘

关键技术特性

1. 嵌入式运行(In-Process)

DuckDB 不是一个独立的服务器进程。它作为一个嵌入到宿主程序中运行,就像 SQLite 一样。这意味着:

2. 列式向量化执行

传统数据库(PostgreSQL、MySQL)逐行处理数据。DuckDB 使用列式向量化执行:

3. 零配置文件读取


-- 直接查 CSV(自动检测格式、列名、类型)
SELECT * FROM 'data.csv';

-- 直接查 Parquet(支持通配符)
SELECT * FROM 'logs/*.parquet';

-- 直接查远程文件
SELECT * FROM 'https://example.com/data.csv';

-- 直接查 S3
SELECT * FROM 's3://my-bucket/data.parquet';

DuckDB 自动推断文件格式、列名、数据类型,不需要预先定义 schema。

4. 无依赖编译

DuckDB 的完整源码可以编译成两个文件(一个 .h 头文件 + 一个 .cpp 实现文件),称为"amalgamation"。只需要 C++17 编译器,没有任何外部依赖。这使得它可以嵌入到几乎任何环境。

扩展系统

DuckDB 通过插件系统支持大量功能扩展:

扩展功能
httpfsHTTP/HTTPS/S3 远程文件读取
spatial地理空间函数(ST_* 系列)
icebergApache Iceberg 表读写
deltaDelta Lake 表读写
ducklakeDuckDB 自研 Lakehouse 格式
postgres直连 PostgreSQL 查询
mysql直连 MySQL 查询
sqlite读写 SQLite 数据库
jsonJSON 数据处理
parquetParquet 读写(核心扩展)

v1.5.0 "Variegata"(2026-03-09)亮点

全新 CLI

DuckDB 1.5 重写了命令行客户端:

VARIANT 类型

借鉴 Snowflake 的半结构化数据类型,同一列可以存不同类型:


CREATE TABLE events (id INTEGER, data VARIANT);
INSERT INTO events VALUES
    (1, 42::VARIANT),
    (2, 'hello'::VARIANT),
    (3, [1, 2, 3]::VARIANT),
    (4, {'name': 'Alice', 'age': 30}::VARIANT);

每行自带类型信息,比 JSON 更高效(二进制存储 vs 文本存储)。

DuckLake

DuckDB 自研的 Lakehouse 格式,元数据存在 SQL 数据库中(而非 JSON 文件),支持:

v1.0 计划 2026 年发布。

生态与社区

客户端 API

Python、Go、Java、Node.js、C、C++、R、Rust、Julia、Swift、ODBC、WebAssembly — 几乎覆盖所有主流语言

AI Agent 集成

DuckDB 官方发布了 duckdb-skillsClaude Code 的官方插件

这意味着 DuckDB 官方已经在为 AI Agent 时代做准备

用户

Facebook、Google、Airbnb,以及无数的数据团队、独立开发者、研究人员。

商业生态

性能:DuckDB vs 其他方案

单机分析场景(DuckDB 的主场)

场景DuckDBPostgreSQLPandasClickHouse
1GB CSV 聚合~1s~10s~5s~1s
10GB Parquet JOIN~8s~60s+OOM~5s
100GB 扫描~45s不适用不可能~20s
安装时间3 秒15 分钟3 秒10 分钟
并发查询⚠️ 单写多读✅ 优秀✅ 优秀
分布式❌ 单机❌ 单机❌ 单机✅ 集群

DuckDB 的甜蜜区:单机、10MB-100GB 数据、分析查询、嵌入式场景。

DuckDB 不适合:高并发 OLTP、分布式大集群、TB 级实时数据。

关键 benchmark 发现

与我们的关联

为什么 DuckDB 对我们有用?

1. Agent 数据分析基础设施

ub2 服务器(i9-13900K, 64GB RAM)+ DuckDB 可以让 AI Agent 直接对本地数据跑 SQL:

- 把研究报告、抓取数据结构化为 Parquet 文件

- Agent 收到分析请求 → 生成 SQL → DuckDB 执行 → 返回结果

- 比 Modolap 的 DataFusion 方案更成熟、更简单

2. DuckDB Skills 参考设计

官方的 Claude Code Skills 提供了现成的 Agent 集成模板

- 文件读取 + SQL 查询 + 文档搜索的组合

- 状态文件 (state.sql) 实现跨会话持久化

- 我们可以移植到 OpenClaw Skill 体系

3. DuckLake 方向值得关注

DuckDB 在造自己的 Lakehouse 格式(DuckLake),如果 v1.0 稳定,我们可以用它做:

- 研究数据的版本管理(时间旅行)

- 多源数据的统一查询

- ACID 事务保证

具体可以做什么?


# Step 1: 在 ub2 上安装
pip install duckdb

# Step 2: 准备数据目录
mkdir -p /mnt/sda/data

# Step 3: 让 Agent 直接查询
python3 -c "
import duckdb
result = duckdb.sql(\"\"\"
    SELECT title, score, time
    FROM read_parquet('/mnt/sda/data/hn_posts.parquet')
    WHERE title ILIKE '%ai agent%'
    ORDER BY score DESC
    LIMIT 20
\"\"\")
print(result.show())
"

评分

维度分数说明
技术创新9/10列式向量化 + 嵌入式 + 零配置,开创新品类
工程质量10/10百万级测试用例,7年稳定迭代,学术严谨+工程扎实
实用性9/10pip install 到跑查询 3 秒,人人可用
生态成熟度9/1015+ 语言 API,30+ 社区扩展,官方 AI Skill
商业可持续性8/10DuckDB Labs 不接 VC 是双刃剑,但基金会保障开源
与我们的相关性8/10Agent OLAP 完美选择,但我们目前数据量有限
**综合****9.0/10**

关键链接

> 一句话总结:DuckDB 是 2026 年数据分析最重要的基础设施之一。它用 SQLite 的简洁哲学解决了 OLAP 分析的复杂性问题,从学术项目做到 600 万月下载,而创始人拒绝 VC 保持开源。如果你需要给 AI Agent 加数据分析能力,DuckDB 是目前最优解。