DuckDB - 一款嵌入式关系型 OLAP 数据库管理系统

作者: 不剪发的Tony老师
毕业于北京航空航天大学,十多年数据库管理与开发经验,目前在一家全球性的金融公司从事数据库架构设计。CSDN学院签约讲师以及GitChat专栏作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net


文章目录

            DuckDB 简介
            安装指南
                Python 中安装 DuckDB
                R 中安装 DuckDB
                源码安装
            相关链接

DuckDB 简介

DuckDB 是一款嵌入式数据库,主要用于嵌入其他程序执行快速的 SQL 分析查询,官方称其为“分析型数据库中的 SQLite”。DuckDB 易于安装和使用,没有外部依赖,同时提供了 C/C++、Python 以及 R 的语言绑定。

DuckDB 由荷兰 Centrum Wiskunde & Informatica 的数据库架构组开发,他们还开发了 MonetDB(一款开源的列式存储数据库)。DuckDB 采用 MIT 开源协议,并且在 GitHub 上开放了源代码。DuckDB 于 2019 年 6 月 27日首次发布了官方的 0.1 发布版。
安装指南
Python 中安装 DuckDB

使用以下命令在 Python 中安装 DuckDB,目前支持 Python 3:

pip install duckdb



在 Python 中使用 DuckDB 需要安装numpy。完成安装之后,可以按照以下方式使用 DuckDB:

import duckdb
cursor = duckdb.connect(':memory:').cursor()
print(cursor.execute('SELECT 42').fetchall())


R 中安装 DuckDB

使用以下命令在 R 环境中安装 DuckDB:

remotes::install_github("cwida/duckdb/tools/rpkg", build = FALSE)


在 R 中使用 DuckDB 需要安装remotes。如果使用 Windows,还需要安装Rtools。完成安装之后,可以按照以下方式使用 DuckDB:

library("DBI")
con <- dbConnect(duckdb::duckdb(), ":memory:")
dbWriteTable(con, "iris", iris)
dbGetQuery(con, 'SELECT "Species", MIN("Sepal.Width") FROM iris GROUP BY "Species"')

    

源码安装

DuckDB 源码可以在 GitHub 上进行下载。DuckDB 安装需要使用 CMake 以及可以兼容 C++11 的编译器。每次官方修订都会针对 GCC 4.9 及更高版本、Clang 3.9 及更高版本以及 VisualStudio 2017 进行测试。

编译

在代码根目录下运行make进行编译。对于开发者,使用make debug构建一个非优化的调试版本。你可以在每次修改之后运行make unit和make allunit进行验证。

对于不支持 GNU Make 的系统,例如 Windows,可以直接使用CMake为编译器或者 IDE(例如 Visual Studio) 生成项目文件。

使用

DuckDB 提供乐意一个基于 sqlite3 的命令行工具。对于发布版(默认),该工具位于 build/release/tools/shell/shell;对于调试版,位于 build/debug/tools/shell/shell。

嵌入应用

DuckDB 是一款嵌入式数据库,不需要启动数据库服务器,也不需要使用客户端连接服务器。不过,可以使用 C 或 C++ 绑定将数据库服务器直接嵌入应用程序。主构建程序将会创建共享链接库 build/release/src/libduckdb.[so|dylib|dll],同时也会创建一个静态链接库。

代码库中的 examples 目录给出了一些如何在应用程序中嵌入 DuckDB 的示例。