前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Why DuckDB

Why DuckDB

作者头像
披头
发布2024-11-21 11:23:09
发布2024-11-21 11:23:09
1120
举报
文章被收录于专栏:datartisandatartisan

目前世面上已经存在很多种数据库管理系统,但没有一种可以适合所有场景。数据库管理系统的选取应该基于其应用场景及其实施成本。

今天,我将尝试向你解释 DuckDB 的相关特性,以便你更好的了解它。如果有合适的场景,你可以试试它好不好用,话不多说,进入正题。

首先,DuckDB是一个表格导向的关系型数据库管理系统,支持结构化查询语言(SQL)。它还具有如下几个特点:

简单易用

SQLite 无疑是世界上部署最广泛的数据库管理系统。简单便捷的安装过程和嵌入式进程操作是其成功的关键所在。同样,DuckDB 也采纳了这些设计理念。

相比于其他数据库管理软件动辄几个小时的安装过程,DuckDB 能够在 一分钟 之内完成安装部署。

DuckDB 不作为单独的进程运行,而是完全嵌入在宿主进程中

DuckDB 可以不复制数据就处理外部数据。例如,DuckDB 的 Python 包可以直接在 Pandas 数据上运行查询,而无需导入或复制任何数据。

可移植性强

DuckDB 没有外部依赖。由于没有依赖,DuckDB 极具其可移植性。它可以为所有主要操作系统(Linux、macOS、Windows)和 CPU 架构(x86、ARM)编译。它可以在小的、资源受限的边缘设备部署,也可以在大型的多 TB 内存服务器部署,拥有 100+ CPU 核心。使用 DuckDB-Wasm,DuckDB 还可以在 Web 浏览器中运行,甚至在手机上运行。

DuckDB 为 Java、Python、C、C++、Go、Node.js 和其他语言提供 API。

功能丰富

DuckDB 提供了重要的数据管理功能。

  • 支持复杂的数据类型(数组、结构体等)
  • 支持复杂的查询(CTE、窗口函数等)
  • 支持 MVCC
  • 提供事务保证 ACID 属性
  • 与 Python、R 深度集成

快速分析查询

DuckDB 适用于在线分析处理场景(OLAP)。这些工作负载的特点是巨大而复杂、运行时间相对较长。例如对整个表的聚合或多个大表之间的连接。

不同于 PostgreSQL、MySQL 或 SQLite 等行式数据库,DuckDB 是列式数据库,通过列式向量化查询执行引擎来优化查询性能。性能上有数倍甚至数十倍的提升。

可扩展

DuckDB 提供了一个灵活的扩展机制,允许定义新的数据类型、函数、文件格式和新的 SQL 语法。实际上,DuckDB 的许多关键特性,如对 Parquet 文件格式、JSON、时区的支持,以及对 HTTP(S)和 S3 协议的支持,都是作为扩展实现的。

免费

DuckDB 遵循 MIT 许可证,你可以随意使用,而无需担心收到律师函。

测试完备

毫无疑问,DuckDB 进行了广泛的、持续的、密集的测试。你可以放心使用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学探究 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单易用
  • 可移植性强
  • 功能丰富
  • 快速分析查询
  • 可扩展
  • 免费
  • 测试完备
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档