DuckDB 1.5 介绍与选型指南

介绍 DuckDB v1.5.6 嵌入式分析型数据库:进程内架构、列存向量化执行、扩展体系、文件直查与多语言接入,并对比 SQLite、Polars、ClickHouse 给出选型建议

DuckDB嵌入式数据库数据库2026/10/18

DuckDB 1.5 介绍与选型指南

一、信息基准

本文为 DuckDB 的认知篇(软件介绍与选型指南),全部信息基于官方渠道溯源,查询日期为 2026-10-18,未做任何本地安装与实测。

信息项内容
查询日期2026-10-18
最新稳定版v1.5.6(2026-09-28 发布,Bugfix Release;1.5.x 线代号 Variegata)
上一稳定版v1.5.5(2026-07-22 发布,Bugfix Release)
开源许可MIT(版权方 Stichting DuckDB Foundation)
官网https://duckdb.org
源码仓库https://github.com/duckdb/duckdb
版本依据GitHub releases.atom 订阅源实查(v1.5.6、v1.5.5 均为官方发布记录)

官方来源清单:

来源链接用途
GitHub releases.atomhttps://github.com/duckdb/duckdb/releases.atom版本号与发布日期溯源
官网文档https://duckdb.org/docs/功能、安装与快速上手口径
许可文件https://github.com/duckdb/duckdb/blob/main/LICENSEMIT 许可原文
官方 GitHub 主页https://github.com/duckdb/duckdbstars 数据(2026-10-18 实查 42.2k)

二、软件概述

本文介绍的是 DuckDB v1.5.6(2026-09-28 发布)。DuckDB 是一款进程内嵌入式分析型数据库(in-process OLAP database),由荷兰 CWI 研究所的数据系统研究团队孵化,现由 Stichting DuckDB Foundation(荷兰基金会)维护,主仓库以 MIT 许可开源。

DuckDB 的定位与 SQLite 类似——都是"无需独立服务端、随应用进程启动"的嵌入式数据库;区别在于 DuckDB 面向分析型负载(OLAP):采用列式存储与向量化执行引擎,擅长对本地文件(CSV、Parquet、JSON)与大规模数据集做聚合、扫描和复杂查询。它既可以通过命令行工具直接执行 SQL,也可以作为 Python、R、Java、Node.js 等语言运行环境中的"内存分析库"嵌入使用。

截至查询日,DuckDB GitHub stars 为 42.2k(官方主页实查),是数据工程与数据科学领域活跃度最高的开源项目之一。版本节奏上,1.5.x 线自 v1.5.5(2026-07-22)至 v1.5.6(2026-09-28)持续以月度级 Bugfix Release 推进,官方同时维护旧版本的修复分支。

三、核心架构

3.1 进程内嵌入与单文件存储

DuckDB 没有守护进程,也不需要客户端/服务端网络通信:它以库的形式链接进宿主进程,直接在进程内完成解析、执行与存储。数据库落盘为单个文件(默认 .duckdb 后缀),由其自研的存储格式管理,支持事务(ACID)。这一设计带来两个直接好处:零部署成本(拷贝文件即迁移),以及与宿主应用同生命周期(无额外运维对象)。

3.2 列式存储与向量化执行

与面向行存 OLTP 的 SQLite 不同,DuckDB 采用列式布局与向量化(vectorized)执行引擎:数据按列组织,算子以批次(向量)为单位处理,CPU 缓存友好并便于利用现代处理器的并行能力。官方文档将其概括为"为分析查询而生"的执行模型,适合聚合、扫描、多表 join 等典型 OLAP 操作,不适合高频单行点写的交易型负载。

3.3 扩展体系

DuckDB 通过扩展(extensions)按需加载能力,常见官方扩展包括:

  • httpfs:直接读写 HTTP 与对象存储(如 S3 兼容服务)上的远程文件;
  • parquet:Parquet 文件的读写支持;
  • json:JSON 的解析与查询;
  • spatial:地理空间类型与函数;
  • fts:全文检索。

扩展可在运行时通过 SQL(INSTALL/LOAD 语句)安装加载,官方提供静态分发与自动加载机制。

3.4 多语言接入与客户端 API

官方维护的客户端覆盖:Python、R、Java(JDBC)、Node.js、Rust、C/C++、Go、ODBC 驱动以及命令行工具 duckdb。Python API 支持与 Pandas、Apache Arrow、Polars 等数据结构零拷贝互操作(官方文档口径),这是其在数据科学工作流中普及的重要原因。

四、功能特性

4.1 SQL 能力

DuckDB 提供完整的 SQL 支持,方言接近 PostgreSQL:窗口函数、公共表表达式(CTE)、GROUP BY 分组集、UNPIVOT/PIVOT、ASOF JOIN、SAMPLE 采样等分析型语法均可用(官方 SQL 参考文档口径)。对熟悉 PostgreSQL 的使用者而言迁移成本很低。

4.2 直接查询文件

无需先导入即可查询本地或远程数据文件,是 DuckDB 最具辨识度的能力:

  • read_csv_auto():自动推断结构的 CSV 读取;
  • read_parquet():查询 Parquet 文件(可配合 httpfs 直接查询对象存储地址);
  • read_json():查询 JSON/NDJSON。

