一、 什麼是ClickHouse?
ClickHouse是一個用於聯機分析(OLAP)的列式資料庫管理系統(DBMS)——開源的!。ClickHouse最初是一款名為Yandex.Metrica(俄羅斯最大的搜尋引擎公司)的產品,主要用於WEB流量分析。ClickHouse的全稱是Click Stream,Data WareHouse,簡稱ClickHouse。
二、為啥要搞ClickHouse呢? 搞資料分析,人家就是快!!!2.1 ClickHouse 是列式資料庫(具體原理請看下圖)
列儲存索引主要在下面三個特性上提升查詢的效能:
行儲存使用逐行處理模式,每次只處理一行資料;而列儲存索引使用批處理模式,每次處理一批資料行。行儲存是逐行儲存(Row Store),每一個Page儲存多行資料,而列儲存(Column Store)把資料表中的每一列單獨儲存在Page集合中,這意味著,Page集合中儲存的是某一列的資料,而不是一行中所有列的資料。在讀取資料時,行儲存把一行的所有列都載入到記憶體,即使有些列根本不會用到;而列儲存只把需要的列載入到記憶體中,不需要的列不會被載入到記憶體中。列儲存索引自動對資料進行壓縮處理,由於同一行的資料具有很高的相似性,壓縮率很高,資料讀取更快速。行式資料庫
列式資料庫
2.2 ClickHouse 是價效比最高的列式資料庫
上圖列舉了包含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
from clickhouse_driver import Client
client = Client('localhost')
res = client.execute('SHOW DATABASES')
print(res)