---
url: /duckdb/introduction.md
description: DuckDB是一个快速的、in-process的OLAP数据库，底层采用列式存储。
---

# 认识DuckDB

* Github近20万Stars
* 下载次数每月达百万
* 扩展的下载流量每天超4TB
* 大小只有50MB
* 仅有18人的团队
* 诞生只有短短五年
* 即将发布第一个大版本1.0.0

这极具矛盾的数据背后就是我们今天的主角——DuckDB。

## 前言

早就想要写一写DuckDB了，如果非要给这个早加一个时间，我希望是五年前（那个时候DuckDB才刚刚起步）。

最初接触DuckDB只是把它当成嵌入式数据库SQLite的替代品，并且自认为SQLite经过这么多年的打磨与验证，现在就是无可替代般的存在（无知是阻碍我们进步的最大敌人）。然而当我一步步开始深入了解DuckDB的时候，我几乎是笑着完成，它完全颠覆了我对一个小小的数据库的认知。

> 一切都不晚，一切都刚刚好！

## DuckDB是什么

DuckDB是一个快速的、in-process的OLAP数据库，底层采用列式存储。

![](/img/c45cc8e2-48f7-4b8b-9a7f-ada9cd1e4702.png)

> 名字的由来：创建者认为鸭子具有很强的适应能力，可以依靠任何东西生存，这与他们设想的数据库系统运行方式类似，所以被命名为DuckDB。

DuckDB的创建者们设想打造一套分析数据库，其性能与F1赛车相当，但用户友好度却向丰田卡罗拉看齐。

另外，当如今的大数据数据库都在采用分布式架构，标榜TB乃至PB级的数据处理规模时，DuckDB则站在了对立面，认为99%的用户远远达不到“大数据”的体量。

“这有个烦人的文件，我想读取他的内容并执行一些聚合操作。”不知道多少人问过这个问题。现在想想每次都把一个上百M的CSV文件上传到数仓后才能看看里面有什么是多么的笨拙。然而这样的尴尬局面都会因为DuckDB而戛然而止。

## DuckDB的特点

* 免费、开源
* 嵌入式，不需要服务器，使用超级方便
* 忠于传统 SQL
* 采用列式存储（用于高效聚合）及向量化处理（用于提高性能）功能
* 具有丰富的功能集，支持完整的标准SQL、事务、二级索引
* 支持Python、R、Java、Node.js等编程语言
* 扩展机制灵活，可以直接读取CSV、JSON、Parquet等文件
* 专门针对数据分析和OLAP（在线分析处理）而设计

![](/img/ddffaa8a-b21b-4d1b-90f6-49ee54f60266.png)

## DuckDB初体验

本文采用Windows系统。

1. 下载DuckDB并解压

下载地址`https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-windows-amd64.zip`

解压后

![](/img/e189ddaf-db73-44c7-928a-143748569c37.png)

2. 双击启动

![](/img/63194b79-f82a-47bd-a263-bd423a98a29a.png)

至此，你就可以使用DuckDB了。没错，你没有看错，就是这么极致的丝滑。

3. 使用`.help`查看帮助命令

![](/img/7fed4560-fdf0-4bea-ae7a-85468a85c3cf.png)

4. 对本地CSV文件计数

![](/img/d608703b-8f72-4b9b-b15f-0f9282128676.png)

63w+的数据量，只是一瞬间。

不能再演示了，我怕你激动、兴奋的跳起来。

## 进阶

DuckDB让你心动了吗？如果你想要学习数据分析，你不再需要学习安装Mysql，不再需要学习Python，只需要动动手，立马就可以开始。

关注：遇码，回复**duckdb**，获取官方文档。
