學AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

ClickHouse到底是什么呢?

來源:北大青鳥總部 2020年09月02日 14:44

摘要: ClickHouse到底是什么呢?

在玩手機的同時,有木有發(fā)現(xiàn)它很懂你的心,給你推薦的內(nèi)容基本是你可以接受的?甚至還有點讓你小心動,偶爾也讓你有點小驚喜,讓你不得不感嘆系統(tǒng)的強大“太厲害了,居然這也知道”。在這個“最懂你”的系統(tǒng)背后其實是ClickHouse大數(shù)據(jù)庫在提供支持噢。頭條內(nèi)部有上千近萬個clickhouse節(jié)點,單集群最大節(jié)點數(shù)1200,總數(shù)據(jù)量幾十PB;快手內(nèi)部也使用ClickHouse,存儲總量大約10PB。俗話說“二十一天養(yǎng)成一個習慣”,在二十一天重復(fù)的做一件事,最后這件事必定深入你的生活,同樣,頭條快手將你二十一天、二百一十天的數(shù)據(jù)全都進行用戶畫像、用戶行為分析,最后呈現(xiàn)給你的內(nèi)容,必定打動你心啊。


那么ClickHouse到底是什么呢?它有什么特性可以獲得如此多大廠的青睞、互聯(lián)網(wǎng)企業(yè)的使用呢?今天我們就來詳細介紹這款數(shù)據(jù)庫。


ClickHouse是用于聯(lián)機分析(即OLAP,OnLineAnalyticalProcessing)的列式數(shù)據(jù)庫管理系統(tǒng)DBMS。OLAP與OLTP是相對的,OLAP主要是用于讀取數(shù)據(jù)、進行數(shù)據(jù)分析,輔助運營決策分析;OLTP(OnLineTransaction Processing)聯(lián)機事務(wù)處理是進行事務(wù)的增刪改查操作,比如在電商系統(tǒng)中進行商品的購買、庫存減少等。


在OLAP場景中側(cè)重于對數(shù)據(jù)的分析,因此讀數(shù)據(jù)操作是多于寫數(shù)據(jù)的。在數(shù)據(jù)一次性寫入后,數(shù)據(jù)工程師需要從各個角度對數(shù)據(jù)進行挖掘、分析,直到發(fā)現(xiàn)其中的業(yè)務(wù)變化趨勢,對于數(shù)據(jù)的讀取是非常頻繁,而且不需要數(shù)據(jù)的更新,也不需要事務(wù)來強調(diào)一致性,只要獲取到數(shù)據(jù)就好啦,ClickHouse非常適合作為底層數(shù)據(jù)庫提供支持。


所謂列式數(shù)據(jù)庫指的是數(shù)據(jù)在數(shù)據(jù)庫中存儲的方式。在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫如Mysql中,數(shù)據(jù)是按行來存儲的,而在列式數(shù)據(jù)庫如ClickHouse中,數(shù)據(jù)是按列來存儲的。這樣存儲的好處就是在做數(shù)據(jù)分析時選擇某幾列來作為分析屬性,獲取數(shù)據(jù)非???,延遲低,如果按行讀取,每次只能讀取一個數(shù)據(jù),有10000條就需要讀取1000次,降低了效率。



在分析場景下,列式數(shù)據(jù)庫還有很多其它的優(yōu)點,比如低成本、低帶寬、低延時。在列式數(shù)據(jù)庫中我們知道同一列的數(shù)據(jù)都是一個類型的,那么可以將它進行壓縮,在同樣的存儲空間下可以放更多的數(shù)據(jù),既節(jié)省了網(wǎng)絡(luò)帶寬,也提高了數(shù)據(jù)的cache命中率,更容易更快的獲取到數(shù)據(jù)。



介紹了ClickHouse的基本特性之后,我們再從存儲層和計算層看看它又給我們帶來哪些驚喜呢?在存儲層它實現(xiàn)了數(shù)據(jù)有序存儲、主鍵索引、稀疏索引、數(shù)據(jù)分區(qū)分片、主備復(fù)制等功能。


所謂數(shù)據(jù)的有序存儲指的是數(shù)據(jù)在建表時可以將數(shù)據(jù)按照某些列進行排序,排序之后,相同類型的數(shù)據(jù)在磁盤上有序的存儲,在進行范圍查詢時所獲取的數(shù)據(jù)都存儲在一個或若干個連續(xù)的空間內(nèi),極大的減少了磁盤IO時間;所謂數(shù)據(jù)分區(qū)分片,指的是在ClickHouse的部署模式上支持單機模式和分布式集群模式,在分布式中會把數(shù)據(jù)分為多個分片,并且分布到不同的節(jié)點上,它提供了豐富的分片策略,包含random隨機分片(將寫入數(shù)據(jù)隨機分發(fā)到集群中的某個節(jié)點)、constant固定分片(將寫入數(shù)據(jù)分發(fā)到某個固定節(jié)點)、columnvalue分片(將寫入數(shù)據(jù)按某一列的值進行hash分片)、自定義表達式分片(將寫入數(shù)據(jù)按照自定義的規(guī)則進行hash分片)。


在計算層ClickHouse提供了多核并行、分布式計算、近似計算、復(fù)雜數(shù)據(jù)類型支持等技術(shù)能力,最大化程度利用CPU資源,提升系統(tǒng)查詢速度。所謂多核并行指的是在ClickHouse中數(shù)據(jù)是被分成了多個分區(qū),查詢某條數(shù)據(jù)時通過多分區(qū)的數(shù)據(jù)利用CPU的多核同時并行處理獲取數(shù)據(jù),降低了查詢時長;所謂分布式計算指的是ClickHouse將查詢?nèi)蝿?wù)拆分成多個子任務(wù)下發(fā)到多個集群中進行多機并行處理,最后匯聚結(jié)果給到用戶,提供最近hostname規(guī)則(即將任務(wù)下發(fā)到機器最近的hostname節(jié)點)、inorder(即按順序進行分發(fā),當某個分片不可用時,下發(fā)到下一個分片);所謂近似計算指的是犧牲一定的精確度獲取數(shù)據(jù),在海量數(shù)據(jù)的分析中,其實并不需要非常精準的數(shù)據(jù),近似數(shù)據(jù)足以分析決策,ClickHouse提供了中位數(shù)、分位數(shù)等多種聚合函數(shù),極大的提高了查詢性能,減輕了計算壓力。


ClickHouse的發(fā)展可謂是非常快速,除了各個大廠都在使用之外,在社區(qū)方面,github標記為星級項目的人超過9000,成為最受開源的項目之一。它是一套完整的解決方案,自帶存儲能力、計算能力,自己實現(xiàn)了分布式計算、分布式集群部署,完全高可用,真可謂是簡單靈活又不失強大!


在云計算、大數(shù)據(jù)的互聯(lián)網(wǎng)時代,數(shù)據(jù)分析成為了一項尤其重要的能力,如果你還會這么一門大數(shù)據(jù)庫技術(shù),毫無疑問,絕對會為你的簡歷加分喔,畢竟阿里、騰訊、頭條、快手都已經(jīng)在使用ClickHouse了呀~



熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接