1. 程式人生 > >深入分析大數據時代中的數據倉庫技術

深入分析大數據時代中的數據倉庫技術

運營商 olt ltp 千萬 連接 chan 並發 重點 nbsp


技術分享圖片

大數據背景

眾所周知,當前是一個數據爆炸的時代,大數據背景下的數據治理是每一個企業應該重點考慮的問題。例如金融機構、電信運營商這種“傳統”行業每日需要處理的數據量都已經十分巨大了,中小型互聯網公司都已經握著上千萬日活了,就更不要說騰訊,阿裏這樣的互聯網巨頭。

傳統行業的數據治理

以電信運營商為例,一個省級的電信運營商在好多年前一年積累的信息量就已經達到數個PB了,在數據爆炸的時代,我們通過移動互聯網隨時隨地就可以surfing everything,數據爆炸的程度估計可以用指數建模了。

而相比與互聯網企業,這些傳統行業企業的數據量的特點是:數據價值密度大,數據多呈結構化。這是與互聯網企業業務場景的不同之處。這也就意味著,使用大數據開源項目例如Hadoop等難以起到良好的存儲效果。

數據倉庫現狀

數據倉庫與數據庫的區別大家想必早有耳聞,一個以數據分析為主,另一個以數據的增刪查改為主。數據倉庫既然以數據分析為主,沒有一個足夠的數據量談何分析?我們當前的時代,談到數據倉庫,就自然而然與大數據聯系到一起,不然就會被認為是一個沒有價值的數據倉庫。

既然企業的數據治理這麽困難,那數據治理究竟是阿裏巴巴、騰訊這樣的互聯網巨頭抑或是工行、移動、聯通這樣掌握著大量數據的500強企業們的專利呢?

答案也可以說是,也可以說不是。

所謂“是”的原因:

前面說到,傳統行業的數據倉庫應該以結構化的數據查詢為主,在這上面可以進行BI,生成報表,數據挖掘等相關操作。而結構化的數據倉庫實現起來比非結構化的數據倉庫實現起來要困難很多(我自認為)。而開源產品中主要是面向非結構化數據的,諸如greenplum這種開源的結構化數據倉庫其也只能說是一個“廣告”性質的開源產品,畢竟greenplum是靠賣數據倉庫服務而生存的。而這些商用數據倉庫的價格不菲,以teradata數據倉庫為例,每年工商銀行要支付的費用要以億為單位來計算。

高價格就意味著,結構化數據倉庫很多傳統企業用不起,另一方面也沒有足夠的數據量進行支撐,而這些企業你懂得,很多好東西到他們手中,其實並不會用,因此這個答案是“是”。

另一方面也可以說“不是”,原因是:

數據爆炸時代,每個一定規模的公司都會積累一定的數據量,“大數據,小分析”是當前提到的一個概念。每個企業要想合理規劃未來,掌握客觀規律,不進行科技投入終歸是不太可行的。諸如此類公司,最大的困難估計是沒有人會用數據倉庫。不過,隨著雲計算的興起,數據倉庫也已經上雲了,從技術角度看,比較好的雲上數據倉庫有阿裏雲和華為雲兩種可供選擇,其他的從技術角度,客觀分析要比二者性能差。

數據倉庫的架構

當前,數據倉庫的架構主要可以分為兩種:一種是mpp架構,另一種是nosql形式的開源產品。

當今有一句話不知道大家知不知道“Nosql退場,newsql代表未來”。雖然話不能這麽說,但是newsql確實是一個很新的概念,而newsql所采用的架構大多數就是mpp架構。所謂的mpp便是大規模並行處理的意思,mpp架構數據庫除了支持傳統數據庫的acid事物,同時也支持集群的線性擴展。而Nosql最大的不足就是不支持事務或者很弱。

mpp相比較於nosql數據庫,支持事物,支持sql語錄,支持表聯接(join)等復雜查詢,技術復雜度要比nosql高很多。nosql的優點是擴展性更強,因為mpp架構在線性擴容之後需要做數據的重分布,這裏面技術很復雜,感興趣的比較多的話,我以後再開專題講解。

OLAP

提到數據倉庫,就要談論一個概念——OLAP,它的意思是聯機大規模數據處理,說白了就是進行數據分析的意思,與其相對的是OLTP概念。OLTP偏重於並發,側重CURD,例如在線支付、交易場景。OLAP偏重分析,側重查詢,數據挖掘。從數據量上講,OLAP的數據量遠遠大於OLTP系統,OLAP對應著的就是數據倉庫,而OLTP對應著Oracle這類的數據庫。

現在的數據倉庫也好,數據庫也好,只要是滿足高可用場景,就不得不考慮分布式這個概念。

數據庫的分布式系統

OLAP與OLTP都是分布式系統,一個是分布式的數據倉庫,一個是分布式的數據庫。通過通過分布式來保障高可用,當然,這裏面也面臨著一致性的問題需要考慮。

對於OLAP數據倉庫系統來講,我們說過,他是用來對數據進行分析的,很多場景要求即席查詢秒級響應,這個要求是非常高的,感興趣的可以了解一下SQL on hadoop的工具Hive:去趟茅廁的功夫都搞不定。

這就要求分布式架構,同時OLAP還要盡可能地進行SQL語句解析,還要涉及到多表連接這樣復雜的業務,甚至還要支持事物,這時候mpp架構就派上用場了,nosql就比較弱了。而這同樣是HBase等開源項目難以實現的,但是後者畢竟是NoSQL,高擴展性是其生存的必殺技,因為我們前面說過mpp在線性擴展時需要作數據的重分布,目的是為了保障能夠哈希映射,還是很耗時的。

總結

有關數據倉庫的架構層面技術就講解到這裏了,這裏面涉及到的技術十分復雜,尤其是mpp架構。國內在專門研究mpp架構的廠商不多,大型一點的有阿裏和華為在做研究,騰訊、百度貌似也有團隊在搞。相比於mpp架構,很多公司可以選擇開源軟件來實現自己的數據倉庫,一般用得多一點的是hbase,這主要是互聯網場景存儲一些結構化比較弱的數據,實際上更像是一種kv結構。但是對傳統廠商這種數據價值密度大的業務場景,就不得不考慮使用teradata等專業的數據倉庫了。

?

深入分析大數據時代中的數據倉庫技術