ClickHouse概述

?一.?概述

隨著物聯(lián)網(wǎng)IOT時(shí)代的來(lái)臨,IOT設(shè)備感知和報(bào)警存儲(chǔ)的數(shù)據(jù)越來(lái)越大,有用的價(jià)值數(shù)據(jù)需要數(shù)據(jù)分析師去分析。大數(shù)據(jù)分析成了非常重要的環(huán)節(jié)。當(dāng)然近兩年開啟的開源大潮,為大數(shù)據(jù)分析工程師提供了十分富余的工具。但這同時(shí)也增加了開發(fā)者選擇合適的工具的難度,尤其對(duì)于新入行的開發(fā)者來(lái)說(shuō)。學(xué)習(xí)成本,框架的多樣化和復(fù)雜度成了很大的難題。例如kafka,hdfs,spark,hive 等等組合才能產(chǎn)生最后的分析結(jié)果。把各種開源框架、工具、庫(kù)、平臺(tái)人工整合到一起所需工作之復(fù)雜,是大數(shù)據(jù)領(lǐng)域開發(fā)和數(shù)據(jù)分析師常有的抱怨之一,也是他們支持大數(shù)據(jù)分析平臺(tái)簡(jiǎn)單化和統(tǒng)一化的首要原因。

二.Clickhouse 發(fā)展歷史

Yandex在2016年6月15日開源了一個(gè)數(shù)據(jù)分析的數(shù)據(jù)庫(kù),名字叫做ClickHouse,這對(duì)保守俄羅斯人來(lái)說(shuō)是個(gè)特大事。更讓人驚訝的是,這個(gè)列式存儲(chǔ)數(shù)據(jù)庫(kù)的跑分要超過(guò)很多流行的商業(yè)MPP數(shù)據(jù)庫(kù)軟件,例如Vertica。如果你沒有聽過(guò)Vertica,那你一定聽過(guò) Michael Stonebraker,2014年圖靈獎(jiǎng)的獲得者,PostgreSQL和Ingres發(fā)明者(Sybase和SQL Server都是繼承 Ingres而來(lái)的), Paradigm4和SciDB的創(chuàng)辦者。Michael Stonebraker于2005年創(chuàng)辦Vertica公司,后來(lái)該公司被HP收購(gòu),HP Vertica成為MPP列式存儲(chǔ)商業(yè)數(shù)據(jù)庫(kù)的高性能代表,F(xiàn)acebook就購(gòu)買了Vertica數(shù)據(jù)用于用戶行為分析。

三.Clickhouse 支持特性剖析

在看Clickhouse 運(yùn)行場(chǎng)景之前要了解技術(shù)的功能特性以及弊端是一個(gè)技術(shù)架構(gòu)以及開發(fā)人員所要了解的。只有”知己知彼”才可以”百戰(zhàn)不殆”,接下來(lái)我們看一下Clickhouse的具體特點(diǎn);

?? 1.真正的面向列的DBMS

?? 2.數(shù)據(jù)高效壓縮

?? 3.磁盤存儲(chǔ)的數(shù)據(jù)

?? 4.多核并行處理

?? 5.在多個(gè)服務(wù)器上分布式處理

?? 6.SQL語(yǔ)法支持

?? 7.向量化引擎

?? 8.實(shí)時(shí)數(shù)據(jù)更新

?? 9.索引

?? 10.適合在線查詢

?? 11.支持近似預(yù)估計(jì)算

?? 12.支持嵌套的數(shù)據(jù)結(jié)構(gòu)

?? 支持?jǐn)?shù)組作為數(shù)據(jù)類型

?? 13.支持限制查詢復(fù)雜性以及配額

?? 14.復(fù)制數(shù)據(jù)復(fù)制和對(duì)數(shù)據(jù)完整性的支持

#我們來(lái)看看其中的一些功能:

1.真正的面向列的DBMS

在一個(gè)真正的面向列的DBMS中,沒有任何“垃圾”存儲(chǔ)在值中。例如,必須支持定長(zhǎng)數(shù)值,以避免在數(shù)值旁邊存儲(chǔ)長(zhǎng)度“數(shù)字”。例如,十億個(gè)UInt8類型的值實(shí)際上應(yīng)該消耗大約1 GB的未壓縮磁盤空間,否則這將強(qiáng)烈影響CPU的使用。由于解壓縮的速度(CPU使用率)主要取決于未壓縮的數(shù)據(jù)量,所以即使在未壓縮的情況下,緊湊地存儲(chǔ)數(shù)據(jù)(沒有任何“垃圾”)也是非常重要的。

因?yàn)橛行┫到y(tǒng)可以單獨(dú)存儲(chǔ)單獨(dú)列的值,但由于其他場(chǎng)景的優(yōu)化,無(wú)法有效處理分析查詢。例如HBase,BigTable,Cassandra和HyperTable。在這些系統(tǒng)中,每秒鐘可以獲得大約十萬(wàn)行的吞吐量,但是每秒不會(huì)達(dá)到數(shù)億行。

