1.1 什么是OLAP?
OLAP(OnLine Analytical Processing),即聯(lián)機分析處理。OLAP對業(yè)務數(shù)據(jù)執(zhí)行多維分析,并提供復雜計算,趨勢分析和復雜數(shù)據(jù)建模的能力。它主要用于支持企業(yè)決策管理分析,是許多商務智能(BI)應用程序背后的技術。 OLAP使最終用戶可以對多個維度的數(shù)據(jù)進行即席分析,從而獲取他們所需知識,以便更好地制定決策。OLAP技術已被定義為實現(xiàn)“快速訪問共享的多維信息”的能力。
1.2 為什么要多維分析?
業(yè)務其實是一個多維活動。企業(yè)通過考慮許多變量來跟蹤其業(yè)務活動,在電子表格上跟蹤這些變量時,將它們設置在軸(x和y)上。例如,可以在一年的時間內(nèi)按月跟蹤銷售額,其中可以在y軸上顯示銷售指標,而在x軸上可以顯示月份。而要分析業(yè)務的健康狀況并計劃未來的活動,必須連續(xù)跟蹤許多變量組或參數(shù)。例如,一個業(yè)務至少要考慮以下方面:客戶,地點,期間,銷售人員和產(chǎn)品。這些維度構成了公司計劃,分析和報告活動的基礎。它們共同代表了“整個”業(yè)務狀況,為所有業(yè)務計劃、分析和報告活動奠定了基礎。
1.3 OLAP的起源
OLAP這個名詞最早是在1993年,由被稱為“關系數(shù)據(jù)庫之父”的Edgar F. Codd在他的白皮書《Providing OLAP to User-Analysts: An IT Mandate》中首次提出的。在這個白皮書中,他為OLAP產(chǎn)品建立了12條評估規(guī)則:
- Multidimensional Conceptual View(多維概念視圖): 在用戶分析師看來,企業(yè)天然是多維的。 例如,可以按地區(qū),產(chǎn)品,時間段或方案(例如實際,預算或預測)查看利潤。多維數(shù)據(jù)模型使用戶能夠更直接,更直觀地處理數(shù)據(jù),包括“分片和分塊”。
- Transparency(透明性準則):OLAP應該是開放系統(tǒng)體系結構的一部分,該體系結構可以嵌入到用戶期望的任何位置,而不會影響宿主工具的功能。不應把OLAP工具的數(shù)據(jù)源暴露給用戶,數(shù)據(jù)源可能是同構的或異構的。
- Accessibility(存取能力推測):OLAP工具應該能夠應用自己的邏輯結構來訪問異構數(shù)據(jù)源,并執(zhí)行向用戶呈現(xiàn)連貫視圖所需的任何轉換。工具(而不是用戶)應關注物理數(shù)據(jù)的來源。
- Consistent Reporting Performance(穩(wěn)定的報表性能):隨著維度數(shù)量的增加,OLAP工具的性能不會受到顯著影響。
- Client-Server Architecture(客戶/服務器架構):OLAP工具的服務器組件應該足夠智能,各種客戶端可以輕松地連接它。服務器應該能夠在不同的數(shù)據(jù)庫之間映射和合并數(shù)據(jù)。
- Generic Dimensionalityc(維的等同性準則):每個數(shù)據(jù)維度的結構和操作能力都應相同。
- Dynamic Sparse Matrix Handling(動態(tài)的稀疏矩陣處理準則):OLAP服務器的物理結構應具有最佳的稀疏矩陣處理。
- Multi-User Support(多用戶支持能力準則):OLAP工具必須提供并發(fā)檢索和更新訪問,完整性和安全性。
- Unrestricted Cross-dimensional Operations(非受限的跨維操作):計算設施必須允許跨任意數(shù)量的數(shù)據(jù)維度進行計算和數(shù)據(jù)處理,并且不得限制數(shù)據(jù)單元之間的任何關系。
- Intuitive Data Manipulation(直觀的數(shù)據(jù)操作):合并路徑中固有的數(shù)據(jù)操作,例如向下鉆取或縮小,應通過對分析模型單元的直接操作來完成,而不需要使用菜單或跨用戶界面多次行程。
- Flexible Reporting(靈活的報告生成):報告工具應以用戶想要查看的任何方式顯示信息。
- Unlimited Dimensions and Aggregation Levels(不受限的維度和聚合層次)。
1.4 OLAP的發(fā)展歷史
雖然OLAP的概念是在1993年才提出來的,但是支持OLAP相關產(chǎn)品的發(fā)展歷史,最早可追溯到1975年:
- 第一款OLAP產(chǎn)品Express于1975年問世,隨著被Oracle收購后繁榮發(fā)展了30余年,最后由繼任者Oracle 9i替代。
- 1979年,第一個電子表格應用程序VisiCalc投放市場。 VisiCalc具有當今大多數(shù)電子表格應用程序中標準的基本行和列結構。
- 1982年,Comshare開發(fā)了一種新的決策支持系統(tǒng)軟件(System W),這是第一個金融領域的OLAP工具,也是第一個在其多維建模中應用hypercube方法的工具。
- 1983年,IBM推出了Lotus 1-2-3。 它的結構類似于Visicalc,并迅速取代了Visicalc。 Lotus 1-2-3成為Windows之前的主流電子表格應用程序。
- 1984年,第一款ROLAP產(chǎn)品Metaphor發(fā)布。該多維產(chǎn)品建立了新概念,例如客戶/服務器計算,關系數(shù)據(jù)的多維處理,工作組處理,面向對象的開發(fā)等。
- 1985年,Excel 1.0誕生。微軟在Excel中集成了數(shù)據(jù)透視表功能可能是Excel產(chǎn)品最重要的增強功能之一,因為數(shù)據(jù)透視表已成為多維分析中最流行和使用最廣泛的工具。
1989年,SQL語言標準誕生,它可以從關系數(shù)據(jù)庫中提取和處理業(yè)務數(shù)據(jù)。這可能是個轉折點。在1980‘s年代,電子表格在OLAP應用中占絕對主導地位;而1990’s年代以后,越來越多的基于數(shù)據(jù)庫的OLAP應用開始出現(xiàn):
- 1992年:Hyperion Solution發(fā)布Essbase(擴展電子表格數(shù)據(jù)庫),在1997年成為市場上主要的OLAP服務器產(chǎn)品。
- 1997年:PARIS Technologies推出PowerOLAP:集成電子表格和事務數(shù)據(jù)庫,以便在電子表格應用程序(例如Excel)中即時更新數(shù)據(jù)。
- 1999年:Microsoft OLAP服務發(fā)布,并于2000年成為Microsoft Analysis Services
- 2012年:PARIS Technologies發(fā)布了OLATION,它將關系和多維數(shù)據(jù)庫技術(在SQL Server,SAP HANA,Oracle等中)融合在一起,確保對實際數(shù)據(jù)和計劃數(shù)據(jù)進行“真正的在線”數(shù)據(jù)更新。
1.5 OLAP的核心概念和基本操作
1.5.1 核心概念
維度(Dimension):維度是描述與業(yè)務主題相關的一組屬性,單個屬性或屬性集合可以構成一個維。如時間、地理位置、年齡和性別等都是維度。
維的層次(Level of Dimension):一個維往往可以具有多個層次,例如時間維度分為年、季度、月和日等層次,地區(qū)維可以是國家、地區(qū)、省、市等層次。這里的層次表示數(shù)據(jù)細化程度,對應概念分層。后面介紹的上卷操作就是由低層概念映射到高層概念。概念分層除了可以根據(jù)概念的全序和偏序關系確定外,還可以通過對數(shù)據(jù)進行離散化和分組實現(xiàn)。
維的成員(Member of Dimension):若維是多層次的,則不同的層次的取值構成一個維成員。部分維層次同樣可以構成維成員,例如“某年某季度”、“某季某月”等都可以是時間維的成員。
度量(Measure):表示事實在某一個維成員上的取值。例如開發(fā)部門漢族男性有39人,就表示在部門、民族、性別三個維度上,企業(yè)人數(shù)的事實度量。
1.5.2 基本操作
OLAP的操作是以查詢——也就是數(shù)據(jù)庫的SELECT操作為主,但是查詢可以很復雜,比如基于關系數(shù)據(jù)庫的查詢可以多表關聯(lián),可以使用COUNT、SUM、AVG等聚合函數(shù)。OLAP正是基于多維模型定義了一些常見的面向分析的操作類型是這些操作顯得更加直觀。
OLAP的多維分析操作包括:鉆?。?/em>Drill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(Pivot)**,下面還是以數(shù)據(jù)立方體為例來逐一解釋下:

