面向 Python 开发者的 DuckDB 内部结构解析

发布日期:2026-05-17 10:00:24   浏览量 :4
发布日期:2026-05-17 10:00:24  
4

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

简介 - 无需服务器的 SQL

Pandas 广泛用于数据分析,几乎每位数据分析师甚至数据工程师都利用它通过称为“数据框”的类表格数据结构进行更快的分析。其缺点在于,一旦数据量超过几 GB,其性能就会下降,而为快速分析启动 Postgres 或 Redshift 又显得过于繁重。DuckDB 通过零配置的列式 SQL 填补了这一空白。

入门指南 - 零配置,即时强大

DuckDB 是一个开源的联机分析处理数据库管理系统,专为分析设计,并可在与应用程序相同的进程中运行。
它轻量级,可以直接处理 CSV、Parquet 等格式的数据文件,无需服务器。

安装与首次查询

pip install duckdb - 无需开放端口,无需配置,无后台守护进程

内存数据库与持久化数据库 - 两种运行模式

内存模式

当创建 DuckDB 连接时未指定文件,数据库将完全驻留在随机存取存储器中。

import duckdb
con = duckdb.connect()          # 或 duckdb.connect(':memory:')
  • 所有数据存储在随机存取存储器中,不会向磁盘写入任何文件
  • 由于没有输入/输出开销,读取/写入速度极快。
  • 连接关闭时,数据将完全丢失。
  • 不存在文件锁定或并发问题

持久化模式

当用户提供位置时,DuckDB 可以将结果以 .duckdb 格式写入磁盘。

con = duckdb.connect('my_database.duckdb')
  • 表、模式和索引会被持久化保存。
  • 使用带有压缩和缓冲输入/输出的列式存储格式
  • 同一时间仅允许一个写入连接,但允许多个读取连接。
  • 支持预写日志以实现崩溃恢复

强大模式

DuckDB 允许混合使用这两种模式,用户可以从内存模式开始,附加一个持久化数据库,或使用 复制/导出 将内存中的结果快照保存到磁盘。

con = duckdb.connect()

# 查询 CSV 文件,转换数据,将结果保存到持久化文件中
con.execute("""
    COPY(SELECT region, SUM(sales) AS total FROM read_csv('data.csv')
         GROUP BY region
     )
    TO 'results.parquet' (FORMAT PARQUET)
""")

用户既能获得加速流水线处理的内存处理速度,又拥有持久化保存的选项。

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部