ClickHouse数据分析列式数据库概述
一. 概述
隨著物聯(lián)網(wǎng)IOT時代的來臨,IOT設(shè)備感知和報警存儲的數(shù)據(jù)越來越大,有用的價值數(shù)據(jù)需要數(shù)據(jù)分析師去分析。大數(shù)據(jù)分析成了非常重要的環(huán)節(jié)。當(dāng)然近兩年開啟的開源大潮,為大數(shù)據(jù)分析工程師提供了十分富余的工具。但這同時也增加了開發(fā)者選擇合適的工具的難度,尤其對于新入行的開發(fā)者來說。學(xué)習(xí)成本,框架的多樣化和復(fù)雜度成了很大的難題。例如kafka,hdfs,spark,hive 等等組合才能產(chǎn)生最后的分析結(jié)果。把各種開源框架、工具、庫、平臺人工整合到一起所需工作之復(fù)雜,是大數(shù)據(jù)領(lǐng)域開發(fā)和數(shù)據(jù)分析師常有的抱怨之一,也是他們支持大數(shù)據(jù)分析平臺簡單化和統(tǒng)一化的首要原因。
二.Clickhouse 發(fā)展歷史
Yandex在2016年6月15日開源了一個數(shù)據(jù)分析的數(shù)據(jù)庫,名字叫做ClickHouse,這對保守俄羅斯人來說是個特大事。更讓人驚訝的是,這個列式存儲數(shù)據(jù)庫的跑分要超過很多流行的商業(yè)MPP數(shù)據(jù)庫軟件,例如Vertica。如果你沒有聽過Vertica,那你一定聽過 Michael Stonebraker,2014年圖靈獎的獲得者,PostgreSQL和Ingres發(fā)明者(Sybase和SQL Server都是繼承 Ingres而來的), Paradigm4和SciDB的創(chuàng)辦者。Michael Stonebraker于2005年創(chuàng)辦Vertica公司,后來該公司被HP收購,HP Vertica成為MPP列式存儲商業(yè)數(shù)據(jù)庫的高性能代表,Facebook就購買了Vertica數(shù)據(jù)用于用戶行為分析。
三.Clickhouse 支持特性剖析
在看Clickhouse 運行場景之前要了解技術(shù)的功能特性以及弊端是一個技術(shù)架構(gòu)以及開發(fā)人員所要了解的。只有”知己知彼”才可以”百戰(zhàn)不殆”,接下來我們看一下Clickhouse的具體特點;
? 1.真正的面向列的DBMS
? 2.數(shù)據(jù)高效壓縮
? 3.磁盤存儲的數(shù)據(jù)
? 4.多核并行處理
? 5.在多個服務(wù)器上分布式處理
? 6.SQL語法支持
? 7.向量化引擎
? 8.實時數(shù)據(jù)更新
? 9.索引
? 10.適合在線查詢
? 11.支持近似預(yù)估計算
? 12.支持嵌套的數(shù)據(jù)結(jié)構(gòu)
? 支持數(shù)組作為數(shù)據(jù)類型
? 13.支持限制查詢復(fù)雜性以及配額
? 14.復(fù)制數(shù)據(jù)復(fù)制和對數(shù)據(jù)完整性的支持
我們來看看其中的一些功能:
1.真正的面向列的DBMS
在一個真正的面向列的DBMS中,沒有任何“垃圾”存儲在值中。例如,必須支持定長數(shù)值,以避免在數(shù)值旁邊存儲長度“數(shù)字”。例如,十億個UInt8類型的值實際上應(yīng)該消耗大約1 GB的未壓縮磁盤空間,否則這將強烈影響CPU的使用。由于解壓縮的速度(CPU使用率)主要取決于未壓縮的數(shù)據(jù)量,所以即使在未壓縮的情況下,緊湊地存儲數(shù)據(jù)(沒有任何“垃圾”)也是非常重要的。
因為有些系統(tǒng)可以單獨存儲單獨列的值,但由于其他場景的優(yōu)化,無法有效處理分析查詢。例如HBase,BigTable,Cassandra和HyperTable。在這些系統(tǒng)中,每秒鐘可以獲得大約十萬行的吞吐量,但是每秒不會達到數(shù)億行。
另外,ClickHouse是一個DBMS,而不是一個單一的數(shù)據(jù)庫。ClickHouse允許在運行時創(chuàng)建表和數(shù)據(jù)庫,加載數(shù)據(jù)和運行查詢,而無需重新配置和重新啟動服務(wù)器。
2.數(shù)據(jù)壓縮
一些面向列的DBMS(InfiniDB CE和MonetDB)不使用數(shù)據(jù)壓縮。但是,數(shù)據(jù)壓縮確實提高了性能。
3.磁盤存儲的數(shù)據(jù)
許多面向列的DBMS(SAP HANA和GooglePowerDrill)只能在內(nèi)存中工作。但即使在數(shù)千臺服務(wù)器上,內(nèi)存也太小,無法在Yandex.Metrica中存儲所有瀏覽量和會話。
4.多核并行處理
多核多節(jié)點并行化大型查詢。
5.在多個服務(wù)器上分布式處理
上面列出的列式DBMS幾乎都不支持分布式處理。在ClickHouse中,數(shù)據(jù)可以駐留在不同的分片上。每個分片可以是用于容錯的一組副本。查詢在所有分片上并行處理。這對用戶來說是透明的。
6.SQL支持
如果你熟悉標準的SQL,我們不能真正談?wù)揝QL的支持。NULL不支持。所有的函數(shù)都有不同的名字。JOIN支持。子查詢在FROM,IN,JOIN子句中被支持;標量子查詢支持。關(guān)聯(lián)子查詢不支持。
7.向量化引擎
數(shù)據(jù)不僅按列存儲,而且由矢量 - 列的部分進行處理。這使我們能夠?qū)崿F(xiàn)高CPU性能。
8.實時數(shù)據(jù)更新
ClickHouse支持主鍵表。為了快速執(zhí)行對主鍵范圍的查詢,數(shù)據(jù)使用合并樹(MergeTree)進行遞增排序。由于這個原因,數(shù)據(jù)可以不斷地添加到表中。添加數(shù)據(jù)時無鎖處理。
9.索引
例如,帶有主鍵可以在特定的時間范圍內(nèi)為特定客戶端(Metrica計數(shù)器)抽取數(shù)據(jù),并且延遲時間小于幾十毫秒。
10.支持在線查詢
這讓我們使用該系統(tǒng)作為Web界面的后端。低延遲意味著可以無延遲實時地處理查詢,而Yandex.Metrica界面頁面正在加載(在線模式)。
11.支持近似計算
1.系統(tǒng)包含用于近似計算各種值,中位數(shù)和分位數(shù)的集合函數(shù)。
2.支持基于部分(樣本)數(shù)據(jù)運行查詢并獲得近似結(jié)果。在這種情況下,從磁盤檢索比例較少的數(shù)據(jù)。
3.支持為有限數(shù)量的隨機密鑰(而不是所有密鑰)運行聚合。在數(shù)據(jù)中密鑰分發(fā)的特定條件下,這提供了相對準確的結(jié)果,同時使用較少的資源。
12.數(shù)據(jù)復(fù)制和對數(shù)據(jù)完整性的支持。
使用異步多主復(fù)制。寫入任何可用的副本后,數(shù)據(jù)將分發(fā)到所有剩余的副本。系統(tǒng)在不同的副本上保持相同的數(shù)據(jù)。數(shù)據(jù)在失敗后自動恢復(fù)
ClickHouse的不完美:
? 1.不支持事物。
? 2.不支持Update/Delete操作。
? 3.支持有限操作系統(tǒng)。
現(xiàn)在支持ubuntu,centos 需要自己編譯,不過有熱心人已經(jīng)編譯好了,拿來用就行。對于Windows 不支持。
四.ClickHouse應(yīng)用場景
自從ClickHouse2016年6月15日開源后,ClickHouse中文社區(qū)隨后成立。中文開源組開始以易觀,海康威視,美團,新浪,京東,58,騰訊,酷狗音樂和俄羅斯開源社區(qū)等人員組成,隨著開源社區(qū)的不斷活躍,陸續(xù)有神州數(shù)碼,青云,PingCAP,中軟國際等公司成員加入以及其他公司成員加入。初始在群里討論技術(shù)后續(xù)有一些大型公司陸續(xù)運用到項目中,介于分享不方便問題解決,建立了相應(yīng)的論壇。根據(jù)交流得知一些大公司已經(jīng)運用。
可以應(yīng)用以下場景:
1.電信行業(yè)用于存儲數(shù)據(jù)和統(tǒng)計數(shù)據(jù)使用。
2.新浪微博用于用戶行為數(shù)據(jù)記錄和分析工作。
3.用于廣告網(wǎng)絡(luò)和RTB,電子商務(wù)的用戶行為分析。
4.信息安全里面的日志分析。
5.檢測和遙感信息的挖掘。
6.商業(yè)智能。
7.網(wǎng)絡(luò)游戲以及物聯(lián)網(wǎng)的數(shù)據(jù)處理和價值數(shù)據(jù)分析。
8.最大的應(yīng)用來自于Yandex的統(tǒng)計分析服務(wù)Yandex.Metrica,類似于谷歌Analytics(GA),或友盟統(tǒng)計,小米統(tǒng)計,幫助網(wǎng)站或移動應(yīng)用進行數(shù)據(jù)分析和精細化運營工具,據(jù)稱Yandex.Metrica為世界上第二大的網(wǎng)站分析平臺。ClickHouse在這個應(yīng)用中,部署了近四百臺機器,每天支持200億的事件和歷史總記錄超過13萬億條記錄,這些記錄都存有原始數(shù)據(jù)(非聚合數(shù)據(jù)),隨時可以使用SQL查詢和分析,生成用戶報告。
五.ClickHouse 和一些技術(shù)的比較
1.商業(yè)OLAP數(shù)據(jù)庫
例如:HP Vertica, Actian the Vector,
區(qū)別:ClickHouse是開源而且免費的
2.云解決方案
例如:亞馬遜RedShift和谷歌的BigQuery
區(qū)別:ClickHouse可以使用自己機器部署,無需為云付費
3.Hadoop生態(tài)軟件
例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill
區(qū)別:
ClickHouse支持實時的高并發(fā)系統(tǒng)
ClickHouse不依賴于Hadoop生態(tài)軟件和基礎(chǔ)
ClickHouse支持分布式機房的部署
4.開源OLAP數(shù)據(jù)庫
例如:InfiniDB, MonetDB, LucidDB
區(qū)別:這些項目的應(yīng)用的規(guī)模較小,并沒有應(yīng)用在大型的互聯(lián)網(wǎng)服務(wù)當(dāng)中,相比之下,ClickHouse的成熟度和穩(wěn)定性遠遠超過這些軟件。
5.開源分析,非關(guān)系型數(shù)據(jù)庫
例如:Druid , Apache Kylin
區(qū)別:ClickHouse可以支持從原始數(shù)據(jù)的直接查詢,ClickHouse支持類SQL語言,提供了傳統(tǒng)關(guān)系型數(shù)據(jù)的便利。
六.總結(jié)
在大數(shù)據(jù)分析領(lǐng)域中,傳統(tǒng)的大數(shù)據(jù)分析需要不同框架和技術(shù)組合才能達到最終的效果,在人力成本,技術(shù)能力和硬件成本上以及維護成本讓大數(shù)據(jù)分析變得成為昂貴的事情。讓很多中小型企業(yè)非常苦惱,不得不被迫租賃第三方大型公司的數(shù)據(jù)分析服務(wù)。
ClickHouse開源的出現(xiàn)讓許多想做大數(shù)據(jù)并且想做大數(shù)據(jù)分析的很多公司和企業(yè)耳目一新。ClickHouse 正是以不依賴Hadoop 生態(tài)、安裝和維護簡單、查詢速度快、可以支持SQL等特點在大數(shù)據(jù)分析領(lǐng)域越走越遠。
參考鏈接:https://www.jianshu.com/p/350b59e8ea68
總結(jié)
以上是生活随笔為你收集整理的ClickHouse数据分析列式数据库概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可视化数据库管理工具DataGrip使用
- 下一篇: k8s部署mysql集群(statefu