当前位置: 首页 > news >正文

DuckDB:轻量级 OLAP 数据库的新星

1. 分钟级上手

一个像 SQLite 一样简单、却能跑得像 ClickHouse 一样快的分析引擎。
而且——你今天就能用上。

如果你经常在 Jupyter Notebook 里等 Pandas 加载数据,或者写一堆 Python 循环做聚合,那 DuckDB 很可能就是你要找的那个“省事又快”的工具。

它不是玩具,也不是又一个要你运维的数据库。它是专为现代数据分析工作流设计的嵌入式查询引擎——开箱即用,无需配置,单文件运行,速度还快得离谱。

更棒的是:几分钟就能让它跑起来。


2. DuckDB 到底是什么?

简单说:DuckDB 是一个嵌入式的分析型数据库(OLAP)

  • 嵌入式:不需要启动服务,直接 import duckdb 就能用(就像 SQLite)。
  • 列式存储 + 向量化执行:数据按列存,计算一批一批来,充分利用 CPU,速度飞快。
  • 单机运行:目前不搞分布式(但有云版 MotherDuck),对 GB 级本地分析完全够用。
  • 支持 SQL:标准 ANSI SQL + 扩展函数(窗口函数、近似统计、JSON 处理等)。

官网一句话说得特别准:

“DuckDB is to analytical data processing what SQLite is to transactional data processing.”
—— duckdb.org

翻译:DuckDB 之于分析处理,正如 SQLite 之于事务处理。


二、它和我熟悉的工具比,强在哪?

工具

适合干啥

DuckDB 能替代吗?

Pandas

小数据探索、快速原型

大部分场景可以,而且更快、内存更省

SQLite

存配置、缓存、小应用数据

别混用!SQLite 是行式 OLTP,DuckDB 是列式 OLAP

PostgreSQL

Web 后端、通用数据库

不是同类,但可用作分析加速层

ClickHouse

TB 级日志分析

单机场景下,DuckDB 性能惊人接近

举个真实例子:
你有一个 5GB 的 Parquet 文件,在 Pandas 里读进来可能卡半天,还吃掉 10GB 内存。
换成 DuckDB,不仅快,内存占用还低得多——因为它只读需要的列,而且边读边算。

import duckdb
result = duckdb.sql("""SELECT user_id, COUNT(*) FROM 'logs.parquet' WHERE event = 'click'GROUP BY user_id
""").df()

 

3. 在 Mac 上怎么装?超简单!

3.1. 本地直接安装

brew install duckdb
==> Fetching downloads for: duckdb
✔︎ Bottle duckdb (1.4.2)                           [Downloaded   45.8MB/ 45.8MB]
==> Pouring duckdb-1.4.2.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/duckdb/1.4.2: 1,308 files, 179.5MB

duckdb # 启动内存数据库 或者duckdb mydb.duckdb
DuckDB v1.4.2 (Andium) 68d7555f68
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D

其他命令参考:https://duckdb.org/docs/stable/clients/cli/overview

或者直接手动安装

curl https://install.duckdb.org | sh

3.2. 你在用 Python?

直接 pip 装:

