目錄
CLickhouse核心特性
1 完備的DBMS功能
2 列式存儲與數據壓縮
3 向量化執行引擎
4 關系模型與SQL查詢
5 多樣化的表引擎
6 多線程與分布式
7 多主架構
8 在線查詢
9 數據分片與分布式查詢
Clickhouse適用場景
Clickhouse不適用場景
Clickhouse名稱含義
CLickhouse核心特性
1 完備的DBMS功能
具備dbms(數據庫管理系統)的一些基本功能:DDL,DML,權限控制,數據備份與恢復,分布式管理等
2 列式存儲與數據壓縮
按列存儲可以有效減少查詢時掃描的數據量
數據默認使用LZ4算法壓縮,Yandex.Metrica生產環境數據總體壓縮比可以達到8:1
3 向量化執行引擎
向量化執行,可以簡單地看作一項消除程序中循環的優化。
為了實現向量化執行,需要利用CPU的SIMD指令。SIMD的全稱是 Single Instruction Multiple Data,即用單條指令操作多條數據。現代計算 機系統概念中,它是通過數據并行以提高性能的一種實現方式(其他 的還有指令級并行和線程級并行),它的原理是在CPU寄存器層面實現 數據的并行操作
4 關系模型與SQL查詢
Clickhouse使用SQL作為查詢語句,SQL 擁有極高的“群眾基礎”,更容易被使用者學習接受。
關系模型相比文檔和鍵值對等其他模型,擁有更好的描述能力, 也能夠更加清晰地表述實體間的關系。
5 多樣化的表引擎
ClickHouse 共擁有合并樹、內存、文件、接口和其他6大類20多種表引擎。其中每 一種表引擎都有著各自的特點,用戶可以根據實際業務場景的要求, 選擇合適的表引擎使用。
6 多線程與分布式
如果說向量化執行是通過數據級并行的方式提升了性能,那么多 線程處理就是通過線程級并行的方式實現了性能的提升。相比基于底 層硬件實現的向量化執行SIMD,線程級并行通常由更高層次的軟件層 面控制。現代計算機系統早已普及了多處理器架構,所以現今市面上 的服務器都具備良好的多核心多線程處理能力。由于SIMD不適合用于 帶有較多分支判斷的場景,ClickHouse也大量使用了多線程技術以實 現提速,以此和向量化執行形成互補。
ClickHouse在數據存取方面,既支持分區(縱向擴 展,利用多線程原理),也支持分片(橫向擴展,利用分布式原 理),可以說是將多線程和分布式的技術應用到了極致。
7 多主架構
ClickHouse則采用Multi-Master多主架構,集群中的每個節點角色對 等,客戶端訪問任意一個節點都能得到相同的效果。這種多主的架構 有許多優勢,例如對等的角色使系統架構變得更加簡單,不用再區分 主控節點、數據節點和計算節點,集群中的所有節點功能相同。所以 它天然規避了單點故障的問題,非常適合用于多數據中心、異地多活 的場景。
8 在線查詢
正如ClickHouse的“廣告詞”所言,其他的開源系統太慢,商用的 系統太貴,只有Clickouse在成本與性能之間做到了良好平衡,即又快 又開源。ClickHouse當之無愧地闡釋了“在線”二字的含義,即便是在 復雜查詢的場景下,它也能夠做到極快響應,且無須對數據進行任何 預處理加工。
9 數據分片與分布式查詢
數據分片是將數據進行橫向切分,這是一種在面對海量數據的場 景下,解決存儲和查詢瓶頸的有效手段,是一種分治思想的體現。 ClickHouse支持分片,而分片則依賴集群。每個集群由1到多個分片組 成,而每個分片則對應了ClickHouse的1個服務節點。分片的數量上限 取決于節點數量(1個分片只能對應1個服務節點)。
ClickHouse并不像其他分布式系統那樣,擁有高度自動化的分片 功能。ClickHouse提供了本地表(Local Table)與分布式表 (Distributed Table)的概念。一張本地表等同于一份數據的分片。而 分布式表本身不存儲任何數據,它是本地表的訪問代理,其作用類似 分庫中間件。借助分布式表,能夠代理訪問多個數據分片,從而實現 分布式查詢。
Clickhouse適用場景
ClickHouse非常適用于商業智能領域(也就是我們所說的BI領域),除此之外,它也能夠被廣泛應用于廣告流量、Web、App流量、 電信、金融、電子商務、信息安全、網絡游戲、物聯網等眾多其他領 域。
Clickhouse不適用場景
·不支持事務。
·不擅長根據主鍵按行粒度進行查詢(雖然支持),故不應該把ClickHouse當作Key-Value數據庫使用。
·不擅長按行刪除數據(雖然支持)。
Clickhouse名稱含義
Click Stream,Data WareHouse
整個系統的邏輯就十分清晰了,那就是基于頁 面的點擊事件流,面向數據倉庫進行OLAP分析