“ 每個做大數(shù)據(jù)的同學,都應該聽過OLAP或者實踐過。”
什么是OLAP多維分析,它究竟有啥作用,如今都有哪些流行的技術解決方案來實現(xiàn)?今天我們詳細聊一聊。
文中部分內(nèi)容參考了朱凱老師的《ClickHouse原理解析》,感興趣的朋友可以買來讀一讀。
01
—
BI系統(tǒng)的演進
在聊OLAP之前,我們先把時間拉長,聊聊BI系統(tǒng)。
(1)傳統(tǒng)BI系統(tǒng)
上個世紀,IT技術迅猛發(fā)展,主要特征就是線下工作的線上化。各種各樣的IT系統(tǒng)(比如ERP、CRM等)在各個行業(yè)落地實施。相應的,我們把這類系統(tǒng)稱之為聯(lián)機事務處理(OLTP)系統(tǒng)。
但是在企業(yè)的運行過程中,不只是有流程審批這些工作,還有很多報表統(tǒng)計、分析決策相關的訴求。但是早期的IT系統(tǒng)的數(shù)據(jù)各自獨立,互相割裂,給分析帶來了極大的困難。
為了解決這一問題,人們提出了數(shù)據(jù)倉庫的概念,把數(shù)據(jù)集中在一起,打通隔閡,并通過分層的方式處理數(shù)據(jù)(關于數(shù)據(jù)倉庫,可以回顧《數(shù)據(jù)倉庫基礎知識》,數(shù)據(jù)倉庫的核心思路維度建模,參考文章《維度建?!?/a>。文章都有著詳細的講解,這里不展開了)。
逐步的,在數(shù)倉基礎上提供數(shù)據(jù)分析的系統(tǒng)慢慢發(fā)展起來。直到90年代,BI系統(tǒng)的概念提出來,專門指代這類分析系統(tǒng)。相對于OLTP系統(tǒng),這類BI系統(tǒng)被稱為聯(lián)機分析(OLAP)系統(tǒng)。
傳統(tǒng)BI系統(tǒng)解決了很多問題,但是存在的瓶頸也是很多的。比如數(shù)據(jù)的分析效率底下、研發(fā)迭代緩慢等,都對應用效果產(chǎn)生了負面影響。
(2)現(xiàn)代BI系統(tǒng)
最近幾年,SaaS模式的興起,為BI系統(tǒng)帶來了新的發(fā)展機遇。例如我們熟知的GA、神策分析、友盟分析等,采取的服務模式都是SaaS化。很多中小型公司的BI系統(tǒng)不再依賴于數(shù)倉的搭建。
而現(xiàn)代BI系統(tǒng)背后的OLAP技術也在不斷發(fā)展。
02
—
什么是OLAP
下面我們詳細聊聊OLAP。
OLAP即聯(lián)機分析,又可以稱為多維分析,是關系型數(shù)據(jù)庫之父Edgar Frank于1993年提出的概念。它指的是通過多種不同的維度審視數(shù)據(jù),進行深層次分析。主要的操作包括下鉆、上卷、切片、切塊等。
參考Excel的數(shù)據(jù)透視表的功能,大家就好理解這些操作了。數(shù)據(jù)透視表實現(xiàn)了對原始數(shù)據(jù)的各種聚合、分解、切片等操作,OLAP也是如此??梢园袿LAP理解成對公司數(shù)據(jù)庫建立一個大的透視表,通過這個透視表進行各種維度的分析,這就是OLAP。
說白了,OLAP是用于我們進行分析的引擎。在很多公司的數(shù)據(jù)架構中,OLAP作為頂層分析應用層與數(shù)據(jù)存儲層的中間處理層。其核心解決的是和數(shù)據(jù)分析相關的需求。
常見的OLAP架構可以分為三類。
(1)ROLAP
第一種架構稱為ROLAP(Relational OLAP),即關系型OLAP。顧名思義,是直接使用關系模型進行構建的。因此,多維分析的操作是可以直接轉換成SQL進行查詢的。
這種架構對數(shù)據(jù)的實時處理能力要求很高。像ClickHouse、Impala、Presto都是典型的RLOAP代表。
(2)MOLAP
第二種架構稱為MOLAP(Multidimensional OLAP),即多維型OLAP。
MOLAP的出現(xiàn)是為了緩解ROLAP的性能問題。其核心思路是對數(shù)據(jù)預先聚合處理,以存儲空間換查詢時間的減少。典型的MOLAP包括Kylin、Druid等。
容易想到,如果維度較多,需要存儲的數(shù)據(jù)量級會有指數(shù)級地上漲。一張千萬級別的數(shù)據(jù)表,可能膨脹到需要存儲億級別的體量。
另外,由于需要進行預計算,MOLAP的數(shù)據(jù)會有一定的滯后性,不能實時進行數(shù)據(jù)分析。并且由于只保留了聚合后的結果數(shù)據(jù),無法查詢明細數(shù)據(jù)。
(3)HOLAP
第三類架構稱為HOLAP(Hybrid OLAP),即混合架構OLAP。
這種架構可以理解成ROLAP和MOLAP的集成。
03
—
OLAP實現(xiàn)技術的演進
前面我們也陸續(xù)介紹了OLAP相關的一些技術。下面我們簡單聊聊OLAP技術的演進過程。
(1)傳統(tǒng)關系型數(shù)據(jù)庫階段
第一個階段稱為傳統(tǒng)的關系型數(shù)據(jù)庫階段。在這個階段中,OLAP主要是以Oracle、MySQL等關系型數(shù)據(jù)庫實現(xiàn)。
在ROLAP架構下,直接使用這些數(shù)據(jù)庫作為存儲和計算的載體;在MOLAP架構下,則借助物化視圖的形式實現(xiàn)數(shù)據(jù)立方體。
該階段中,無論是ROLAP還是MOLAP,當數(shù)據(jù)體量大、維度數(shù)目多的時候,都存在嚴重的性能問題,甚至存在根本查不出結果的情況。
(2)大數(shù)據(jù)技術階段
第二個極端可以稱為大數(shù)據(jù)階段。在這個階段,主要依賴Hive等大數(shù)據(jù)技術進行實現(xiàn)。
以ROLAP為例,傳統(tǒng)的關系型數(shù)據(jù)庫被Hive和SparkSQL這類新型技術所取代。相比傳統(tǒng)的數(shù)據(jù)庫而言,面向海量數(shù)據(jù)的處理性能明顯提升了很多。但是在提供實時的在線查詢服務時,仍然需要幾十秒甚至數(shù)分鐘才能返回。
(3)最新階段
最近幾年,一款新的OLAP解決方案ClickHouse走進了大家的視野。其優(yōu)越的查詢計算性能讓人驚嘆。頭條、阿里、騰訊等大廠也紛紛進行使用。
ClickHouse是由來自俄羅斯的Yandex公司研發(fā)的(Yandex類似于中國的百度,是俄羅斯的本土搜索引擎,占據(jù)俄國47%的搜索市場),是一款開源軟件。
其他一些常見的OLAP技術方案對比如下,供參考。
不同的技術,也都存在各自的優(yōu)點和缺點。在目前階段,沒有哪種OLAP技術是萬能的靈丹妙藥,可以解決所有問題。大家在技術選型時,需要結合自己的業(yè)務數(shù)據(jù)特點,進行選擇。不知道未來是否有一天,能出現(xiàn)完美的OLAP解決方案,一統(tǒng)江湖。期待吧。
關于OLAP就分享這些,歡迎繼續(xù)關注~