一、 什么是ClickHouse?
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)——开源的!。ClickHouse最初是一款名为Yandex.Metrica(俄罗斯最大的搜索引擎公司)的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。
![ae8815adfaef9fc7f15ae9da77d4e52e.png](https://i-blog.csdnimg.cn/blog_migrate/54e7a46947867c1b457c58433cce94ff.jpeg)
二、为啥要搞ClickHouse呢? 搞数据分析,人家就是快!!!
2.1 ClickHouse 是列式数据库(具体原理请看下图)
列存储索引主要在下面三个特性上提升查询的性能:
- 行存储使用逐行处理模式,每次只处理一行数据;而列存储索引使用批处理模式,每次处理一批数据行。
- 行存储是逐行存储(Row Store),每一个Page存储多行数据,而列存储(Column Store)把数据表中的每一列单独存储在Page集合中,这意味着,Page集合中存储的是某一列的数据,而不是一行中所有列的数据。在读取数据时,行存储把一行的所有列都加载到内存,即使有些列根本不会用到;而列存储只把需要的列加载到内存中,不需要的列不会被加载到内存中。
- 列存储索引自动对数据进行压缩处理,由于同一行的数据具有很高的相似性,压缩率很高,数据读取更快速。
![02b11bc3f57229f562ae0e5ba723fd8b.gif](https://i-blog.csdnimg.cn/blog_migrate/ee0d9365504bab2a1fc585c945e0a23b.gif)
行式数据库
![ed204837bc0b459dec8302a74335d1ab.gif](https://i-blog.csdnimg.cn/blog_migrate/ce39d8b520bf42e6251363f542d4dfb4.gif)
列式数据库
2.2 ClickHouse 是性价比最高的列式数据库
![2e4beb6dd54cb0b35e885c887e27c703.png](https://i-blog.csdnimg.cn/blog_migrate/82041490a22a45ffd38ff12c65d21cd1.jpeg)
上图列举了包含count、sum、group by、order by等情况的查询对比,同等条件下,ClickHouse的查询性能异常强悍:
是MySQL的839倍
是Greenplum的24倍
是Vertica的5倍
三、ClickHouse的基本尝试——Docker 安装 + Dbeaver客户端使用
3.1 ClickHouse 的Docker 安装
首先,创建Docker挂载目录
mkdir /data/clickhouse
然后,直接在命令行执行(Docker 的安装,请执行百度~):
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -p 9000:9000 -p 8123:8123 --volume=/data/clickhouse:/var/lib/clickhouse yandex/clickhouse-server
备注:/data/clickhouse挂载/var/lib/clickhouse
3.2 Clickhouse Dbweaver客户端的使用
直接到官网下载:https://dbeaver.io/download/
3.3 Clickhouse Python 程序的控制
首先,安装python对应的包
pip3 install --timeout 1000 clickhouse_driver
然后,通过Python实现增加,删除,修改,以及查询的功能
from clickhouse_driver import Client
client = Client('localhost')
res = client.execute('SHOW DATABASES')
print(res)