Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Why DuckDB

Why DuckDB

作者头像
披头
发布于 2024-11-21 03:23:09
发布于 2024-11-21 03:23:09
1720
举报
文章被收录于专栏: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)。这些工作负载的特点是巨大而复杂、运行时间相对较长。例如对整个表的聚合或多个大表之间的连接。

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

可扩展

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

免费

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

测试完备

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
远离硅谷、不靠风投!18人团队逆势搞出超人气数据库,CTO 一人5年多写了15万行代码
有一个数据库项目,每月下载次数高达数百万,仅扩展的下载流量每天就超过 4 TB 。在 GitHub 和社交媒体平台上,该数据库拥有数以万计的 Stars 和粉丝,还拥有两家以其为业务核心建立的初创公司。
深度学习与Python
2024/06/17
1680
远离硅谷、不靠风投!18人团队逆势搞出超人气数据库,CTO 一人5年多写了15万行代码
基于本地文件系统的列式数据库-DuckDB
这两天发现了一款有趣的数据库DuckDB,它的设计思路来源于sqlite,但是与sqlite不同的是,sqlite是行式数据库,而DuckDB是列式数据库。除此以外,两者非常相似:两个都是基于本地文件系统设计的,都有着完整的数据库体系(客户端、SQL解析器、SQL优化器和存储引擎等等),安装和使用都非常方便。在一些数据分析场景下,比如临时跑个数,不想安装MySQL或者分布式数据库等,应该大有可为。下面基于DuckDB的官方文档和相关博客,做一些简单介绍。
哒呵呵
2019/11/06
3.6K0
开放表格式的历史和演变 - 第一部分
如果在过去几年中一直在关注数据工程领域的趋势,那么肯定已经听说过很多关于 Open Table Formats 和 Data Lakehouse 的信息。
ApacheHudi
2024/11/23
1470
开放表格式的历史和演变 - 第一部分
SQLite vs MySQL vs PostgreSQL:关系型数据库比较
自1970年埃德加·科德提出关系模型之后,关系型数据库便开始出现,经过了40多年的演化,如今的关系型数据库种类繁多,功能强大,使用广泛。面对如此之多的关系型数据库,我们应该如何权衡找出适合自己应用场景的数据库系统呢?O.S. Tezer最近在DigitalOcean上发表了一篇博文,对比了SQLite、MySQL和PostgreSQL这三个常用的、流行的关系型数据库管理系统(RDBMS),希望能对你有所帮助。 O.S. Tezer分别从数据库支持的数据类型、优势、劣势、何时应该使用以及何时不应该使用该数据库
张善友
2018/01/29
4.4K0
利用DuckDB集成释放Postgres的分析能力
Postgres 生态系统正在蓬勃发展,使其成为 开发人员的首选 用于新的数据工作负载和数据库工具。关于 “为什么 Postgres 正在获胜” 已经有很多文章,并且有很多充分的理由——包括其可扩展性——使 Postgres 能够随着需求的出现而扩展到新的用例,例如 pg vector 能够满足各种 AI 需求。
云云众生s
2024/07/25
6220
《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端
千年虫,又叫做“计算机2000年问题”“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K]”。是指在某些使用了计算机程序的智能系统包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃。因此从根本上说千年虫是一种程序处理日期上的bug(计算机程序故障),而非病毒。
Arya
2024/08/02
2600
《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端
DuckDB:适用于非大数据的进程内Python分析
DuckDB 是一款进程内分析数据库,它可以在无需维护分布式多服务器系统的情况下处理出人意料的大型数据集。最棒的是什么?您可以直接从 Python 应用程序分析数据。
云云众生s
2024/06/03
2.2K0
什么情况,一夜之间冲上热搜,狂揽29.6k星,再见吧SQLite!这个嵌入式分析引擎实在太香了
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
小华同学ai
2025/05/29
2370
什么情况,一夜之间冲上热搜,狂揽29.6k星,再见吧SQLite!这个嵌入式分析引擎实在太香了
1 分钟安装 DuckDB
DuckDB 的安装过程可以说非常简单,一般情况下,1 分钟即可搞定,与其他数据库几个小时的安装过程相比,简直不要太爽,今天咱们就来看看具体怎么安装。
披头
2024/11/21
8810
1 分钟安装 DuckDB
LLM辅助的从Postgres到SQLite和DuckDB的翻译
Jon Udell 考虑 SQLite 和 DuckDB 是否可以在 LLM 助理团队的帮助下成为 Postgres 的分析替代方案。
云云众生s
2024/09/19
3010
LLM辅助的从Postgres到SQLite和DuckDB的翻译
适用在区级政府网站的轻量级关系型数据库管理系统
MySQL是一个关系型数据库管理系统,目前最流行的关系型数据库管理系统之一,在 WEB 应用方面,它是最好的应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
用户1120383
2024/06/28
750
esProc SPL vs DuckDB:多源数据处理谁更胜一筹?
DuckDB 和 esProc SPL 都支持多样数据源处理,这里比较一下两者的差异。
朱迪
2025/03/14
1110
MySQL基础『数据库基础』
我们可以直接把数据存放到文件中,这样也能保证数据长期存储,那为什么还要搞一个 数据库 呢?
北 海
2023/11/06
2380
MySQL基础『数据库基础』
MySQL数据库基础教程(一)-简介
1970 年 IBM 的 E.F. Codd 博士发表了论文《A Relational Model of Data for Large Shared Data Banks》
JavaEdge
2020/05/27
6120
MySQL数据库基础教程(一)-简介
一篇文章教会你什么是 MySQL,它的特点和学习要求
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它的产生距今已有六十多年。随着信息技术和市场的发展,数据库变得无处不在:它在电子商务、银行系统等众多领域都被广泛使用,且成为其系统的重要组成部分。
松鼠爱吃饼干
2021/03/16
7450
第一章《初识数据库》
(1)什么是数据库: 硬盘—管理软件 数据库(DataBase、DB)是一个长期存储在计算机内、有组织的、有共享的、统一管理的数据集合。他简而言之就是一个存储数据的仓库。为了方便数据的存储和管理,他将数据按照特定的规律存储在硬盘上,通过数据库管理系统,可以有效的组织和管理存储再数据库中的数据。 我们也可以说数据库是由一批数据库的有序集合,这些数据被存放在结构化的数据表里。数据表之间相互关联、反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。 2.数据库系统: 数据库系统由3部分组成: (1)数据库:用于存储数据的地方 (2)数据库管理系统:用于管理数据的软件 (3)数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据的软件补充;
全栈程序员站长
2021/06/08
3300
第一章《初识数据库》
数据库(认识MySQL)
MySQL是一个关系型的数据库管理系统,由MySQL AB公司开发,目前属于Oracle公司。
全栈开发日记
2022/05/12
4150
matinal:高质量内存数据库技术选型推荐(一)
一、什么是内存数据库 传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。     近年来,内存容量不断提高,价格不断下跌,操作系统已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。     在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。
matinal
2023/11/22
1.6K0
简述Python特点_python优缺点
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/29
6490
数据库基础
-h指明登录部署了mysql服务的主机 -P指明我们要访问的端口号 -u指明登录用户 -p指明需要输入的密码
南桥
2024/07/26
790
数据库基础
相关推荐
远离硅谷、不靠风投!18人团队逆势搞出超人气数据库,CTO 一人5年多写了15万行代码
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档