配合 httpfs 扩展,官方文档演示了直接对 S3 兼容端点上的 Parquet 执行 SQL 的用法,适合"存算分离、临时分析"的场景。

4.3 与数据科学生态互操作

Python 端可将查询结果直接转为 Pandas DataFrame、Polars DataFrame 或 Arrow 表,也可反向把 DataFrame 注册为可查询的视图(duckdb.sql() 对 DataFrame 直接写表名查询),官方文档称之为"零数据拷贝"的数据交换。

4.4 并行与持久化

DuckDB 支持多线程并行执行(threads 参数可调)与磁盘溢写(内存不足时使用临时目录),单文件数据库支持并发读与单写者模型,官方文档明确了"多读单写"的并发边界。

五、快速上手

以下最小示例均引自官方文档(安装页与入门指南),本文未做本地实测。

安装(官方安装页 https://duckdb.org/docs/installation/ ):

# 命令行工具与嵌入式库均可按官方安装页提供的包管理器/直链安装
pip install duckdb

命令行最小示例(官方文档入门页):

-- 启动 duckdb 后直接执行
SELECT 42;
SELECT count(*) FROM read_csv_auto('data.csv');
SELECT * FROM read_parquet('input.parquet') LIMIT 5;

Python 最小示例(官方 README 标准示例):

import duckdb
duckdb.sql("SELECT 42").show()

官方来源:https://duckdb.org/docs/installation/ 、https://github.com/duckdb/duckdb(README)、https://duckdb.org/docs/guides/

六、适用场景与限制

6.1 适用场景

  • 本地与单机数据分析:数据科学、报表原型、Ad-hoc 查询,直接分析 CSV/Parquet/JSON 文件;
  • 嵌入式分析:把分析能力内嵌进桌面应用、后端服务或 ETL 脚本,无需独立数据库服务;
  • 数据湖文件查询:配合 httpfs 直接对对象存储上的 Parquet 文件执行 SQL,替代临时搭建的查询服务;
  • 中小规模数据仓库原型:列存 + 向量化 + SQL,用于在正式数仓方案落地前验证数据模型。

6.2 限制与注意点

  • 并发模型为多读单写:不适合多实例并发写入同一个数据库文件的场景(官方文档口径),高并发写入应使用服务端数据库;
  • OLTP 负载不适合:高频小事务、行级点查点写不是其设计目标;
  • 无内建分布式:单机定位,跨节点扩展需借助外部方案(如把 DuckDB 作为 Parquet 查询引擎组合使用);
  • 生态以分析场景为主:如需全文检索、图查询等非 OLAP 能力,依赖扩展的成熟度,选型前应逐项确认。

七、同类选型对比

对比对象选取本地分析/嵌入式与轻量 OLAP 赛道中活跃度最高的三个开源项目:SQLite、Polars、ClickHouse。stars 与最近发版均为 2026-10-18 联网实查,来源标注在表后。

维度DuckDBSQLitePolarsClickHouse
开源许可MIT公有领域(Public Domain)MITApache-2.0
GitHub stars42.2k官方未公布(官方源码托管于 Fossil,GitHub 仅为只读同步副本)40.1k50.5k
最近发版v1.5.6(2026-09-28)按官网源码发布(无 GitHub 官方 release 页)Python Polars 2.0.0(2026-10-06)v26.7.34.3-stable(2026-10-18)
版本节奏minor 约季度推进、bugfix 月度级(releases 实查)官方 Fossil 仓库按周期合并发布迭代活跃,大版本快速演进滚动 stable + LTS 双轨,发版频繁
存储模型列存、单文件、进程内行存、单文件、进程内DataFrame 库(非数据库)列存、服务端分布式
兼容矩阵Linux/macOS/Windows,x86_64/ARM64;Python/R/Java/Node.js/Rust/Go/C/C++/ODBC/CLI几乎所有平台与语言(C API 为核心)Rust 核心 + Python/Node.js/R 等绑定Linux/macOS/Windows 服务端;HTTP/原生协议客户端

数据来源:GitHub releases.atom 与仓库主页(2026-10-18 实查);SQLite stars 因官方不使用 GitHub 而如实标注"官方未公布";ClickHouse、Polars 版本取自各自官方 release 记录。

选型建议:需要"零运维、随进程启动"的单机分析数据库首选 DuckDB;面向交易型单机存储选 SQLite;数据管道中的 DataFrame 计算选 Polars;多用户、大规模、需要分布式与高并发的服务端分析选 ClickHouse。

八、参考链接

  1. 官网:https://duckdb.org
  2. 官方文档:https://duckdb.org/docs/
  3. 安装指南:https://duckdb.org/docs/installation/
  4. 源码仓库:https://github.com/duckdb/duckdb
  5. 版本发布记录:https://github.com/duckdb/duckdb/releases.atom
  6. 许可文件(MIT):https://github.com/duckdb/duckdb/blob/main/LICENSE
  7. 扩展列表:https://duckdb.org/docs/stable/extensions/