鉆取(Drill-down):在維的不同層次間的變化,從上層降到下一層,或者說是將匯總數(shù)據(jù)拆分到更細節(jié)的數(shù)據(jù),比如通過對2010年第二季度的總銷售數(shù)據(jù)進行鉆取來查看2010年第二季度4、5、6每個月的消費數(shù)據(jù),如上圖;當然也可以鉆取浙江省來查看杭州市、寧波市、溫州市……這些城市的銷售數(shù)據(jù)。
上卷(Roll-up):鉆取的逆操作,即從細粒度數(shù)據(jù)向高層的聚合,如將江蘇省、上海市和浙江省的銷售數(shù)據(jù)進行匯總來查看江浙滬地區(qū)的銷售數(shù)據(jù),如上圖。
切片(Slice):選擇維中特定的值進行分析,比如只選擇電子產(chǎn)品的銷售數(shù)據(jù),或者2010年第二季度的數(shù)據(jù)。
切塊(Dice):選擇維中特定區(qū)間的數(shù)據(jù)或者某批特定值進行分析,比如選擇2010年第一季度到2010年第二季度的銷售數(shù)據(jù),或者是電子產(chǎn)品和日用品的銷售數(shù)據(jù)。
旋轉(Pivot):即維的位置的互換,就像是二維表的行列轉換,如圖中通過旋轉實現(xiàn)產(chǎn)品維和地域維的互換。
1.6 OLAP的分類
按數(shù)據(jù)存儲方式分類,可分為MOLAP、ROLAP、HOLAP。
1.6.1 Multidimensional OLAP (MOLAP)
MOLAP是OLAP的經(jīng)典形式。MOLAP將數(shù)據(jù)存儲在優(yōu)化的多維數(shù)組中,而不是關系數(shù)據(jù)庫中。維的屬性值被映射成多維數(shù)組的下標值或下標的范圍,而度量數(shù)據(jù)作為多維數(shù)組的值存儲在數(shù)組的單元中。由于MOLAP采用了新的存儲結構,從物理層實現(xiàn),因此又稱為物理OLAP(PhysicalOLAP);而 ROLAP主要通過一些軟件工具或中間軟件實現(xiàn),物理層仍采用關系數(shù)據(jù)庫的存儲結構,因此稱為虛擬OLAP(VirtualOLAP)。
一些MOLAP工具要求對數(shù)據(jù)進行預計算和存儲,這樣的MOLAP工具通常利用被稱為“數(shù)據(jù)立方體”的預先計算的數(shù)據(jù)集。數(shù)據(jù)立方體包含給定范圍的問題的所有可能答案。因此,它們對查詢的響應非常快。另一方面,根據(jù)預計算的程度,更新可能需要很長時間。預計算也可能導致所謂的數(shù)據(jù)爆炸。
1.6.2 Relational OLAP(ROLAP)
ROLAP將分析用的多維數(shù)據(jù)存儲在關系數(shù)據(jù)庫中。這種方式依賴SQL語言實現(xiàn)傳統(tǒng)OLAP的切片和切塊功能,本質上,切片和切塊等動作都等同于在SQL語句中添加“ WHERE”子句。ROLAP工具不使用預先計算的多維數(shù)據(jù)集,而是對標準關系數(shù)據(jù)庫及其表進行查詢,以獲取回答問題所需的數(shù)據(jù)。ROLAP工具具有詢問任何問題的能力,因為該方法(SQL)不僅限于多維數(shù)據(jù)集的內(nèi)容。
盡管ROLAP使用關系數(shù)據(jù)庫作為底層存儲,但這些數(shù)據(jù)庫一般要針對ROLAP進行相應優(yōu)化,比如并行存儲、并行查詢、并行數(shù)據(jù)管理、基于成本的查詢優(yōu)化、位圖索引、SQL的OLAP擴展(cube,rollup)等等。專為OLTP設計的數(shù)據(jù)庫不能像ROLAP數(shù)據(jù)庫一樣正常工作。
1.6.3 Hybrid OLAP(HOLAP)
由于MOLAP和ROLAP有著各自的優(yōu)點和缺點,且它們的結構迥然不同,這給分析人員設計OLAP結構提出了難題。為此一個新的OLAP 結構——混合型OLAP(HOLAP)被提出,這種工具通過允許同時使用多維數(shù)據(jù)庫(MDDB)和關系數(shù)據(jù)庫(RDBMS)作為數(shù)據(jù)存儲來彌合這兩種產(chǎn)品的技術差距。它允許模型設計者決定將哪些數(shù)據(jù)存儲在MDDB中,哪些存儲在RDBMS中, 例如,將大量詳單數(shù)據(jù)存儲在關系表中,而預先計算的聚合數(shù)據(jù)存儲在多維數(shù)據(jù)集中。目前整個行業(yè)對于“混合OLAP”的還沒有達成明確的共識。
1.6.4 MOLAP與ROLAP對比分析
| 對比項 | MOLAP | ROLAP |
|---|---|---|
| 存儲方式 | 專為OLAP設計和優(yōu)化的存儲,支持多維索引和緩存。 | 沿用現(xiàn)有的關系數(shù)據(jù)庫的技術。 |
| 查詢性能 | 具有較高的查詢性能,響應速度快。 | 響應速度一般比MOLAP慢。 |
| 數(shù)據(jù)裝載 | 數(shù)據(jù)裝載速度慢。 | 加載速度通常比MOLAP加載要快得多。 |
| 維數(shù)限制 | 需要進行預計算,可能導致數(shù)據(jù)爆炸,維數(shù)有限制。 | 存儲空間耗費小,維數(shù)沒有限制。 |
| 訪問接口 | 缺乏數(shù)據(jù)模型和數(shù)據(jù)訪問的標準接口。 | 可以通過SQL實現(xiàn)詳細數(shù)據(jù)與匯總數(shù)據(jù)的查詢。 并且可以由任何SQL報告工具訪問。 |
| 冗余存儲 | MOLAP方法引入了數(shù)據(jù)冗余。 | 沒有冗余數(shù)據(jù)??膳c數(shù)據(jù)倉庫共享同一份數(shù)據(jù)。 |
| 計算支撐 | 支持高性能的決策支持計算 | 由于依賴數(shù)據(jù)庫來執(zhí)行計算,因此專用功能上有更多限制。 |
| 操作維護 | 維護困難 | 管理簡便 |
1.7 OLAP與其他概念的關系
1.7.1 OLAP vs OLTP
兩者設計的目標是完全不同的:
OLTP(On-Line Transaction Processing),聯(lián)機事務處理,一般用于業(yè)務系統(tǒng)。OLTP對事務性處理的要求非常高,一般都是高可用的在線系統(tǒng),主要基于傳統(tǒng)的關系型數(shù)據(jù)庫。其上的應用,一般以小的事務以及小的查詢?yōu)橹鳌Tu估其系統(tǒng)的時候,一般看其每秒執(zhí)行的Transaction以及SQL的數(shù)量。在這樣的系統(tǒng)中,單個數(shù)據(jù)庫每秒處理的Transaction(增、刪、改)往往達到幾百上千個,Select查詢語句的執(zhí)行量每秒幾千甚至幾萬個。典型的OLTP系統(tǒng)有電子商務系統(tǒng)、銀行交易系統(tǒng)、證券交易系統(tǒng)等。
OLAP,一般用于分析系統(tǒng)。其上的應用,一般以大數(shù)據(jù)量的查詢?yōu)橹?,修改和刪除的操作較少。在這樣的系統(tǒng)中,SQL語句的執(zhí)行量不是考核指標,因為一條語句的執(zhí)行時間可能會很長,讀取的數(shù)據(jù)也非常多。所以,評估其系統(tǒng)的時候,往往是看系統(tǒng)的吞吐量、復雜查詢響應時間、數(shù)據(jù)裝載性能等。
二者詳細對比如下:
| OLTP | OLAP | |
|---|---|---|
| 用戶 | 操作人員 | 數(shù)據(jù)分析師、業(yè)務分析師、決策人員、高管 |
| 目的 | 操作處理,支持基本業(yè)務運行 | 發(fā)現(xiàn)和分析問題,支持決策 |
| 設計 | 面向應用,如銀行業(yè)、零售業(yè) | 面向主題,如銷售、庫存 |
| 特點 | 處理大量的小交易 | 使用復雜查詢處理大量數(shù)據(jù) |
| 數(shù)據(jù)內(nèi)容 | 當前的、最新的業(yè)務交易數(shù)據(jù) | 歷史的、聚集的、統(tǒng)一的多維數(shù)據(jù) |
| 查詢類型 | 簡單的、標準化的查詢 | 復雜查詢 |
| 數(shù)據(jù)操作 | 頻繁的增、刪、改操作;讀取數(shù)據(jù)量不大 | 很少修改和刪除操作;以讀為主,讀取數(shù)據(jù)量大。 |
| 時間要求 | 實時性要求高,通常是毫秒級 | 時間要求不嚴格,根據(jù)數(shù)據(jù)查詢量,可以是秒級、分鐘級甚至小時級 |
| 空間要求 | 通常較小,MB到GB級 | 由于要聚合大量數(shù)據(jù),通常較大,GB到PB級 |
| 模型設計 | 為了保證數(shù)據(jù)修改的原子性,通常是規(guī)范化的數(shù)據(jù)模型,至少滿足第三范式。 | 為了查詢性能,通常是非規(guī)范化的數(shù)據(jù)模型 |
| 存儲格式 | 修改操作頻繁,通常是行存儲 | 查詢數(shù)據(jù)量大,通常是列式存儲 |
| 主要應用 | 數(shù)據(jù)庫 | 數(shù)據(jù)倉庫 |
1.7.2 OLAP vs 數(shù)據(jù)倉庫/數(shù)據(jù)集市
數(shù)據(jù)倉庫的建模方式有多種:
ER模型(實體-關系模型)
Data Vault模型
Anchor模型
維度模型
前面三種模型主要致力將各個業(yè)務系統(tǒng)中的數(shù)據(jù)整合到統(tǒng)一的數(shù)據(jù)倉庫中,并進行一致性處理,提供滿足第三范式或更高范式的數(shù)據(jù)模型和原子數(shù)據(jù)。這種數(shù)據(jù)倉庫被稱為CIF(Corporate Information Factory,企業(yè)信息工廠)架構下的企業(yè)數(shù)據(jù)倉庫。這種數(shù)據(jù)倉庫架構是數(shù)據(jù)倉庫之父Inmon所推崇的。但由于使用了規(guī)范化模型,這使得對這些原子數(shù)據(jù)進行查詢變得很困難,這種架構并不能很好地直接用于支撐分析決策。為了更好的支持分析,在這種架構下,通常需要在數(shù)據(jù)倉庫的基礎上,按主題建立一些數(shù)據(jù)子集,也就是數(shù)據(jù)集市。這些數(shù)據(jù)集市通常采用維度模型,OLAP工具就可以基于數(shù)據(jù)集市而工作。數(shù)據(jù)集市通常就是基于OLAP系統(tǒng)而構建。

