- ClickHouse性能之巔:從架構(gòu)設計解讀性能之謎
- 陳峰
- 1105字
- 2023-02-23 16:29:14
自序 Foreword
硅谷著名投資人納瓦爾說過:“真正的知識具有內(nèi)在的關聯(lián)性,就像一根鏈條,從基礎層面到應用層面環(huán)環(huán)相扣。如果有人用詞花哨,動輒談論宏大而復雜的概念,那么他們很有可能并不了解自己所談論的東西。我認為最聰明的人是可以把事情深入淺出地給孩子講解清楚的人,否則說明他自己也沒有真正理解?!倍嗄甑那髮W經(jīng)歷,讓我對這段話深信不疑。
當我開始從事架構(gòu)師的工作時,我接觸到了一些業(yè)內(nèi)的全新技術。我驚訝地發(fā)現(xiàn),對于蓬勃發(fā)展的大數(shù)據(jù)技術來說,如果沒有足夠的時間積累學習資源,會導致對很多知識的理解只停留在表面,給實際應用帶來很多誤解。用納瓦爾的話說,就是沒有“從基礎層面到應用層面環(huán)環(huán)相扣”。
絕大多數(shù)介紹ClickHouse的文章都在強調(diào)其性能很強,是新一代的數(shù)倉。各種文檔里都對比了ClickHouse與其他數(shù)倉的性能差距,似乎它在性能上全面碾壓了其他數(shù)倉。那么這是否意味著ClickHouse能夠完全取代Hive?還有很多文章在強調(diào)ClickHouse的實時性,那么是否意味著ClickHouse比Kylin強大?
還有很多文章強調(diào)Flink是真正的實時流處理框架,而Spark Stream是通過將批的間隔設置得非常小來使用“微批”模擬實時。從代碼層面看,“真正的流”和“微批模擬的流”有什么本質(zhì)的區(qū)別呢?“真正的流”難道不是像“微批模擬的流”那樣使用線性表容器存儲數(shù)據(jù)嗎?從這個層面看,“真正的流”和“微批模擬的流”并沒有本質(zhì)上的區(qū)別,那么又是什么導致了Flink和Spark Stream的區(qū)別呢?到底是Flink優(yōu)秀還是Spark優(yōu)秀呢?
其實,上面的問題是沒有準確答案的。任何架構(gòu)都是一體兩面的,在獲得一個優(yōu)勢的同時,必然需要付出一些代價,而這些代價最終會成為這個架構(gòu)的缺陷。本書旨在通過對ClickHouse架構(gòu)的分析,引出架構(gòu)背后的思考,向讀者傳遞架構(gòu)設計背后的哲學。
脫離實際場景來選型,是無法設計出最合適的架構(gòu)的。讀者需要注意句中的“最合適”一詞。沒有正確的架構(gòu),只有最合適的架構(gòu)。這個“最合適”,需要架構(gòu)師依據(jù)實際場景進行選擇,架構(gòu)不存在“銀彈”。
軟件的世界就是這樣,沒有標準答案。而這也正是這個世界的魅力所在,否則我們只需要準備一個列表,將所有可能的情況和對應的方案列出來就行了。
停止無謂的孰優(yōu)孰劣的爭吵,真正思考架構(gòu)的本質(zhì)、軟件的本質(zhì)、技術的本質(zhì)吧!當我們被架構(gòu)優(yōu)秀的一面打動時,要清醒地認識到背后一定有著還沒看清的陷阱。運用之妙,存乎一心,當我們看到架構(gòu)的缺陷時,也要記得在其他場景中也一定有其發(fā)光發(fā)熱的時候。我們不應該被技術名詞所束縛,而應該掌控這些技術,讓這些技術真正為我們所用。
請讀者跟隨本書,從ClickHouse開始,撥開技術的重重迷霧,將知識梳理成體系化的鏈條。當我們能將知識關聯(lián)起來時,我們看待技術世界的視角一定會有所變化,也不會再停留在孰優(yōu)孰劣的層面了。那么,您準備好和我一起重新認識這個技術世界了嗎?
- 程序員面試筆試寶典(第3版)
- OpenDaylight Cookbook
- C++程序設計(第3版)
- Interactive Data Visualization with Python
- 樂學Web編程:網(wǎng)站制作不神秘
- 營銷數(shù)據(jù)科學:用R和Python進行預測分析的建模技術
- Eclipse Plug-in Development:Beginner's Guide(Second Edition)
- EPLAN實戰(zhàn)設計
- Learn React with TypeScript 3
- 量化金融R語言高級教程
- Highcharts Cookbook
- Service Mesh實戰(zhàn):基于Linkerd和Kubernetes的微服務實踐
- Clean Code in C#
- .NET 4.0面向?qū)ο缶幊搪劊簯闷?/a>
- Hacking Android