clickhouse基礎(chǔ)學(xué)習(xí)

一并思、是什么

ClickHouse是一個(gè)開(kāi)源的列式數(shù)據(jù)庫(kù)管理系統(tǒng),專(zhuān)門(mén)設(shè)計(jì)用于處理大規(guī)模數(shù)據(jù)分析和OLAP(在線分析處理)工作負(fù)載。它最初由俄羅斯的Yandex公司開(kāi)發(fā),并于2016年發(fā)布為開(kāi)源項(xiàng)目夕冲。

二、有什么特點(diǎn)

  1. 列式存儲(chǔ):ClickHouse以列式存儲(chǔ)方式組織數(shù)據(jù)裂逐,這意味著相同列中的數(shù)據(jù)存儲(chǔ)在一起,這種存儲(chǔ)方式在分析查詢(xún)和聚合操作中非常高效泣栈。

  2. 高性能:ClickHouse被設(shè)計(jì)成能夠處理非常大的數(shù)據(jù)集卜高,并能夠快速執(zhí)行復(fù)雜的分析查詢(xún)。它通過(guò)使用多核CPU和高度優(yōu)化的查詢(xún)執(zhí)行引擎來(lái)實(shí)現(xiàn)高性能南片。

  3. 支持SQL:ClickHouse支持SQL查詢(xún)語(yǔ)言掺涛,這使得它易于使用和集成到現(xiàn)有的數(shù)據(jù)分析工具和應(yīng)用程序中。

  4. 分布式架構(gòu):ClickHouse可以輕松擴(kuò)展到多個(gè)節(jié)點(diǎn)疼进,以處理大規(guī)模數(shù)據(jù)集薪缆。它支持?jǐn)?shù)據(jù)分片、負(fù)載均衡和故障容忍伞广,以確保高可用性和可伸縮性拣帽。

  5. 實(shí)時(shí)數(shù)據(jù)導(dǎo)入:ClickHouse支持實(shí)時(shí)數(shù)據(jù)導(dǎo)入,可以從各種數(shù)據(jù)源實(shí)時(shí)接收數(shù)據(jù)嚼锄,這對(duì)于處理流式數(shù)據(jù)和實(shí)時(shí)分析非常有用减拭。

  6. 開(kāi)源:ClickHouse是開(kāi)源的,可以免費(fèi)使用和定制区丑,因此它在許多組織中得到了廣泛的應(yīng)用拧粪。

三修陡、常用的業(yè)務(wù)場(chǎng)景

  1. 數(shù)據(jù)倉(cāng)庫(kù): ClickHouse可以用作企業(yè)數(shù)據(jù)倉(cāng)庫(kù),用于存儲(chǔ)和分析大規(guī)模的歷史數(shù)據(jù)可霎。它支持高性能的復(fù)雜查詢(xún)和聚合操作魄鸦,有助于發(fā)現(xiàn)數(shù)據(jù)中的趨勢(shì)和洞察。

  2. 實(shí)時(shí)報(bào)告和儀表盤(pán): ClickHouse可以用于構(gòu)建實(shí)時(shí)報(bào)告和儀表盤(pán)癣朗,通過(guò)實(shí)時(shí)數(shù)據(jù)導(dǎo)入和快速查詢(xún)執(zhí)行拾因,幫助業(yè)務(wù)決策者實(shí)時(shí)監(jiān)控業(yè)務(wù)績(jī)效。

  3. 廣告分析: 在廣告技術(shù)領(lǐng)域斯棒,ClickHouse可用于跟蹤廣告活動(dòng)的效果盾致,分析點(diǎn)擊率、轉(zhuǎn)化率和ROI等關(guān)鍵指標(biāo)荣暮。

  4. 日志分析: ClickHouse非常適合處理大量日志數(shù)據(jù)庭惜,例如服務(wù)器日志、應(yīng)用程序日志和網(wǎng)絡(luò)流量日志穗酥。它能夠快速執(zhí)行日志分析查詢(xún)护赊,幫助識(shí)別問(wèn)題和異常。

  5. 事件追蹤: 許多應(yīng)用程序需要追蹤用戶活動(dòng)和事件砾跃。ClickHouse可以用于存儲(chǔ)和分析這些事件數(shù)據(jù)骏啰,以提供洞察用戶行為和趨勢(shì)的見(jiàn)解。

  6. 時(shí)序數(shù)據(jù)分析: 時(shí)序數(shù)據(jù)(例如傳感器數(shù)據(jù)抽高、監(jiān)控?cái)?shù)據(jù)判耕、時(shí)間序列數(shù)據(jù)庫(kù)中的數(shù)據(jù))的存儲(chǔ)和分析是ClickHouse的另一個(gè)強(qiáng)大用途。它支持時(shí)間窗口查詢(xún)和聚合翘骂,使其成為處理時(shí)序數(shù)據(jù)的理想選擇壁熄。

  7. 數(shù)據(jù)湖分析: ClickHouse可以與數(shù)據(jù)湖架構(gòu)集成,用于在數(shù)據(jù)湖中存儲(chǔ)和分析大規(guī)模數(shù)據(jù)集碳竟。

  8. 在線廣告投放: ClickHouse可以幫助廣告技術(shù)公司實(shí)時(shí)調(diào)整廣告投放策略草丧,以提高廣告的定位精度和效率。

  9. 金融分析: 金融領(lǐng)域需要處理大量的交易和市場(chǎng)數(shù)據(jù)莹桅。ClickHouse可以用于執(zhí)行復(fù)雜的金融分析昌执,例如風(fēng)險(xiǎn)評(píng)估、投資組合優(yōu)化和市場(chǎng)趨勢(shì)分析诈泼。

  10. 運(yùn)營(yíng)分析: 企業(yè)可以使用ClickHouse來(lái)分析運(yùn)營(yíng)數(shù)據(jù)懂拾,包括庫(kù)存管理、供應(yīng)鏈優(yōu)化和客戶關(guān)系管理厂汗。

