DuckDB - 嵌入式分析型数据库 - 使用初探

DuckDB

Duck是什么?DuckDB is a fast in-process analytical database。

DuckDB 是一个主要用于分析的DBMS数据库,支持丰富的SQ。借鉴SQLite的成功经验,使用C++开发,设计的非常轻量级,就一个二进制文件没有其他依赖(压缩后仅8M大小),但性能可不小。

1. 安装DuckDB

DuckDB 可直接嵌入到主流编程语言中,提供 Python、R、Java、Node.js 、Go、C++等依赖库。

也提供cli命令行工具,直接在Windows、Linux、macOS 系统中运行。下载后就一个二进制文件,不需要安装直接运行,没有其他依赖使用非常方便。

2. 使用DuckDB

为了方便演示我们直接使用命令行方式运行DuckDB

./duckdb

Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.

执行 duckdb 命令,数据库就运行起来了。注意没有其他后台服务,不用像MySQL等需要区分server和client。

duckdb 支持内存运行模式,和持久化两种模式。默认就是内存模式,退出进程后数据就没了哈。持久化需要指定数据文件路径。

3. 查询测试

DuckDB 支持从CSV、JSON、parquet中导入数据,也可通过HTTP、S3远程导入。还提供各种插件直连MySQL、Iceberg、PostgreSQL 等导入。这点和 clickhouse 一样,非常人性化方便。

这里我们使用CSV,导入GitHub数据,共8百万条数据。不到1秒就完成数据导入和查询了,非常牛逼。

SELECT COUNT(*) FROM gharchive.csv.gz

注意这里导入的文件使用了gzip压缩文件,DuckDB 能自动帮我们解压非常方便。

最后DuckDB仓库地址,https://github.com/duckdb/duckdb