ClickHouse是由C++編寫的列式存儲數(shù)據(jù)庫(DBMS),主要用來在線分析處理查詢(OLTP),能夠用Sql查詢生成的實時數(shù)據(jù)分析報告。
適用場景
大多數(shù)是讀請求 、數(shù)據(jù)總是批量寫入 、不更新或少更新數(shù)據(jù)、每次都是讀取大量的行、寬表(有大量列的表,這些列中已經(jīng)冗余所需數(shù)據(jù))、簡單查詢 、處理單個查詢需要高吞吐量、無需事務(wù),數(shù)據(jù)一致性要求低
- 實時分析:ClickHouse能夠處理大規(guī)模數(shù)據(jù)集的實時查詢和分析,非常適合需要在大數(shù)據(jù)集上進(jìn)行快速數(shù)據(jù)分析和報告生成的場景。
- 日志分析:由于其高性能和實時處理能力,ClickHouse成為了處理大量日志數(shù)據(jù)的理想選擇,能夠?qū)⑷罩緮?shù)據(jù)快速導(dǎo)入并執(zhí)行復(fù)雜的查詢和分析。
- 時序數(shù)據(jù)處理:特別適用于處理時間序列數(shù)據(jù),如傳感器數(shù)據(jù)、監(jiān)控數(shù)據(jù)、日志數(shù)據(jù)等,能夠高效地存儲和查詢大量的時間序列數(shù)據(jù)。
- 數(shù)據(jù)倉庫:作為企業(yè)數(shù)據(jù)倉庫的核心組件,ClickHouse用于存儲和處理大量結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),提供快速的數(shù)據(jù)加載、聚合和查詢能力。
- 實時監(jiān)控:可以實時處理和分析監(jiān)控數(shù)據(jù),如網(wǎng)絡(luò)流量數(shù)據(jù)、服務(wù)器性能數(shù)據(jù)等,快速生成實時報告和儀表盤。
- 大數(shù)據(jù)分析和處理:ClickHouse能夠在毫秒級別內(nèi)對海量數(shù)據(jù)進(jìn)行實時查詢和分析,支持高并發(fā)查詢和數(shù)據(jù)聚合,是大數(shù)據(jù)分析和處理的理想選擇。
- 商業(yè)智能領(lǐng)域(BI):適用于商業(yè)智能領(lǐng)域,能夠被廣泛應(yīng)用于廣告流量、Web、App流量、電信、金融、電子商務(wù)、信息安全、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)等多個其他領(lǐng)域。
- OLAP場景:ClickHouse是面向聯(lián)機(jī)分析處理的列式數(shù)據(jù)庫,支持SQL查詢,尤其適用于基于大寬表的聚合分析查詢,查詢性能非常好。
列式存儲的優(yōu)缺點:
優(yōu)點 | 缺點 | |
---|---|---|
1. 數(shù)據(jù)檢索速度快 | 1. 不適合存儲復(fù)雜結(jié)構(gòu)的數(shù)據(jù) | |
2. 易于進(jìn)行數(shù)據(jù)分析 | 聚合、計數(shù)、求和等 | 2. 可擴(kuò)展性有限 |
3. 數(shù)據(jù)處理效率高 | 3. 對事務(wù)處理的支持不如關(guān)系型數(shù)據(jù)庫 | |
4. 通常具有較好的可靠性 | 4. 不適用于需要復(fù)雜查詢的場景 | |
5. 適用于大規(guī)模數(shù)據(jù)存儲 | 同列數(shù)據(jù)類型相同,便于數(shù)據(jù)壓縮,可以節(jié)省空間 | 5. 需要自行處理一致性和完整性問題 |
ClickHouse幾大特點
?1、涵蓋了標(biāo)準(zhǔn)的Sql語法,如DDL、DML。具備DBMS所具備的功能如:
- 數(shù)據(jù)定義:允許用戶定義數(shù)據(jù)結(jié)構(gòu)、設(shè)置數(shù)據(jù)的約束條件以及建立相應(yīng)的數(shù)據(jù)庫模式。
- 數(shù)據(jù)操縱:提供了對數(shù)據(jù)進(jìn)行插入、刪除、修改和查詢的能力。
- 數(shù)據(jù)完整性:確保數(shù)據(jù)的一致性和準(zhǔn)確性,通過強(qiáng)制實施預(yù)定義的規(guī)則和約束條件。
- 并發(fā)控制:協(xié)調(diào)多個用戶對數(shù)據(jù)的同時訪問,防止數(shù)據(jù)出現(xiàn)沖突或不一致。
- 數(shù)據(jù)安全性:通過權(quán)限控制和認(rèn)證機(jī)制來保護(hù)數(shù)據(jù),確保只有授權(quán)用戶才能訪問和修改數(shù)據(jù)。
- 數(shù)據(jù)恢復(fù):提供故障恢復(fù)機(jī)制,確保在發(fā)生故障時能夠恢復(fù)數(shù)據(jù),并保持?jǐn)?shù)據(jù)的一致性。
2、多樣化引擎
????????把表級的存儲引擎插件化,根據(jù)表的不同需求可以設(shè)定不同的存儲引擎(比如可以使用Hive的引擎)。目前包括合并樹、日志、接口和其他四大類20多種引擎。
3、高吞吐
? ? ? ? 采用LSM Tree結(jié)構(gòu),數(shù)據(jù)順序?qū)?,?shù)據(jù)插入后不可更改,更新操作將攜帶時間戳或版本號,在后臺定期合并攜帶最新時間戳或版本號的數(shù)據(jù)。
4、數(shù)據(jù)分區(qū)與線程級并行
????????數(shù)據(jù)分區(qū)可以避免全表掃描,單個操作充分利用多線程壓榨cpu性能,但是也導(dǎo)致了qps(查詢)性能低。
數(shù)據(jù)類型
ClickHouse支持以下主要數(shù)據(jù)類型:
- UInt8, UInt16, UInt32, UInt64: 無符號整數(shù)類型,分別占用1、2、4、8字節(jié)。
- Int8, Int16, Int32, Int64: 有符號整數(shù)類型,分別占用1、2、4、8字節(jié)。
- Float32, Float64: 浮點數(shù)類型,分別占用4、8字節(jié)。
- String: 字符串類型,使用UTF-8編碼。
- Date: 日期類型,使用日期格式存儲。
- DateTime: 日期時間類型,使用日期和時間格式存儲。
- Enum: 枚舉類型,根據(jù)特定的字典進(jìn)行編碼存儲。
此外,ClickHouse還支持其他一些數(shù)據(jù)類型,如Array、Nested、Tuple等復(fù)雜數(shù)據(jù)類型。
表引擎?
ClickHouse表引擎是指在ClickHouse中存儲數(shù)據(jù)的不同方式或存儲結(jié)構(gòu),不同的表引擎在存儲和查詢數(shù)據(jù)時會有不同的性能表現(xiàn)和特點。
下面是一些ClickHouse常用的表引擎及其簡要介紹:
MergeTree:MergeTree是ClickHouse最常用的表引擎之一,主要用于存儲大量有序數(shù)據(jù),支持范圍查詢、聚合和快速插入等操作。
CollapsingMergeTree:在MergeTree的基礎(chǔ)上增加了合并重復(fù)行的功能,用于去除重復(fù)數(shù)據(jù)。
ReplacingMergeTree:MergeTree的擴(kuò)展,用于支持根據(jù)主鍵替換數(shù)據(jù),適用于需要更新數(shù)據(jù)的場景。
SummingMergeTree:MergeTree的擴(kuò)展,支持存儲匯總后的數(shù)據(jù),適合存儲預(yù)先聚合好的數(shù)據(jù)。
AggregatingMergeTree:基于MergeTree,用于在持續(xù)更新的數(shù)據(jù)流中定期計算聚合數(shù)據(jù)。
Distributed:分布式表引擎,用于將數(shù)據(jù)分布在集群中不同的物理節(jié)點上。
除了上面列舉的表引擎外,ClickHouse還支持其他不同類型的表引擎,每種引擎都有其特定的使用場景和優(yōu)勢。選擇合適的表引擎可以更好地滿足數(shù)據(jù)存儲和查詢的需求。文章來源:http://www.zghlxwxcb.cn/news/detail-832525.html
待續(xù)。。。?文章來源地址http://www.zghlxwxcb.cn/news/detail-832525.html
到了這里,關(guān)于ClickHouse學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!