另外,ClickHouse是一個(gè)DBMS,而不是一個(gè)單一的數(shù)據(jù)庫(kù)。ClickHouse允許在運(yùn)行時(shí)創(chuàng)建表和數(shù)據(jù)庫(kù),加載數(shù)據(jù)和運(yùn)行查詢,而無(wú)需重新配置和重新啟動(dòng)服務(wù)器。

2.數(shù)據(jù)壓縮

一些面向列的DBMS(InfiniDB CE和MonetDB)不使用數(shù)據(jù)壓縮。但是,數(shù)據(jù)壓縮確實(shí)提高了性能。

3.磁盤存儲(chǔ)的數(shù)據(jù)

許多面向列的DBMS(SAP HANA和GooglePowerDrill)只能在內(nèi)存中工作。但即使在數(shù)千臺(tái)服務(wù)器上,內(nèi)存也太小,無(wú)法在Yandex.Metrica中存儲(chǔ)所有瀏覽量和會(huì)話。

4.多核并行處理

多核多節(jié)點(diǎn)并行化大型查詢。

5.在多個(gè)服務(wù)器上分布式處理

上面列出的列式DBMS幾乎都不支持分布式處理。在ClickHouse中,數(shù)據(jù)可以駐留在不同的分片上。每個(gè)分片可以是用于容錯(cuò)的一組副本。查詢?cè)谒蟹制喜⑿刑幚?。這對(duì)用戶來(lái)說(shuō)是透明的。

6.SQL支持

如果你熟悉標(biāo)準(zhǔn)的SQL,我們不能真正談?wù)揝QL的支持。NULL不支持。所有的函數(shù)都有不同的名字。JOIN支持。子查詢?cè)贔ROM,IN,JOIN子句中被支持;標(biāo)量子查詢支持。關(guān)聯(lián)子查詢不支持。

7.向量化引擎

數(shù)據(jù)不僅按列存儲(chǔ),而且由矢量 - 列的部分進(jìn)行處理。這使我們能夠?qū)崿F(xiàn)高CPU性能。

8.實(shí)時(shí)數(shù)據(jù)更新

ClickHouse支持主鍵表。為了快速執(zhí)行對(duì)主鍵范圍的查詢,數(shù)據(jù)使用合并樹(MergeTree)進(jìn)行遞增排序。由于這個(gè)原因,數(shù)據(jù)可以不斷地添加到表中。添加數(shù)據(jù)時(shí)無(wú)鎖處理。

9.索引

例如,帶有主鍵可以在特定的時(shí)間范圍內(nèi)為特定客戶端(Metrica計(jì)數(shù)器)抽取數(shù)據(jù),并且延遲時(shí)間小于幾十毫秒。

10.支持在線查詢

這讓我們使用該系統(tǒng)作為Web界面的后端。低延遲意味著可以無(wú)延遲實(shí)時(shí)地處理查詢,而Yandex.Metrica界面頁(yè)面正在加載(在線模式)。

11.支持近似計(jì)算

1.系統(tǒng)包含用于近似計(jì)算各種值,中位數(shù)和分位數(shù)的集合函數(shù)。

2.支持基于部分(樣本)數(shù)據(jù)運(yùn)行查詢并獲得近似結(jié)果。在這種情況下,從磁盤檢索比例較少的數(shù)據(jù)。

3.支持為有限數(shù)量的隨機(jī)密鑰(而不是所有密鑰)運(yùn)行聚合。在數(shù)據(jù)中密鑰分發(fā)的特定條件下,這提供了相對(duì)準(zhǔn)確的結(jié)果,同時(shí)使用較少的資源。

12.數(shù)據(jù)復(fù)制和對(duì)數(shù)據(jù)完整性的支持。

使用異步多主復(fù)制。寫入任何可用的副本后,數(shù)據(jù)將分發(fā)到所有剩余的副本。系統(tǒng)在不同的副本上保持相同的數(shù)據(jù)。數(shù)據(jù)在失敗后自動(dòng)恢復(fù)

ClickHouse的不完美:

?? 1.不支持事物。

?? 2.不支持Update/Delete操作。

?? 3.支持有限操作系統(tǒng)。

現(xiàn)在支持ubuntu,centos 需要自己編譯,不過(guò)有熱心人已經(jīng)編譯好了,拿來(lái)用就行。對(duì)于Windows? 不支持。

四.ClickHouse應(yīng)用場(chǎng)景

自從ClickHouse2016年6月15日開源后,ClickHouse中文社區(qū)隨后成立。中文開源組開始以易觀,??低?美團(tuán),新浪,京東,58,騰訊,酷狗音樂和俄羅斯開源社區(qū)等人員組成,隨著開源社區(qū)的不斷活躍,陸續(xù)有神州數(shù)碼,青云,PingCAP,中軟國(guó)際等公司成員加入以及其他公司成員加入。初始在群里討論技術(shù)后續(xù)有一些大型公司陸續(xù)運(yùn)用到項(xiàng)目中,介于分享不方便問(wèn)題解決,建立了相應(yīng)的論壇。根據(jù)交流得知一些大公司已經(jīng)運(yùn)用。

