初識ClickHouse:來自戰鬥民族的OLAP利器

ClickHouse是一個用於數據分析(OLAP)的列式數據庫管理系統(column-oriented DBMS),誕生於“戰鬥民族”俄羅斯,由搜索巨頭Yandex公司開源。目前國內不少大廠在使用,包括騰訊、今日頭條、攜程、快手等,集羣規模多達數千節點,阿里雲更是推出了雲產品ClickHouse。官方介紹:

ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).

ClickHouse一定是有不可取代或者不可或缺的特點,才能使得它這麼受青睞。

ClickHouse特點

ClickHouse從OLAP場景需求出發,定製開發了一套全新的高效列式存儲引擎。

列式存儲

ClickHouse是一個列式數據庫,列式就意味着按列存儲與掃描,擁有更小的io操作、更高的壓縮比,非常適合於OLAP場景。列式與行式的差異可見下圖:

速度快

ClickHouse是一個非常快的數據庫系統,數據不僅按列存儲、使用高效壓縮減少io,同時還支持向量化執行引擎,能夠充分使用CPU性能。

ClickHouse不僅查詢快,處理單查詢高吞吐量每臺服務器每秒最多數十億行;寫入速度也非常快,對於大量的數據更新非常適用。

ClickHouse到底有多快?可以參考社區的一個性能測試報表。

另外ClickHouse在單表查詢時表現優秀,領跑其他查詢引擎,參考:

但是在多表關聯查詢時,性能表現相對比較差,更多性能測試報告,可以參見:http://www.clickhouse.com.cn/topic/5c453371389ad55f127768ea。

功能豐富

在使用方面,除了速度快,ClickHouse支持大部分的SQL語法,不過目前還有一定限制;ClickHouse支持實時的數據更新,適用於在線查詢。ClickHouse具有良好的可擴展性,支持單節點與分佈式部署,可以擴展到成百上千個節點,單個節點可容納萬億行數據或超過100TB數據。此外,ClickHouse還支持主鍵索引、稀疏索引、數據Sharding、數據Partitioning、TTL、主備複製等特性,參見文末鏈接的文章。

接下來我們看一看 ClickHouse有哪些應用場景和使用限制。

應用場景與限制

ClickHouse的應用場景:

1.絕大多數請求都是用於讀訪問的
2.數據需要以大批次(大於1000行)進行更新,而不是單行更新;或者根本沒有更新操作
3.數據只是添加到數據庫,沒有必要修改
4.讀取數據時,會從數據庫中提取出大量的行,但只用到一小部分列
5.表很“寬”,即表中包含大量的列
6.查詢頻率相對較低(通常每臺服務器每秒查詢數百次或更少)
7.對於簡單查詢,允許大約50毫秒的延遲
8.列的值是比較小的數值和短字符串(例如,每個URL只有60個字節)
9.在處理單個查詢時需要高吞吐量(每臺服務器每秒高達數十億行)
10.不需要事務
11.數據一致性要求較低
12.每次查詢中只會查詢一個大表。除了一個大表,其餘都是小表
13.查詢結果顯著小於數據源。即數據有過濾或聚合。返回結果不超過單個服務器內存大小

相應地,使用ClickHouse也有其本身的限制:

1.不支持真正的刪除/更新支持 不支持事務(期待後續版本支持)
2.不支持二級索引(PS:新版本中已經支持)
3.有限的SQL支持,join實現與衆不同
4.不支持窗口功能
5.元數據管理需要人工干預維護

ClickHouse因性能卓越,被廣泛應用於各種分析場景(特別是單表查詢),例如用戶行爲分析、日誌分析等。我們先從這幾個方面認識下ClickHouse,對其有一個大概的瞭解。

參考:

https://clickhouse.tech/docs/en/

https://zhuanlan.zhihu.com/p/98135840

https://zhuanlan.zhihu.com/p/22165241

https://zhuanlan.zhihu.com/p/71014268

往期推薦

1、大數據之數據交換和存儲序列化利器 Avro

2、乾貨 | Kafka 內核知識梳理,附思維導圖

3、MapReduce Shuffle 和 Spark Shuffle 結業篇

4、實時數倉 | 你想要的數倉分層設計與技術選型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章