DuckDB 是一款开源的列式关系数据库管理系统 (RDBMS),由荷兰 Centrum Wiskunde & Informatica (CWI) 的 Mark Raasveldt 和 Hannes Mühleisen 开发,于 2019 年首次发布。
DuckDB 的设计目标是快速、可靠、可移植且易于使用。它提供了一套丰富的 SQL 方言,支持远超基本 SQL 的功能。
DuckDB 的特点
高性能: DuckDB 采用列式存储引擎,并支持并行执行,因此能够以极快的速度处理分析查询,即使是处理超过内存大小的数据集也能够游刃有余。
易于使用: DuckDB 提供了标准的 SQL 语法,使其易于学习和使用。即使是 SQL 初学者也能快速上手。
可移植: DuckDB 没有任何外部依赖项,只需要 C++11 编译器即可构建,因此具有很强的可移植性。它可以在各种操作系统和平台上运行,包括 Linux、macOS、Windows、Android 和 iOS。
可靠: DuckDB 经过严格的测试,并得到社区的广泛支持,因此非常可靠。
写入数据表
代码
library(duckdb)
library(dplyr)
con_duck <- DBI::dbConnect(duckdb(), path = ":memory:")
# # 将数据存在数据库文件(只读,共享不进程)
# con <- dbConnect(duckdb(), dbdir = "my-db.duckdb", read_only = FALSE)
# # 进程共享
# con <- dbConnect(duckdb(), dbdir = "my-db.duckdb", read_only = TRUE)
dbiris <- copy_to(con_duck, iris, overwrite = TRUE)
代码
Displaying records 1 - 10
5.1 |
3.5 |
1.4 |
0.2 |
setosa |
4.9 |
3.0 |
1.4 |
0.2 |
setosa |
4.7 |
3.2 |
1.3 |
0.2 |
setosa |
4.6 |
3.1 |
1.5 |
0.2 |
setosa |
5.0 |
3.6 |
1.4 |
0.2 |
setosa |
5.4 |
3.9 |
1.7 |
0.4 |
setosa |
4.6 |
3.4 |
1.4 |
0.3 |
setosa |
5.0 |
3.4 |
1.5 |
0.2 |
setosa |
4.4 |
2.9 |
1.4 |
0.2 |
setosa |
4.9 |
3.1 |
1.5 |
0.1 |
setosa |
数据操作
在R中,duckdb
同时支持sql
语法查询与dplyr
语法查询
数据查询
代码
select t.Species,max(t."Sepal.Length") SepalLengthMax
from iris t
group by t.Species
3 records
setosa |
5.8 |
versicolor |
7.0 |
virginica |
7.9 |
代码
dbiris %>%
group_by(Species) %>%
summarise(Sepal.Length.MAX = max(Sepal.Length)) %>%
as_tibble()
# A tibble: 3 × 2
Species Sepal.Length.MAX
<fct> <dbl>
1 setosa 5.8
2 versicolor 7
3 virginica 7.9
回到顶部