案例库 · 软件与 IT · 产品决策 · 2018–2019
DuckDB:将分析型数据库嵌入你的进程,无需服务器
CWI 构建了一个列式、向量化的 SQL 引擎,像 SQLite 一样嵌入,却像数据仓库一样分析,并以 MIT 许可发布。
DuckDB (CWI)
那一手
SQLite 证明了进程内数据管理是大多数开发者想要的,已有超过一万亿个数据库在使用,但其逐行处理、B-tree 引擎在分析查询上表现不佳。没有人构建过可嵌入的分析引擎,因此分析工作负载需要搭建单独的数据库服务器,并通过其客户端协议连接。
阿姆斯特丹 CWI 的研究人员构建了 DuckDB 来填补这一空白:一个分析型数据库,像库一样链接到宿主进程,列式存储数据,并使用向量化引擎执行查询,每次操作处理一批值而不是逐行处理。它以宽松的 MIT 许可开源发布。
2019 年 SIGMOD 演示将这种方法与嵌入式分析场景中的其他系统进行了对比。该设计面向交互式分析、运行复杂查询的 R 和 Python 用户,以及边缘计算,即必须在设备上分析数据而不是发送到中央服务器。
为什么管用
- 无服务器意味着用户无需安装、配置或维护
- 嵌入消除了复制,因此查询就地运行于数据
- 向量化执行大幅减少每值的 CPU 开销
- 列式存储适合扫描大块数据的分析工作负载
值了多少嵌入引擎;消除服务器往返聪明
可以搬走什么
选择用户想要的部署形态:当设置摩擦阻碍采用时,将引擎嵌入他们已有的工具,而不是推销独立服务器。
后来呢
DuckDB 从一个研究演示成长为最广泛使用的嵌入式分析工具之一:项目网站报告无外部依赖,支持所有主流操作系统和架构,从边缘设备到多 TB 服务器,提供 Python、R、Java、Node.js 等 API,拥有庞大的扩展生态,GitHub 星标约 40000 个,知识产权由 DuckDB 基金会持有。
资料来源
发现哪里写错了?告诉我们。