總之委粉,ClickHouse在需要大規(guī)模數(shù)據(jù)存儲(chǔ)、高性能查詢(xún)和實(shí)時(shí)數(shù)據(jù)分析的各種業(yè)務(wù)場(chǎng)景中都可以發(fā)揮作用娶桦。它的設(shè)計(jì)使其適用于處理大數(shù)據(jù)和復(fù)雜分析需求的情況贾节。

四汁汗、為什么它可以查詢(xún)的這么快?

  1. 列式存儲(chǔ): 列式存儲(chǔ)栗涂,減少I(mǎi)/O操作和數(shù)據(jù)傳輸量知牌。ClickHouse采用列式存儲(chǔ),這意味著它將相同列的數(shù)據(jù)存儲(chǔ)在一起斤程,而不是行式存儲(chǔ)中將整行數(shù)據(jù)存儲(chǔ)在一起角寸。這種列式存儲(chǔ)方式使得只需讀取和解析實(shí)際需要的列數(shù)據(jù),從而減少了I/O操作和數(shù)據(jù)傳輸量忿墅。這對(duì)于數(shù)據(jù)分析查詢(xún)非常高效扁藕,因?yàn)橥ǔV恍枰徊糠至袛?shù)據(jù)來(lái)回答查詢(xún)。

  2. 數(shù)據(jù)壓縮: 壓縮減少傳輸時(shí)間疚脐。ClickHouse使用高度優(yōu)化的壓縮算法亿柑,將數(shù)據(jù)在存儲(chǔ)時(shí)壓縮,這不僅減小了磁盤(pán)占用空間棍弄,還減少了數(shù)據(jù)傳輸時(shí)間望薄。在查詢(xún)時(shí),ClickHouse能夠在內(nèi)存中快速解壓數(shù)據(jù)呼畸,從而加快查詢(xún)速度痕支。

  3. 多核并行處理: 數(shù)據(jù)存在分布式多態(tài)服務(wù)器上,利用多臺(tái)服務(wù)器的CPU并行查詢(xún)蛮原。ClickHouse充分利用多核CPU和多線程技術(shù)卧须,可以并行執(zhí)行查詢(xún)操作。這意味著可以同時(shí)處理多個(gè)查詢(xún)片段儒陨,提高了查詢(xún)性能故慈。

  4. 合并操作: 按照查詢(xún)條件只查詢(xún)某些數(shù)據(jù)塊的數(shù)據(jù),掃描的數(shù)據(jù)范圍會(huì)變小框全。ClickHouse使用合并操作來(lái)優(yōu)化查詢(xún),避免不必要的數(shù)據(jù)移動(dòng)干签。它將數(shù)據(jù)按塊(block)存儲(chǔ)津辩,并在查詢(xún)時(shí)盡可能使用整個(gè)塊。這減少了不必要的數(shù)據(jù)復(fù)制和操作容劳。

  5. 索引技術(shù): ClickHouse支持索引喘沿,這可以加速某些查詢(xún),特別是在過(guò)濾條件上使用索引列時(shí)竭贩。索引使得數(shù)據(jù)的查找更加高效蚜印,從而加速了查詢(xún)。

  6. 向量化執(zhí)行: ClickHouse使用向量化查詢(xún)執(zhí)行留量,這意味著它可以在一次操作中處理多個(gè)數(shù)據(jù)點(diǎn)窄赋,而不是逐個(gè)處理哟冬。這種向量化執(zhí)行方式減少了CPU指令的開(kāi)銷(xiāo),提高了查詢(xún)速度忆绰。

  7. 數(shù)據(jù)分區(qū)和負(fù)載均衡: ClickHouse支持?jǐn)?shù)據(jù)分區(qū)和負(fù)載均衡浩峡,可以將數(shù)據(jù)分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,并在查詢(xún)時(shí)將工作負(fù)載均衡分配到不同的節(jié)點(diǎn)上错敢。這有助于水平擴(kuò)展和提高查詢(xún)性能翰灾。