python3 -m venv venv
➜  try source venv/bin/activate
(venv) ➜  try pip install duckdb
Collecting duckdbDownloading duckdb-1.4.2-cp313-cp313-macosx_11_0_arm64.whl.metadata (4.3 kB)
Downloading duckdb-1.4.2-cp313-cp313-macosx_11_0_arm64.whl (13.7 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.7/13.7 MB 3.0 MB/s  0:00:04
Installing collected packages: duckdb
Successfully installed duckdb-1.4.2

(venv) ➜ try python3
Python 3.9.6 (default, Nov 11 2024, 03:15:38)
[Clang 16.0.0 (clang-1600.0.26.6)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import duckdb
>>> duckdb.sql("SELECT 'Hello from DuckDB!' as msg, 42 * 2 as answer")
┌────────────────────┬────────┐
│ msg │ answer │
│ varchar │ int32 │
├────────────────────┼────────┤
│ Hello from DuckDB! │ 84 │
└────────────────────┴────────┘

全程不到一分钟,连虚拟环境都不用退出。


4. 它到底有多方便?看这些例子

直接查文件,不用导入!

DuckDB 内置支持多种格式,开箱即用:

-- 查 CSV
SELECT * FROM 'data.csv' LIMIT 5;

-- 查 Parquet(列裁剪自动生效)
SELECT user_id, event_time FROM 'events.parquet' WHERE type = 'login';

-- 查 JSONL
SELECT * FROM read_json_auto('logs.jsonl');

甚至能查远程文件(需启用扩展):

import duckdb
duckdb.sql("INSTALL httpfs; LOAD httpfs;")
df = duckdb.sql("SELECT * FROM 'https://example.com/data.parquet' LIMIT 3").df()

导出结果?一行搞定

在 CLI 里:

.output report.csv
SELECT region, SUM(sales) FROM 'sales.parquet' GROUP BY region;

不用写 to_csv(),也不用手动复制粘贴。


五、最新亮点:DuckDB 1.4.2 LTS(2025 年发布)

2025 年 9 月发布的 1.4.2 LTS 是当前最稳定的长期支持版本,重点更新:

  • 原生 Delta Lake 支持(通过 delta_scan
  • 更强的 JSON 处理json_extract_string(payload, '$.user.id')
  • Parquet 写入更快、压缩更好
  • 完整窗口函数支持RANGE BETWEEN, EXCLUDE

官方公告 👉 https://duckdb.org/2025/11/12/announcing-duckdb-142

5. 动手试试吧!

找个你电脑上的数据文件(比如 data.csv),然后:

import duckdb
duckdb.sql("SELECT * FROM 'data.csv' LIMIT 5")

或者 CLI 里:

duckdb
> SELECT COUNT(*) FROM 'data.parquet';

你会发现:整个过程,比打开 Excel 还快。

 

参考链接

  • 官网:https://duckdb.org
  • GitHub:https://github.com/duckdb/duckdb
  • 安装指南:https://duckdb.org/docs/installation/
  • ClickBench database benchmark: https://duckdb.org/2025/10/09/benchmark-results-14-lts
  • 1.4.2 LTS 公告:https://duckdb.org/2025/09/10/announcing-duckdb-142.html
http://cdlyhr.com/news/31327/

相关文章:

  • 2025脱酸脱盐设备公司有哪些:物料脱盐服务商优选指南
  • 后来,他长大了
  • 2025最新云南短视频制作运营服务商权威推荐!资质服务双优企业榜单发布贤邦科技/云南爱冰等专业公司上榜
  • npm1300 工作模式介绍
  • 高精度三维扫描仪十大品牌综合实力榜:2025年权威选购指南
  • code-philosophy-chapter1-2
  • 【机翻】驱动逆向工程 101 - 第二部分:解包 VMProtected 内核驱动
  • 一物一码公司推荐:2025年六大专业厂家全新评测!
  • 完整教程:[RabbitMQ] 最新版本深度解析:4.0+ 新特性、性能飞跃与生产实践(2025 年更新)
  • React JSX 语法详解
  • 终曲:NOIP2025游记
  • 如何选择好的 GEO 服务商?2025年12月优质 GEO 服务商推荐
  • 2025年六角管片螺栓,螺纹管片螺栓,热镀锌管片螺栓厂家推荐:综合实力与工程适配性测评
  • 复杂业务逻辑的数据筛选:多维表格条件嵌套能力的技术解析
  • 使用 Masonry 实现两个不固定文字长度的 Label 在同一个 View 中,并让父视图自适应高度 iOS
  • DDD拼团系统常用设计模式
  • 2025美白护肤品用什么好?权威榜单请查收
  • 程序员处理需求变更的正确态度
  • 记录一次Oracle日志listener.log文件大小超过4G后出现Tomcat服务启动一直报错的原因【ORACLE】 - 指南
  • 2025年pcabs合金改性料品牌权威推荐榜单:pcabs合金改性/pcabs合金改性抽粒定做/pc改性专家精选
  • 2025年国内CTRM软件公司推荐榜单,国内有名的CTRM软
  • 擦擦视频去字幕水印」深度介绍:数字媒体领域的高效去水印解决方案
  • 2025年上海继承律师权威推荐榜单:房产律所/婚姻律所/离婚房产律所精选
  • 03-快速入门与环境配置
  • 2025年十大诚信且资质齐全的宅基地建房企业推荐,专业乡墅设
  • 如何被更新的?就是[人工智能-大模型-122]:模型层 - RNN是通过神经元还是通过张量时间记录状态信息?时间状态信息
  • 05-二次开发入门
  • Windows下的GDAL环境配置
  • 2025年知名的草鸡蛋品牌实力口碑榜
  • pytorch神经网络基础