#可以應(yīng)用以下場(chǎng)景:

1.電信行業(yè)用于存儲(chǔ)數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)使用。

2.新浪微博用于用戶行為數(shù)據(jù)記錄和分析工作。

3.用于廣告網(wǎng)絡(luò)和RTB,電子商務(wù)的用戶行為分析。

4.信息安全里面的日志分析。

5.檢測(cè)和遙感信息的挖掘。

6.商業(yè)智能。

7.網(wǎng)絡(luò)游戲以及物聯(lián)網(wǎng)的數(shù)據(jù)處理和價(jià)值數(shù)據(jù)分析。

8.最大的應(yīng)用來(lái)自于Yandex的統(tǒng)計(jì)分析服務(wù)Yandex.Metrica,類似于谷歌Analytics(GA),或友盟統(tǒng)計(jì),小米統(tǒng)計(jì),幫助網(wǎng)站或移動(dòng)應(yīng)用進(jìn)行數(shù)據(jù)分析和精細(xì)化運(yùn)營(yíng)工具,據(jù)稱Yandex.Metrica為世界上第二大的網(wǎng)站分析平臺(tái)。ClickHouse在這個(gè)應(yīng)用中,部署了近四百臺(tái)機(jī)器,每天支持200億的事件和歷史總記錄超過(guò)13萬(wàn)億條記錄,這些記錄都存有原始數(shù)據(jù)(非聚合數(shù)據(jù)),隨時(shí)可以使用SQL查詢和分析,生成用戶報(bào)告。

五.ClickHouse 和一些技術(shù)的比較

1.商業(yè)OLAP數(shù)據(jù)庫(kù)

例如:HP Vertica, Actian the Vector,

區(qū)別:ClickHouse是開源而且免費(fèi)的

2.云解決方案

例如:亞馬遜RedShift和谷歌的BigQuery

區(qū)別:ClickHouse可以使用自己機(jī)器部署,無(wú)需為云付費(fèi)

3.Hadoop生態(tài)軟件

例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill

區(qū)別:

ClickHouse支持實(shí)時(shí)的高并發(fā)系統(tǒng)

ClickHouse不依賴于Hadoop生態(tài)軟件和基礎(chǔ)

ClickHouse支持分布式機(jī)房的部署

4.開源OLAP數(shù)據(jù)庫(kù)

例如:InfiniDB, MonetDB, LucidDB

區(qū)別:這些項(xiàng)目的應(yīng)用的規(guī)模較小,并沒有應(yīng)用在大型的互聯(lián)網(wǎng)服務(wù)當(dāng)中,相比之下,ClickHouse的成熟度和穩(wěn)定性遠(yuǎn)遠(yuǎn)超過(guò)這些軟件。

5.開源分析,非關(guān)系型數(shù)據(jù)庫(kù)

例如:Druid , Apache Kylin

區(qū)別:ClickHouse可以支持從原始數(shù)據(jù)的直接查詢,ClickHouse支持類SQL語(yǔ)言,提供了傳統(tǒng)關(guān)系型數(shù)據(jù)的便利。

六.總結(jié)

在大數(shù)據(jù)分析領(lǐng)域中,傳統(tǒng)的大數(shù)據(jù)分析需要不同框架和技術(shù)組合才能達(dá)到最終的效果,在人力成本,技術(shù)能力和硬件成本上以及維護(hù)成本讓大數(shù)據(jù)分析變得成為昂貴的事情。讓很多中小型企業(yè)非??鄲?,不得不被迫租賃第三方大型公司的數(shù)據(jù)分析服務(wù)。

ClickHouse開源的出現(xiàn)讓許多想做大數(shù)據(jù)并且想做大數(shù)據(jù)分析的很多公司和企業(yè)耳目一新。ClickHouse 正是以不依賴Hadoop 生態(tài)、安裝和維護(hù)簡(jiǎn)單、查詢速度快、可以支持SQL等特點(diǎn)在大數(shù)據(jù)分析領(lǐng)域越走越遠(yuǎn)。

#

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Clickhouse是Yandex開源的一個(gè)用于實(shí)時(shí)數(shù)據(jù)分析的數(shù)據(jù)庫(kù),一開始就用在yandex內(nèi)部的多個(gè)數(shù)據(jù)分析業(yè)...
    SoloCafe閱讀 6,249評(píng)論 0 4
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 6,018評(píng)論 0 9
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,317評(píng)論 2 89
  • 什么是ClickHouse? ClickHouse 是面向 OLAP 的分布式列式 DBMS. 在“正常”的面向行...
    c3729438b799閱讀 13,178評(píng)論 0 5
  • 文/夜奔 塞北玉門關(guān)外,春風(fēng)不度,一派荒涼。俗話說(shuō),窮山惡水多刁民。這貧瘠的土地上孕育出了不少兇悍的人物,但凡過(guò)往...
    一夜星辰閱讀 1,031評(píng)論 0 0

友情鏈接更多精彩內(nèi)容