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