当前位置: 首页 > 软件库 > 企业应用 > BI商业智能 >

DuckDB

可嵌入的SQL OLAP数据库管理系统
授权协议 MIT
开发语言 C/C++ Python JavaScript
所属分类 企业应用、 BI商业智能
软件类型 开源软件
地区 不详
投 递 者 淳于慎之
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DuckDB,是一个可嵌入的 SQL OLAP 数据库管理系统。

因为 DuckDB 是一个嵌入式数据库,所以没有要启动的数据库服务器或连接到正在运行的服务器的客户端。但是,可以使用 C 或 C++ 绑定将数据库服务器直接嵌入到应用程序中。

DuckDB 是在 C++11 中实现的,应该用 GCC 和 clang 编译,使用 CMake 构建和 Catch 2 进行测试。此外,还可以使用 Jenkins 作为 CI 平台,DuckDB 也使用了各种开源数据库中的一些组件。

特点

  • 语法解析:使用 PostgreSQL 解析器,该解析器被重新打包为独立库
  • shell:对 SQLite shell 进行了调整,以使用 DuckDB
  • 测试:使用 SQLite 中的 SQL 逻辑测试来测试 DuckDB
  • 模糊查询:使用 SQLsmith 生成随机查询以进行额外的测试
  • Date Math:使用 MonetDB 中的 Date Math 组件
  • SQL 窗口函数:DuckDB 的窗口函数实现使用分段树聚合,如 Viktor Leis、KanKundhikanjana、Alfons Kemper 和 Thomas Neumann
  • 执行引擎:矢量化执行引擎的灵感来源于 PeterBoncz、Marcin Zukowski 和 Niels nes 的论文 “MonetDB/X 100:超级流水线查询执行”
  • 优化器:DuckDB 的优化器从 Guido Moerkotte 和 Thomas Neumman 的论文 “动态规划回击” 以及 Thomas Neumann 和 Alfons Kemper 的“取消任意查询嵌套”中获得灵感
  • 并发控制:我们的 MVCC 实现灵感来自于 Thomas Neumann,Tobias Mühlbauer 和 Alfons Kemper 的论文“用于主存数据库系统的快速序列化多版本并发控制”
  • 存储:DuckDB 使用 DataBlock 作为持久存储,如 Harald lang、Tobias Mühlbauer、Florian Funke、Peter Boncz、Thomas Neumann 和 Alfons Kemper 在“数据块:利用矢量化和编译的压缩存储上的混合 OLTP和OLAP” 中描述的那样
  • 正则表达式:DuckDB 使用 Google 的 RE2 正则表达式引擎
  • 文章目录             DuckDB 简介             安装指南                 Python 中安装 DuckDB                 R 中安装 DuckDB                 源码安装             相关链接 DuckDB 简介 DuckDB 是一款嵌入式数据库,主要用于嵌入其他程序执行快速的 SQL 分析查询,官方称

  • 摘要: duckdb的物理计划的执行的架构设计很出色, 每个物理计划的算子可以多线程并行的处理. 处于核心地位的便是Pipeline和TaskSchedule, 可以将其理解为多线程模型中的生产者与消费者模式, 但是和物理计划执行组合起来, 就能体会到这样设计的简洁和优雅. 参考: https://www.youtube.com/watch?v=MA0OsvYFGrc https://dsdsd.

  • 背景 duckdb 是一个 C++ 编写的单机版嵌入式分析型数据库。它刚开源的时候是对标 SQLite 的列存数据库,并提供与 SQLite 一样的易用性,编译成一个头文件和一个 cpp 文件就可以在程序中使用,甚至提供与 SQLite 兼容的接口,因此受到了很多人的关注。 本文介绍笔者近期开发的 duckdb-rs 库,让大家可以很方便地在 rust 代码库中使用 duckdb 的功能。 lib

  • 1. 背景 DuckDB 是我非常喜欢的一个数据库,它基于 libpg_query 实现了 SQL Parser,语法和 PostgreSQL 一致,内嵌 SQLite 的 REPL CLI,编译好后可直接运行 CLI 交互式输入 SQL 得到结果。架构简单、分析性能优秀、代码干净好读,极易上手。 10 月初偶然间翻看 duckdb 的代码,发现他的执行引擎和计算调度采用了类似 Hyper 在《M

  •   摘要: duckdb的查询计划倒是很复合教科书的定义, 先将ANSI SQL转换成查询树, 生成逻辑查询计划. 然后将逻辑查询计划的节点转换成物理计划的节点. 相比于mysql的没有清晰划分的逻辑计划和物理计划, 所有操作都是对着转换后的查询树节点处理,看起来清晰了很多. 本文对逻辑计划和物理计划做一些分析. 会涉及到基于规则的优化,但是不涉及基于代价的优化.基于代价的优化随后单独分析.  

  • 摘要: duckdb是一个非常精简的OLAP的SQL实现,非常适合研究查询计划, 本文记录将duckdb的逻辑计转换为自己的物理 计划. duckdb说明: https://duckdb.org/docs/ https://github.com/duckdb/duckdb 代码实现: https://github.com/adofsauron/duckdb-dev/blob/main/trunk/

  • 摘要: duckdb对于物理计划的执行采用了并行处理, 对pipeline的处理很值得学习. 本文以聚合为例进行分析 DML: 表结构: use memory; create table b(b1 int, b2 varchar(2), primary key(b1)) ; create table a(a1 int, a2 varchar(2), foreign key(a1) refe

  • import duckdb if __name__ == '__main__': con = duckdb.connect(database=':memory:') con.execute("CREATE TABLE items(item VARCHAR, value DECIMAL(10,2), count INTEGER)") con.execute("INSERT

 相关资料
  • 本文向大家介绍数据库管理系统的优势,包括了数据库管理系统的优势的使用技巧和注意事项,需要的朋友参考一下 数据库管理系统(DBMS)定义为允许用户定义,创建,维护和控制对数据库访问的软件系统。DBMS使最终用户可以创建,读取,更新和删除数据库中的数据。它是程序和数据之间的一层。 与基于文件的数据管理系统相比,数据库管理系统具有许多优势。这些优点中的一些在下面给出- 减少数据冗余 基于文件的数据管理系

  • 主要内容:什么是数据库,数据库管理系统,DBMS的特征,DBMS的优点,DBMS的缺点,学习前提条件,面向读者,问题反馈DBMS教程提供了数据库的基本和高级概念。 我们的DBMS教程专为初学者和专业人士设计。数据库管理系统是用于管理数据库的软件。 DBMS教程包括DBMS的所有主题,如介绍,ER模型,键,关系模型,连接操作,SQL,函数依赖,事务,并发控制等。 什么是数据库 数据库是相互关联数据的集合,用于有效地检索,插入和删除数据。 它还用于以表格,模式,视图和报告等形式组织数据。 例如: 学

  • 本文向大家介绍数据库管理系统的局限性,包括了数据库管理系统的局限性的使用技巧和注意事项,需要的朋友参考一下 与基于文件的管理系统相比,数据库管理系统非常有用。但是,它确实有一些缺点。其中一些如下- 更昂贵 创建和管理数据库的成本很高。数据库需要昂贵的软件和硬件。还需要训练有素的人员来处理数据库,并且数据库也需要连续维护。所有这些最终使数据库成为一项相当昂贵的冒险。 高复杂度 数据库管理系统非常复杂

  • 1.5.1. 什么是MaxDB? 1.5.2. MaxDB的历史 1.5.3. MaxDB的特性 1.5.4. 许可和支持 1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 MaxDB是一种大型高效的企业数据库。数据库管理通过了SAP认证。 MaxDB是数据库管理系统的新名称,以前称为SAP DB。2003年

  • 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业

  • 本文向大家介绍常见的关系型数据库管理系统产品有?相关面试题,主要包含被问及常见的关系型数据库管理系统产品有?时的应答技巧和注意事项,需要的朋友参考一下 答:Oracle、SQL Server、MySQL、Sybase、DB2、Access等。

  • 我是wordpress的新手,在管理数据库方面有困难。我已经安装了“管理员”插件来管理数据库。我已经创建了一个名为“usersupp_admin”的新表。现在我还创建了一个自定义模板,该模板将使用PDO语句连接到此数据库,现在的问题是在哪里可以获取主机、数据库名、用户和密码?以下是代码: 任何帮助都将不胜感激。

  • 一、事务 概念 ACID AUTOCOMMIT 二、并发一致性问题 丢失修改 读脏数据 不可重复读 幻影读 三、封锁 封锁粒度 封锁类型 封锁协议 MySQL 隐式与显示锁定 四、隔离级别 未提交读(READ UNCOMMITTED) 提交读(READ COMMITTED) 可重复读(REPEATABLE READ) 可串行化(SERIALIZABLE) 五、多版本并发控制 基本思想 版本号 Un