目录

IT审计可以扔掉mysql了,新神器duckdb来临!

一个朋友给我推荐了一个数据 duckdb 让我去试用下。

我试用后,感觉作为平时在本地进行数据分析的 IT 审计来说,完全可以丢掉mysql,sqlserver这些数据库了。

先说下 duckdb 的优势:

  1. 不需要安装服务器端。类似 sqllite 将数据存储在文件中,不需要安装服务器端。
  2. 列式数据库。 mysql 是行式数据库,而 duckdb 和 clickhouse 一样是列式数据库,且运行时调用所有 CPU 计算性能能比 mysql 快上百倍。
  3. 大数据量。平时我们使用自己笔记本(一般轻薄本),如果使用 mysql 基本上上千万行就有点处理慢了。而 duckdb 我测试了下 8 亿行数据也在 20 秒内反应出来。
  4. 导数方便并快速。
  5. 使用 sql 语句。你会 sql 语句,就可以马上上手,基本上没有太大的迁移成本。
  6. 全平台。支持windows,linux,mac。
  7. 开源免费。
  8. 可以和 python 等编程语言无缝结合。

我使用了下,感觉非常智能、强大、粗暴。

后面我可能会写一系列教程来介绍它,让大家目前还在用 mysql 的朋友可以无成本迁移到 duckdb 上来。我觉得这是值得的。

这里我先简单给大家说明下有多简单。

图形化管理工具

使用 mysql 的朋友可能一般都会用 navicat 等图形化管理工具。 duckdb 我们可以使用 dbeaver 图形化管理工具,它是开源免费的。

安装好后 dbeaver 后,新建一个连接,选择 duckdb ,点击 next 。

要知道 duckdb 不需要安装服务器端,只需要创建一个文件,我们输入一个文件名。点击下Test Connection将会自动安装对应驱动。

安装好驱动后,直接 Finish.

这就安装好了!安装好了!

我相信安装过mysql+navicat或者 sqlserver的人应该能体会到,这个安装有多简单!

导入数据

很多人在使用 mysql 的时候觉得使用 navicat 导入向导比较方便,主要是这可以省去建表的时间,但当你用导入向导的时候速度非常慢。

比如我这里有个销售订单的 csv 文件,一共2.6G。我只需要写语句:

create table 销售订单  as select * from read_csv_auto('/home/nigo/销售订单.csv')

一共花费 46 秒。

虽然这导入数据速度比 clickhouse 要慢不少,但比 mysql 不知道快了多少倍。

我经常看到同事导一个几 G 的数据用 navicat 导入向导在那里傻等着,估计半个小时往上。

你双击下刚新建的表,可以看到每个字段都按最合适的数据类型给创建好了,这不比自己写建表语句香么?

这也太智能了。

处理数据量

我相信大部分用自己笔记本运行 mysql 做数据分析的,最多也就处理个千万行。

并且当千万行的时候,笔记本很可能跑不出来了。

那么 duckdb 可以跑多少数据量呢?

前面我用 clickhouse 在2019年产的 5000 块的联系小新pro 笔记本上跑过 8 亿行数据。

今天,我们也直接上 8 亿数据。

但是这个数据量,我用 dbeaver 跑的时候直接崩溃。不过这不是 duckdb 的问题,而是 dbeaver 的问题。

我直接使用 pyhton 跑。

我们先跑个总的数据量:

一共8.9亿行数据,跑出来花了0.45秒。

再来按一个字段聚合求和,花了12.72秒。我试过相同数据,在 clickhouse 上跑要 16 秒,居然比 clickhouse 还快,有点离谱。

结语

以上功能,我感觉无论哪个方面都可以吊打 mysql 了。

从方便程度和全平台支持角度,也可以吊打 clickhosue 了。

尤其是对我们这种在自己笔记本本地跑数据的人来说,很适用了。

我今天粗略看了下官方文档,感觉到它更强大的是和 python 的无缝链接,以及一些特殊但非常实用的独特函数。

如果有机会,我后面会出系列教程。

感觉我们部门所有人都可以抛弃 mysql 了。

官方网站:https://duckdb.org/