ClickHouse提供了大量的數據引擎,分為數據庫引擎、表引擎,根據數據特點及使用場景選擇合適的引擎至關重要,這里根據資料做一些總結。
數據庫引擎官方文檔: https://clickhouse.tech/docs/en/engines/database-engines
數據庫引擎默認是Ordinary,在這種數據庫下面的表可以是任意類型引擎。
生產環境中常用的表引擎是MergeTree系列,也是官方主推的引擎。
MergeTree是基礎引擎,有主鍵索引、數據分區、數據副本、數據采樣、刪除和修改等功能,
ReplacingMergeTree有了去重功能,
SummingMergeTree有了匯總求和功能,
AggregatingMergeTree有聚合功能,
CollapsingMergeTree有折疊刪除功能,
VersionedCollapsingMergeTree有版本折疊功能,
GraphiteMergeTree有壓縮匯總功能。
在這些的基礎上還可以疊加Replicated和Distributed。
Integration系列用於集成外部的數據源,常用的有HADOOP,MySQL。
引言
表引擎在ClickHouse中的作用十分關鍵,直接決定了數據如何存儲和讀取、是否支持並發讀寫、是否支持index、支持的query種類、是否支持主備復制等。
ClickHouse提供了大約28種表引擎,各有各的用途,比如有Lo
系列用來做小表數據分析,MergeTree
系列用來做大數據量分析,而Integration
系列則多用於外表數據集成。再考慮復制表Replicated
系列,分布式表Distributed
等,紛繁復雜,新用戶上手選擇時常常感到迷惑。
本文嘗試對ClickHouse的表引擎進行梳理,幫忙大家快速入門ClickHouse。
ClickHouse表引擎概覽
一共分為四個系列,分別是Log、MergeTree、Integration、Special。其中包含了兩種特殊的表引擎Replicated、Distributed,功能上與其他表引擎正交,我們后續會單獨寫一篇文章來介紹。
Log系列
Log系列表引擎功能相對簡單,主要用於快速寫入小表(1百萬行左右的表),然后全部讀出的場景。
幾種Log表引擎的共性是:
- 數據被順序append寫到磁盤上;
- 不支持delete、update;
- 不支持index;
- 不支持原子性寫;
- insert會阻塞select操作。
它們彼此之間的區別是:
-
TinyLog:不支持並發讀取數據文件,查詢性能較差;格式簡單,適合用來暫存中間數據;
-
StripLog:支持並發讀取數據文件,查詢性能比TinyLog好;將所有列存儲在同一個大文件中,減少了文件個數;
-
Log:支持並發讀取數據文件,查詢性能比TinyLog好;每個列會單獨存儲在一個獨立文件中。
Integration系列
該系統表引擎主要用於將外部數據導入到ClickHouse中,或者在ClickHouse中直接操作外部數據源。
-
Kafka:將Kafka Topic中的數據直接導入到ClickHouse;
-
MySQL:將Mysql作為存儲引擎,直接在ClickHouse中對MySQL表進行select等操作;
-
JDBC/ODBC:通過指定jdbc、odbc連接串讀取數據源;
-
HDFS:直接讀取HDFS上的特定格式的數據文件;
Special系列
Special系列的表引擎,大多是為了特定場景而定制的。這里也挑選幾個簡單介紹,不做詳述。
-
Memory:將數據存儲在內存中,重啟后會導致數據丟失。查詢性能極好,適合於對於數據持久性沒有要求的1億一下的小表。在ClickHouse中,通常用來做臨時表。
-
Buffer:為目標表設置一個內存buffer,當buffer達到了一定條件之后會flush到磁盤。
-
File:直接將本地文件作為數據存儲;
-
Null:寫入數據被丟棄、讀取數據為空;
MergeTree系列
Log、Special、Integration主要用於特殊用途,場景相對有限。MergeTree系列才是官方主推的存儲引擎,支持幾乎所有ClickHouse核心功能。
以下重點介紹MergeTree、ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、SummingMergeTree、AggregatingMergeTree引擎。
參考文章:https://clickhouse.tech/docs/en/engines
參考文章:https://blog.csdn.net/A1373712651/article/details/103608340
參考文章:https://blog.csdn.net/qq_41106844/article/details/107067525