CarbonData是華為主導(dǎo)的帶索引的列存儲(chǔ)文件格式的頂級(jí)項(xiàng)目,已經(jīng)孵化畢業(yè)。這個(gè)是繼麒麟以后又一個(gè)由華人主導(dǎo)的阿帕奇頂級(jí)開源項(xiàng)目。而且這個(gè)項(xiàng)目也是非外企的華人主導(dǎo)的第一個(gè)阿帕奇頂級(jí)項(xiàng)目。無論從什么角度來說都是一件值得一寫的事情。
關(guān)于CarbonData到底是什么,我們用該項(xiàng)目的一張圖來展現(xiàn)給大家。
簡(jiǎn)單總結(jié)一下,CarbonData這個(gè)數(shù)據(jù)存儲(chǔ)模式的主要目標(biāo)是希望通過存儲(chǔ)數(shù)據(jù)和索引,包括數(shù)據(jù)內(nèi)外的索引,,以及引入列組等概念,來做成一個(gè)比較通用的存儲(chǔ)格式,使得無論是對(duì)點(diǎn)查詢,范圍查詢以及類似于OLAP的Star Schema的處理都可以達(dá)到比較快的速度。
從技術(shù)實(shí)現(xiàn)上來講,一個(gè)CarbonData的文件是被一系列blocklet組成的,此外還會(huì)加上很多的Metadata,索引,delta等等,這些東西使得對(duì)數(shù)據(jù)的順訊掃描,以及對(duì)某些行的點(diǎn)查詢都只需要掃描相應(yīng)的blocklet,從而達(dá)到在不同應(yīng)用場(chǎng)景下都有比較快的速度。
上圖是一個(gè)文件格式。關(guān)于CarbonData的具體實(shí)現(xiàn),我就不詳細(xì)講了。它和現(xiàn)存的兩個(gè)比較主流的存儲(chǔ)格式ORC以及Parquet的比較可能是大家更感興趣的。
從存儲(chǔ)格式和數(shù)據(jù)模型來講,Parquet和CarbonData比較接近。CarbonData的早期版本更加接近Parquet。后續(xù)的版本則增加了很多的索引的實(shí)現(xiàn)。這種做法的好處是對(duì)更多的OLAP相關(guān)的查詢提供了更好的性能。壞處在于需要更多的存儲(chǔ)空間。
據(jù)我能看到的一些性能比較的數(shù)據(jù)來看。對(duì)大規(guī)模的數(shù)據(jù)量,在TPC-H這樣數(shù)據(jù)倉庫的設(shè)定場(chǎng)景下,大部分的查詢CarbonData能夠明顯快魚ORC和Parquet格式的數(shù)據(jù)源。但是在數(shù)據(jù)存儲(chǔ)空間上來說,Parquet和ORC格式的壓縮比大致在30%,數(shù)據(jù)不同的時(shí)候比例略有不同。而CarbonData的壓縮比從50%到100%不等,有些情況下其存儲(chǔ)格式的大小會(huì)超過原始的文本文件。
我想做數(shù)據(jù)庫的人其實(shí)都知道任何一個(gè)系統(tǒng)的設(shè)計(jì)就是tradeoff。很多時(shí)候多用磁盤就可以讓查詢更快,反之亦然。這個(gè)tradeoff怎么做是比較有講究的。
就我個(gè)人而言,我覺得如果說查詢有需求,那么特定格式特定索引加速查詢而增加磁盤空間未嘗不可。但是也可能是查詢沒有需求的。所以如果CarbonData的索引不是強(qiáng)制必須要建立的,而是用戶可以有選擇的建立,那么我會(huì)對(duì)這個(gè)格式更感興趣。
華為開始進(jìn)軍云計(jì)算和大數(shù)據(jù)市場(chǎng)已經(jīng)很久了。和國內(nèi)其他的公司比,華為進(jìn)軍云計(jì)算大數(shù)據(jù)市場(chǎng)有其非常鮮明的特點(diǎn)。這些特點(diǎn)從好的方面看概括下來有這么兩點(diǎn)。
第一是華為花費(fèi)了大量的時(shí)間精力加入到各個(gè)開源項(xiàng)目里。從OpenStack到Apache,華為對(duì)整個(gè)開源社區(qū)的投入,無論是錢還是人,或者是項(xiàng)目的參與度都是非常的廣泛和深入。這種全面擁抱開源社區(qū)的方式在中國的企業(yè)里面并不多見。
第二華為采取的云計(jì)算的策略和其他公司比如說阿里巴巴的并不是很一樣。華為的戰(zhàn)略上主要是依托自己的行業(yè)優(yōu)勢(shì),努力的發(fā)展私有云,給大企業(yè)提供解決方案。而其公有云的業(yè)務(wù)在我這個(gè)外人看來,近一段時(shí)間來才慢慢開始投入。所以華為在商業(yè)上的策略,很多時(shí)候,也許名氣上不如阿里響亮,但是實(shí)際賺錢來說,利潤更高。
如果說這兩點(diǎn)是明確好的,那么下面要聊的一點(diǎn)就是不知道是好還是不好的了。
華為這個(gè)公司有很強(qiáng)的傳統(tǒng)。它早年的發(fā)展過程和微軟有類似之處。當(dāng)公司還是比較小的時(shí)候,華為人可以以螞蟻群戰(zhàn)術(shù)群策群力的去走別人走過的路,然后讓別人無路可走。無論從早年的電線產(chǎn)品,到后來的IT產(chǎn)品線,比如存儲(chǔ),到再后來的手機(jī),都驗(yàn)證了這樣的一條路。
這一點(diǎn)類似早年微軟,從來都不會(huì)最先進(jìn)入一個(gè)領(lǐng)域,但是后進(jìn)入的時(shí)候,會(huì)戰(zhàn)勝先進(jìn)入的。不管是瀏覽器,還是辦公軟件,差不多都是同樣的套路。
但是微軟這個(gè)公司比較大的問題是,如果沒有人指路了,微軟自己做的產(chǎn)品,就經(jīng)常一塌糊涂了。好在家大業(yè)大,反正有錢。
再后來,微軟發(fā)現(xiàn)抄襲都不靈了,不管是抄搜索引擎還是抄手機(jī),都是一敗涂地。從這個(gè)角度來說,我其實(shí)非常能理解,當(dāng)年微軟是個(gè)小公司,當(dāng)然可以用這樣的戰(zhàn)略。后來微軟已經(jīng)是全球巨無霸的公司了,難道看家本領(lǐng)還是抄抄抄嗎?