一、 什么是ClickHouse?

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)——开源的!。ClickHouse最初是一款名为Yandex.Metrica(俄罗斯最大的搜索引擎公司)的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。

ae8815adfaef9fc7f15ae9da77d4e52e.png

二、为啥要搞ClickHouse呢? 搞数据分析,人家就是快!!!

2.1 ClickHouse 是列式数据库(具体原理请看下图)

列存储索引主要在下面三个特性上提升查询的性能:

  • 行存储使用逐行处理模式,每次只处理一行数据;而列存储索引使用批处理模式,每次处理一批数据行。
  • 行存储是逐行存储(Row Store),每一个Page存储多行数据,而列存储(Column Store)把数据表中的每一列单独存储在Page集合中,这意味着,Page集合中存储的是某一列的数据,而不是一行中所有列的数据。在读取数据时,行存储把一行的所有列都加载到内存,即使有些列根本不会用到;而列存储只把需要的列加载到内存中,不需要的列不会被加载到内存中。
  • 列存储索引自动对数据进行压缩处理,由于同一行的数据具有很高的相似性,压缩率很高,数据读取更快速。
02b11bc3f57229f562ae0e5ba723fd8b.gif

行式数据库

ed204837bc0b459dec8302a74335d1ab.gif

列式数据库

2.2 ClickHouse 是性价比最高的列式数据库

2e4beb6dd54cb0b35e885c887e27c703.png

上图列举了包含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)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