第四種模型(維度模型)是另一位數(shù)據(jù)倉庫領域的大師Kimball提出的,是目前數(shù)據(jù)倉庫領域最流行的建模方式。維度模型可以很好地支撐分析決策需求,同時還有較好的大規(guī)模復雜查詢的響應性能。維度模型可以直接使用OLAP工具與其對接。Kimball所推崇的數(shù)據(jù)倉庫架構如下,基于這種架構建立的數(shù)據(jù)倉庫,可以直接提供OLAP能力。這樣建立的數(shù)據(jù)倉庫本身也就成為了一個OLAP系統(tǒng)。

1.7.3 OLAP vs BI工具
BI是Business Intelligence的英文縮寫,中文解釋為商務智能,是利用數(shù)據(jù)提高決策質量的技術集合,是從大量的數(shù)據(jù)中鉆取信息與知識的過程。OLAP和BI常常在一起出現(xiàn),OLAP是BI工具的一種底層技術。BI工具通??梢詫覱LAP系統(tǒng),但不限于此,也可以直接與其他數(shù)據(jù)庫、存儲系統(tǒng)對接。
1.7.4 OLAP vs 即席查詢
Ad hoc是一個拉丁文常用短語,意思是“特設的、特定目的的(地)、臨時的、專案的”。即席查詢(Ad Hoc Queries)是指用戶根據(jù)自己的需求動態(tài)創(chuàng)建的查詢,與預定義查詢相反。
即席查詢對數(shù)據(jù)模型沒有要求,只要能提供動態(tài)查詢的能力即可;而OLAP系統(tǒng),一般要求數(shù)據(jù)模型是多維數(shù)據(jù)模型。對于ROLAP系統(tǒng),通常都能提供即席查詢能力,二者之間差別很小,所以經(jīng)?;煊?。
參考: