暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
DuckDB
编辑
简介:DuckDB 是一个进程内SQL OLAP数据库管理系统,旨在实现高效的数据分析,2019年开源。它易于安装,运行速度非常快,并且可以在正在运行的进程中运行。目前,DuckDB 每周下载约 100.000 次。
简介:DuckDB 是一个进程内SQL OLAP数据库管理系统,旨在实现高效的数据分析,2019年开源。它易于安装,运行速度非常快,并且可以在正在运行的进程中运行。目前,DuckDB 每周下载约 100.000 次。
产品概览 用户评价

目录

产品简介

DuckDB 是一个进程内SQL OLAP数据库管理系统,旨在实现高效的数据分析,2019年开源。它易于安装,运行速度非常快,并且可以在正在运行的进程中运行。目前,DuckDB 每周下载约 100.000 次。

产品功能

DuckDB 的主要功能是:

  • 安装简单
  • 嵌入式:无服务器管理
  • 单文件存储格式
  • 快速分析处理
  • R/Python 和 RDBMS 之间的快速传输
  • 不依赖任何外部状态。例如,单独的配置文件,环境变量。
  • 单文件存储格式
  • 可组合的界面。程序化 Fluent SQL API
  • 通过 MVCC 完全 ACID

产品优势

  • 简单
    进程内,无服务器
    C++11,无依赖,单文件构建
    适用于 Python/R/Java/…的 API
  • 功能丰富
    事务,持久性
    广泛的 SQL 支持
    直接 Parquet 和 CSV 查询
  • 快速
    矢量化引擎
    针对分析进行了优化
    并行查询处理
  • 免费
    免费和开源
    许可 MIT 许可证

DuckDB 应用场景

  • 处理和存储表格数据集,例如来自 CSV 或 Parquet 文件
  • 交互式数据分析,例如连接和聚合多个大表
  • 并发大更改,对多个大表,例如追加行,添加/删除/更新列
  • 大型结果集传输到客户端

DuckDB 的模块介绍

  • SQL Parser

DuckDB 的 SQL parser是从 Postgres 的 libpg_query [5]精简而来的。由于 Postgres 是 C 语言写的,通过这个 SQL parser,我们会得到一个 C 语言结构体表示的 parse tree。DuckDB 会将其转换成自己内部的 C++ 对象。

  • Logical Planner

Logical planner 由 binder 和 plan generator 两部分组成。Binder 将 parse tree 与 schema 的信息(列名、类型等)绑定起来。Schema 信息保存在 catalog。Plan generator 将 parse tree 转换成一颗逻辑查询操作符(scan, filter, project 等)树。

  • Optimizer

DuckDB 实现了基于规则(rule-based)和基于代价(cost-based)的优化器。Optimizer的主要任务是优化 SQL,它将前面 logical planner 生成的 logical plan 转换成一个等价但执行代价更小的 logical plan。常见的优化方式有谓词下推(predicate pushdown)、表达式重写(expression rewriting)、调整 join 顺序(join ordering)等。

  • Physical Planner 和 Execution Engine

Physical planner 和 execution engine 的代码都在 execution目录下。Physical planner 将 Logical plan 转换成 physical plan。Physical plan 是一个真正可以执行的物理计划。DuckDB 实现了一个向量化(vectorized)的解释型执行引擎。向量化可以利用 CPU 提供的 SIMD 指令加速计算。DuckDB 采用 SQL 的解释执行,而没有采用 SQL 的编译执行,原因是编译执行需要依赖编译组件,比如 LLVM,这会导致 DuckDB 的体积膨胀不少。

  • Transaction and Concurrency Control

DuckDB 支持 Serializable 的事务隔离。事务相关的代码在 transaction 目录下。

  • Storage

Storage 是 DuckDB 的列式存储引擎,处于整个 DuckDB 架构的最底层,负责提供数据的高效读写。

所属公司

CWI 研究人员 Hannes Mühleisen 和 Mark Raasveldt 创立了衍生公司 DuckDB Labs,为 DuckDB 提供服务和开发。2019 年,Centrum Wiskunde & Informatica (CWI) 数据库架构研究小组的研究人员 Hannes Mühleisen 和 Mark Raasveldt 发布了他们的数据库管理系统 DuckDB 的第一个开源版本。

相关资料

DuckDB官网: https://duckdb.org/
DuckDB github 开源地址:https://github.com/duckdb/

用户评价

0
0
词条统计
创建者:小芳
编辑次数:3
浏览次数:9548
API调用次数:0
贡献者