引言
Clickhouse 數(shù)據(jù)庫來自于戰(zhàn)斗民族俄羅斯,其速度彪悍程度同樣令人敬畏,本文作為引擎專題將為大家介紹Clickhouse當(dāng)前支持的不同引擎特性,以及如何快速應(yīng)用到自己項(xiàng)目中。我將根據(jù)實(shí)際的項(xiàng)目經(jīng)驗(yàn)并帶點(diǎn)個(gè)人思考為大家做出示范,注意,本文并不對(duì)該數(shù)據(jù)庫做全面介紹,如果你想了解安裝和其它細(xì)節(jié)問題,可以從官方論壇(如果你看不懂英語,給我打個(gè)賞嘛,或許我們之間的故事就開始了)或其它渠道進(jìn)行了解。
無論怎樣,目前國(guó)內(nèi)對(duì)Clickhouse的討論和應(yīng)用還處于萌芽的階段,你可能很難找到相關(guān)的介紹,本人實(shí)際遇到的問題大多通過國(guó)外論壇的討論并加以總結(jié),文章的描述可能不盡專業(yè),這里還希望各位大神批評(píng)指正互相探討。
了解Clickhouse
Clickhouse是Yandex公司的開源作品,Yandex是一家搜索引擎公司,號(hào)稱俄羅斯的“百度”,內(nèi)部很多項(xiàng)目采用了該數(shù)據(jù)庫進(jìn)行大數(shù)據(jù)管理??傊?,你放心就是,人家大公司的作品你不需要過多懷疑可靠性。
Clickhouse專注于大數(shù)據(jù)的處理,號(hào)稱大數(shù)據(jù)的數(shù)據(jù)庫感覺很屌嗎?其實(shí)也不是,所謂術(shù)業(yè)有專攻,Clickhouse適合當(dāng)做數(shù)據(jù)倉庫進(jìn)行大數(shù)據(jù)分析,但絕對(duì)不能拿來支持業(yè)務(wù)的處理,這和Mysql是兩種概念。Mysql很好地支持事務(wù),這主要是從安全和數(shù)據(jù)的完整性考慮。而Clickhouse完全是分析型,要從一堆億萬數(shù)據(jù)中分析出你認(rèn)為很有用的東西,速度至上,所以不支持耗時(shí)的事務(wù)。
速度!速度!速度是Clickhouse的最大特色了,如果你剛好追求這個(gè)東西,那么Clickhouse很有可能適合你,你想對(duì)100億行數(shù)據(jù)實(shí)現(xiàn)毫秒查詢嗎?你想實(shí)現(xiàn)1秒內(nèi)單機(jī)20000條數(shù)據(jù)插入嗎?你想對(duì)億萬數(shù)據(jù)實(shí)現(xiàn)去重嗎?你如果大聲說想,那就對(duì)了。
Clickhouse能夠支持Sql語句實(shí)時(shí)查詢并生產(chǎn)數(shù)據(jù)報(bào)告。也就是說,如果你熟悉Sql語法那么你將會(huì)比較輕松地使用這個(gè)數(shù)據(jù)庫,當(dāng)然了,Clickhouse的sql語法在一些細(xì)節(jié)上將體現(xiàn)出一些差異,相較于Mysql在連接查詢、函數(shù)應(yīng)用和字段類型的支持上都有明顯的體會(huì)。Clickhouse函數(shù)庫極其豐富而強(qiáng)大,同時(shí)支持?jǐn)?shù)組等復(fù)雜的字段類型,在大部分情況下你能應(yīng)對(duì)各種蛋疼的數(shù)據(jù)關(guān)系,我想高傲而機(jī)智的你早已胸懷于心躍躍欲試。
任何大規(guī)模的問題,貌似專業(yè)的你都會(huì)拋出一句話:“容災(zāi)不?分布式不?”,我知道你說這句話的時(shí)候嘴角上揚(yáng)了一下,而該配合演出的我當(dāng)然會(huì)說:“easy easy”。Clickhouse支持在數(shù)百個(gè)節(jié)點(diǎn)的集群上執(zhí)行,什么單點(diǎn)故障后的請(qǐng)求轉(zhuǎn)移啊、主從復(fù)制啊、分布式處理啊,統(tǒng)統(tǒng)滿足你所有的幻想~關(guān)鍵是,整個(gè)配置過程相當(dāng)優(yōu)雅!
以上從個(gè)人角度來概括對(duì)Clickhouse的基本印象,如果你覺得有那么點(diǎn)意思,那么接下來我們可以回歸到本文的重點(diǎn):引擎!Clickhouse支持Log、Memory、Merge三大類引擎,不同引擎的應(yīng)用環(huán)境都非常不一樣,而大多數(shù)應(yīng)用場(chǎng)景會(huì)用到的引擎是Merge系列,Merge系列又分為MergeTree、CollapsingMergeTree、SummingMergeTree、AggregatingMergeTree、ReplacingMergeTree這些引擎,再配合Distributed引擎將構(gòu)成本文的主要討論內(nèi)容。
引擎的那些事
抱歉,寫到這里剛好端午節(jié)了,等我過完節(jié)再更新下討論討論。