五、clickhouse的底層數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)在clickhouse以何種形式被存儲(chǔ)要看使用的是什么表引擎稚茅。表引擎纸淮,決定了一張 數(shù)據(jù)表最終的性格,它擁有何種特性亚享、數(shù)據(jù)以何種形式被存儲(chǔ)以及如何被加載咽块。

5.1 MergeTree家族(合并樹(shù))

之所以說(shuō)是合并樹(shù)家族,是因?yàn)镸ergeTree衍生了好幾個(gè)與之類(lèi)似的引擎虹蒋。

  • MergeTree 最基礎(chǔ)的版本,支持?jǐn)?shù)據(jù)分區(qū),后臺(tái)自動(dòng)合并糜芳。

  • ReplacingMergeTree: 支持替換舊數(shù)據(jù)的MergeTree。在同一個(gè)分區(qū)內(nèi)魄衅,clickhouse在后臺(tái)合并數(shù)據(jù)的時(shí)候會(huì)刪除重復(fù)數(shù)據(jù)峭竣,注意這里是同一個(gè)分區(qū)內(nèi)的去重效果。

  • SummingMergeTree: 支持把多行數(shù)據(jù)合并求和的MergeTree晃虫。在合并分區(qū)的時(shí)候皆撩,將同一分組下的多行數(shù)據(jù)提前匯總合并成一行,這樣減少了數(shù)據(jù)行哲银,又降低了后續(xù)匯總查詢(xún)的開(kāi)銷(xiāo)扛吞。

  • AggregatingMergeTree: 支持聚合的MergeTree。將需要聚合的數(shù)據(jù)預(yù)先計(jì)算出來(lái)荆责,并將結(jié)果保存起來(lái)滥比,在后續(xù)進(jìn)行聚合查詢(xún)的時(shí)候直接使用結(jié)果數(shù)據(jù)。

  • CollapsingMergeTree: 支持?jǐn)?shù)據(jù)折疊(意思就是以增代刪)的MergeTree做院。它通過(guò)定義一個(gè)sign標(biāo)志位字段盲泛,記錄數(shù)據(jù)行的狀態(tài),如果sign標(biāo)記為1键耕,則表示這是一行有效的數(shù)據(jù)寺滚,如果是-1,則表示這行數(shù)據(jù)需要被刪除屈雄。CollapsingMergeTree合并數(shù)據(jù)時(shí)村视,同一分區(qū),sign為1和-1的數(shù)據(jù)會(huì)被抵消刪除酒奶。猶如折疊一般蚁孔。這個(gè)引擎還有個(gè)使用條件奶赔,就是對(duì)于寫(xiě)入數(shù)據(jù)的順序有嚴(yán)格的要求,如果先寫(xiě)入sign=-1的數(shù)據(jù)勒虾,在寫(xiě)入sign=1的數(shù)據(jù)纺阔,則不能夠折疊。所以如果你寫(xiě)入數(shù)據(jù)是用的多線程寫(xiě)入修然,大概率有問(wèn)題笛钝。

  • VersionedCollapsingMergeTree:結(jié)合版本控制的CollapsingMergeTree。這個(gè)就是為了解決上面說(shuō)的寫(xiě)入順序的問(wèn)題愕宋。加了個(gè)版本號(hào)玻靡。數(shù)據(jù)會(huì)自動(dòng)按照orderby version,這樣就有確定的順序中贝。

    ......等等

    MergeTree的存儲(chǔ)結(jié)構(gòu).png

5.2 Memory(內(nèi)存)

5.3 文件

5.4 第三方自定義

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末囤捻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子邻寿,更是在濱河造成了極大的恐慌蝎土,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绣否,死亡現(xiàn)場(chǎng)離奇詭異誊涯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蒜撮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)暴构,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人段磨,你說(shuō)我怎么就攤上這事取逾。” “怎么了苹支?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵砾隅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我债蜜,道長(zhǎng)琉用,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任策幼,我火速辦了婚禮,結(jié)果婚禮上奴紧,老公的妹妹穿的比我還像新娘特姐。我一直安慰自己,他們只是感情好黍氮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布唐含。 她就那樣靜靜地躺著浅浮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捷枯。 梳的紋絲不亂的頭發(fā)上滚秩,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音淮捆,去河邊找鬼郁油。 笑死,一個(gè)胖子當(dāng)著我的面吹牛攀痊,可吹牛的內(nèi)容都是我干的桐腌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼苟径,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼案站!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起棘街,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蟆盐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后遭殉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體石挂,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年恩沽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了誊稚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡罗心,死狀恐怖里伯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渤闷,我是刑警寧澤疾瓮,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站飒箭,受9級(jí)特大地震影響狼电,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弦蹂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一肩碟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凸椿,春花似錦削祈、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)咙崎。三九已至,卻和暖如春吨拍,著一層夾襖步出監(jiān)牢的瞬間褪猛,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工羹饰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伊滋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓严里,卻偏偏與公主長(zhǎng)得像新啼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刹碾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容