【ClickHouse】0:clickhouse學習1之數據引擎(數據庫引擎,表引擎)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM