轉載:https://blog.csdn.net/dufufd/article/details/78621158
OLAP介紹
一、發展背景
60年代,關係數據庫之父E.F.Codd提出了關係模型,促進了聯機事務處理(OLTP)的發展(數據以表格的形式而非文件方式存儲)。1993年,E.F.Codd提出了OLAP概念,認爲OLTP已不能滿足終端用戶對數據庫查詢分析的需要,SQL對大型數據庫進行的簡單查詢也不能滿足終端用戶分析的要求。用戶的決策分析需要對關係數據庫進行大量計算才能得到結果,而查詢的結果並不能滿足決策者提出的需求。因此,E.F.Codd提出了多維數據庫和多維分析的概念,即OLAP。
爲了解決大型企業雖然擁有大量業務數據但難以及時有效的提取經營管理者所需要的信息這一問題,數據倉庫技術應運而生。如何有效的組織大量數據,維護數據的一致性,方便用戶訪問,這只是數據倉庫技術的一個方面。 數據倉庫技術的另一個方面是如何爲經營管理人員提供有效的使用信息,使他們能夠使用數據倉庫系統,對企業的經營管理作出正確的決策,從而爲企業帶來經濟效益。要達到這個目的,就要藉助OLAP技術。
OLAP技術主要通過多維的方式來對數據進行分析、查詢和生成報表,它不同於傳統的OLTP處理應用。OLTP應用主要是用來完成用戶的事務處理,如民航訂票系統和銀行的儲蓄系統等,通常要進行大量的更新操作,同時對響應的時間要求比較高。而OLAP系統的應用主要是對用戶當前的及歷史數據進行分析,扶助領導決策,其典型的應擁有對銀行信用卡風險的分析與預測和公司市場營銷策略的制定等,主要是進行大量的查詢操作,對時間的要求不太嚴格。
在數據倉庫應用中,OLAP應用一般是數據倉庫應用的前端工具,同時OLAP工具還可以同數據挖掘工具、統計分析工具配合使用,增強決策分析功能。
二、什麼是OLAP?
定義1 :OLAP(聯機分析處理)是針對特定問題的聯機數據訪問和分析。通過對信息(維數據)的多種可能的觀察形式進行快速、穩定一致和交互性的存取,允許管理決策人員對數據進行深入觀察。
定義2 :OLAP(聯機分析處理) 是使分析人員、管理人員或執行人員能夠從多種角度對從原始數據中轉化出來的、能夠真正爲用戶所理解的、並真實反映企業維特性的信息進行快速、一致、交互地存取,從而獲得對數據的更深入瞭解的一類軟件技術。(OLAP委員會的定義)
OLAP的目標是滿足決策支持或多維環境特定的查詢和報表需求,它的技術核心是“維”這個概念,因此OLAP也可以說是多維數據分析工具的集合。
OLTP與OLAP的區別:
聯機事務處理OLTP(on-line transaction processing)
OLTP是傳統的關係型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。
聯機分析處理OLAP(On-Line Analytical Processing)
OLAP是數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。OLAP採用多維報表和統計圖形,查詢提出以及數據輸入直觀靈活,用戶可以方便的逐層細化,切塊,切片,數據旋轉
下表列出了OLTP與OLAP之間的比較:
|
OLTP |
OLAP |
用戶 |
面向操作人員,支持日常操作 |
面向決策人員,支持管理需要 |
功能 |
日常操作處理 |
分析決策 |
DB 設計 |
面向應用,事務驅動 |
面向主題,分析驅動 |
數據 |
當前的,最新的細節的,二維的分立的 |
歷史的,聚集的,多維的,集成的,統一的 |
存取 |
可更新,讀/寫數十條記錄 |
不可更新,但週期性刷新,讀上百萬條記錄 |
工作單位 |
簡單的事務 |
複雜的查詢 |
DB 大小 |
100MB-GB |
100GB-TB |
總的來說,OLTP就是面向我們的應用系統數據庫的,OLAP是面向數據倉庫的。
三、相關基本概念
1.維:是人們觀察數據的特定角度,是考慮問題時的一類屬性,屬性集合構成一個維(時間維、地理維等)。
2.維的層次:人們觀察數據的某個特定角度(即某個維)還可以存在細節程度不同的各個描述方面(時間維:日期、月份、季度、年)。
3.維的成員:維的一個取值。是數據項在某維中位置的描述。(“某年某月某日”是在時間維上位置的描述)
4.多維數組:維和變量的組合表示。一個多維數組可以表示爲:(維1,維2,…,維n,變量)。(時間,地區,產品,銷售額)
5.數據單元(單元格):多維數組的取值。(2000年1月,上海,筆記本電腦,$100000)
四、OLAP特性
(1)快速性:用戶對OLAP的快速反應能力有很高的要求。系統應能在5秒內對用戶的大部分分析要求做出反應。
(2)可分析性:OLAP系統應能處理與應用有關的任何邏輯分析和統計分析。
(3)多維性:多維性是OLAP的關鍵屬性。系統必須提供對數據的多維視圖和分析,包括對層次維和多重層次維的完全支持。
(4)信息性:不論數據量有多大,也不管數據存儲在何處,OLAP系統應能及時獲得信息,並且管理大容量信息。
五、OLAP多維數據結構
1.超立方結構(Hypercube)
超立方結構指用三維或更多的維數來描述一個對象,每個維彼此垂直。數據的測量值發生在維的交叉點上,數據空間的各個部分都有相同的維屬性。(收縮超立方結構。這種結構的數據密度更大,數據的維數更少,並可加入額外的分析維)。
2.多立方結構(Multicube)
即將超立方結構變爲子立方結構。面向某一特定應用對維進行分割, 它具有很強的靈活性,提高了數據(特別是稀疏數據)的分析效率。
六、OLAP多維數據分析
1.切片和切塊(Slice and Dice)
在多維數據結構中,按二維進行切片,按三維進行切塊,可得到所需要的數據。如在“城市、產品、時間”三維立方體中進行切塊和切片,可得到各城市、各產品的銷售情況。
2.鑽取(Drill)
鑽取包含向下鑽取(Drill-down)和向上鑽取(Drill-up)/上卷(Roll-up)操作, 鑽取的深度與維所劃分的層次相對應。
3.旋轉(Rotate)/轉軸(Pivot)
通過旋轉可以得到不同視角的數據。
七、OLAP分類
按照存儲方式:
ROLAP: relational olap,即關係olap。代表產品有Informix Metacube、Microsoft SQL Server OLAP Services。
MOLAP:multidimensional olap,即多維olap。代表產品有Hyperion(原Arbor Software) Essbase、Showcase Strategy等。
HOLAP(混合型olap hybrid olap)
按照處理地點:
Server OLAP:數據在服務器端的多維分析。代表產品有Microsoft SQL Server OLAP Services。
Client OLAP:把部分數據下載到本地,爲用戶提供本地的多維分析。代表產品有Brio Designer,Business Object。
以下是ROLAP、MOLAP與HOLAP三者之間優缺點對比:
|
優勢 |
缺點 |
ROLAP |
沒有大小限制 |
一般比MDD響應速度慢 |
MOLAP |
性能好、響應速度快 |
增加系統複雜度,增加系統培訓與維護費用 |
HOLAP |
基於混合數據組織的OLAP實現,如低層是關係型的,高層是多維矩陣型的。這種方式具有更好的靈活。holap結構不應該是molap與rolap結構的簡單組合,而是這兩種結構技術優點的有機結合,能滿足用戶各種複雜的分析請求。 |
迄今爲止,對holap還沒有一個正式的定義 |
八、OLAP評價準則
準則1 OLAP模型必須提供多維概念模型
準則2 透明性準則
準則3 存取能力準則
準則4 穩定的報表性能
準則5 客戶/服務器體系結構
準則6 維的等同性準則
準則7 動態稀疏矩陣處理準則
準則8 多用戶支持能力準則
準則9 非受限的跨維操作
準則10 直觀的數據處理
準則11 靈活的報表生成
準則12 非受限的維與維的層次
九、、流行的OLAP工具介紹
OLAP產品:
Hyperion Essbase
Oracle Express
IBM DB2 OLAP Server
Sybase Power dimension
Informix Metacube
Microsoft Plato
Brio
Cognos
Business Object
MicroStrategy
OLAP產品涉及的業務操作:
由外部或內部數據源批量裝入數據
由業務系統增量裝入數據
沿數據層次彙總數據
對基於業務模型的新數據進行計算
時間序列分析
高複雜的查詢
沿數據層次細化分析
隨機查詢
多個聯機會話(多用戶同時訪問)
1. Hyperion Essbase
以服務器爲中心的分佈式體系結構
有超過100個的應用程序
有300多個用Essbase作爲平臺的開發商
具有幾百個計算公式,支持多種計算
用戶可以自己構件複雜的查詢。
快速的響應時間,支持多用戶同時讀寫
有30多個前端工具可供選擇
支持多種財務標準
能與ERP或其他數據源集成
全球用戶超過1500家
2. Oracle Express
Oracle DW支持GB~TB數量級
採用類似數組的結構,避免了連接操作,提高分析性能
提供一組存儲過程語言來支持對數據的抽取
用戶可通過Web和電子表格使用
靈活的數據組織方式,數據可以存放在Express Server內,也可直接在RDB上使用
有內建的分析函數和4GL用戶自己定製查詢
全球超過3000家
3. IBM DB2 OLAP Server
把Hyperion Essbase的OLAP引擎和DB2的關係數據庫集成在一起。
與Essbase API完全兼容
數據用星型模型存放在關係數據庫DB2中
4. Informix Metacube
採用metacube技術,通過OLE和ODBC對外開放,
採用中間表技術實現多維分析引擎,提高響應時間和分析能力
開放的體系結構可以方便地與其他數據庫及前臺工具進行集成
5. Sybase Power dimension
數據垂直分割(按“列”存儲)
採用了突破性的數據存取方法------bit-wise索引技術
在數據壓縮和並行處理方面有多到之處
提供有效的預連接(Pro-Jion)技術
十、OLAP發展
應用領域:
市場和銷售分析(Marketing and Sales analysis)
電子商務分析(Clickstream analysis)
基於歷史數據的營銷(Database marketing)
預算(Budgeting)
財務報告與整合(Financial reporting and consolidation)
管理報告(Management reporting)
利益率分析(Profitability analysis)
質量分析(Quality analysis)
OLAP標準APB-1(AQT-Analytical Query Time作爲統計指標)
從聯機分析處理到聯機分析挖掘(OLAM/OLAP挖掘)
將聯機分析處理與數據挖掘以及在多維數據庫中發現知識集成在一起。
聯機分析挖掘提供在不同的數據子集和不同的抽象層上進行數據挖掘的工具.
聯機分析挖掘爲用戶選擇所期望的數據挖掘功能動態修改挖掘任務提供了靈活性 。
超立方體計算與傳統挖掘算法的結合
先進行立方體計算,後進行數據挖掘
先對多維數據作數據挖掘,然後再利用立方體計算算法對挖掘結果分析
立方體計算與數據挖掘同時進行
回溯特性
OLAP基於Web的應用
靜態方法 靜態HTML報表
動態方法 通過HTML模板及元數據動態生成報表
改進方法 使用Java或ActiveX
十一、 OLAP展望
面向對象的聯機分析處理
O3LAP(Object-Oriented OLAP)
對象關係的聯機分析處理
OROLAP (Object Relational OLAP)
分佈式聯機分析處理
DOLAP (Distributed OLAP)
時態聯機分析處理
TOLAP (Temporal OLAP)
OLAP基礎
聯機實時分析(OnlineAnalytical Processing, OLAP (/ˈoʊlæp/))技術是快速響應多維分(Multidimensionalanalysis, MDA)的一種解決方案。
首先,解釋下什麼是多維分析:多維分析是一種數據分析過程,在此過程中,將數據分成兩類:維度(dimensions)和度量(metrics/measurements)。維度和度量的概念都出自於圖論(graph theory),維度指能夠描述某個空間中所有點的最少座標(coordinate)數,即空間基數;度量指的是無向圖中頂點(vertices)間的距離。在多維分析領域,維度一般包括字段值爲字符類或者字段基數值較少且作爲約束條件的離散數值類型;而度量一般包括基數值較大且可以參與運算的數值類字段,一般也稱爲指標。
OLAP技術可以看作是廣義概念上的商業智能(Business Intelligence, BI)的一部分,而傳統的OLAP分析應用通常包含了關係型數據庫(relational database)、商業報告(business reporting)以及數據挖掘(data mining)等方面。
1.1 OLAP cube
OLAP cube可以簡單描述爲“多維數據集”。cube,我們可以想象爲數據指標根據多維度封裝成的一個立方體結構(以三維空間爲例,如果維度數超過3,我們則稱爲“Hypercube”),如圖1.1所示,圖中的Time、Products、Cities就是OLAP分析中提取的三個維度,而這個立方體封閉區域所代表的含義就是在這三種維度下,某項指標的度量值,根據上述映射關係可以描述爲:
1.2 維度模型
維度模型的概念出自於數據倉庫領域,是數據倉庫建設中的一種數據建模方法。維度模型主要由事實表和維度表這兩個基本要素構成。
事實表是維度模型的基本表,用於存放大度量值,術語“事實”代表了一個度量值。舉一個例子:查詢某個客戶在某個機構下某個產品合約賬戶的某個幣種的某個時點餘額,在各維度值(客戶、產品合約、賬戶、機構、幣種、日期)的交點處就可以得到一個度量值。維度值的列表定義了事實表的粒度,同時又確定了度量值的取值範圍。
事實表的一行對應一個度量值,事實表的所有度量值必須具有相同的粒度。而事實可能是半加性質的,也可能是非加性質的,半加性事實表示度量值可以沿着某些維度由子類維度向父類維度進行聚合;非加性事實則完全不能相加,比如狀態事實,對於這種非加性事實,我們只能採用計數或者求平均值,或者打印出全部事實行的方法進行分析。
所有事實表有兩個或者兩個以上的外關鍵字(如圖1.2中FK符號標記的部分),外關鍵字用於連接到維度表的主關鍵字。例如,事實表中的“產品合約關鍵字”總是匹配產品合約這個維度表的一個特定“產品合約關鍵字”。如果事實表中的所有關鍵字都能分別與對應維度表中的主關鍵字正確匹配,就可以說這些表滿足引用完整性的要求。事實表要通過與之相連的維度表進行存取。維度表是進入事實表的入口。豐富的維度屬性給出了豐富的分析切割能力。維度給用戶提供了使用數據倉庫的接口。最好的屬性是文本的和離散的。屬性應該是真正的文字而不應是一些編碼簡寫符號。應該通過用更爲詳細的文本屬性取代編碼,力求最大限度地減少編碼在維度表中的使用。
最後簡單說明下維度表和事實表的融合。二者的融合也就是“維度模型”,“維度模型”一般採用“星型模式”或者“雪花模式”,如圖1.4所示爲“星型模式”,而“雪花模式”可以看作是“星型模式”的拓展,表現爲在維度表中,某個維度屬性可能還存在更細粒度的屬性描述,即維度表的層級關係。1.3 基本分析操作
OLAP允許用戶從多種角度分析多維數據,主要包括以下五種基本操作:上卷(consolidation/roll-up)、下鑽(drill-down)、切片(slice)、切塊(dice)和旋轉(pivot)。
1.3.1 上卷(consolidation/Roll-up)
上卷表示沿着某一維度按照一定的規則(rule)對數據進行聚合(aggregation)操作,沿着某一維度,即按照層級關係從子類維度向父類維度作聚合。
1.3.2 下鑽(Drill-down)
下鑽和上卷正好相反,允許用戶從已聚合的數據集中提取出所關注的細節。下圖表示了從“Outdoor-Schutzausrüstung”這個父類維度中抽取出三個子類維度的下鑽過程。
1.3.3 切片(Slice)
切片表示通過選擇某個維度的單一值(value),從OLAP cube中抽取出一個分片的過程。下圖表示了從原始OLAP cube中抽取出time = 2004分片的過程。
1.3.4 切塊(Dice)
切塊表示通過選擇多個維度的某些值(或者區間),從OLAP cube中抽取出子cube的過程。下圖表示了從原始OLAP cube中抽取某個維度中多值對應的子cube的過程。1.3.5 旋轉(pivot)
旋轉操作允許用戶通過旋轉(rotate)OLAP cube,重新選擇目標分析維度,通常表現爲交換座標軸操作。在下圖中,原始的OLAP cube的X軸是產品名稱,Y軸是地區名稱,Z軸是年份;經過旋轉操作後cube表示了每個產品在不同年份、不同地區的統計情況。1.4 OLAP 與OLTP的區別
1.5 OLAP技術路線分類
常見的OLAP系統可以分爲以下三類:關係型聯機實時分析系統(Relational-OLAP,ROLAP),多維聯機實時分析系統(Multidimensional-OLAP,MOLAP),混合型聯機實時分析系統(Hybrid-OLAP,HOLAP)。
1.5.1 關係型聯機實時分析(ROLAP)
ROLAP的核心依賴於關係型數據庫,允許用戶使用維度模型進行數據分析,將維度值存儲在維度表中,將度量值存儲在事實表中,通過關係型數據庫訪問數據,使用SQL進行查詢分析。ROLAP的一般使用模式概括如下:根據用戶的需求,對不同維度進行分析後,將分析數據導入到另一張數據庫表中。
ROLAP的優勢:
(1)處理高基數列具有更好的擴展性;
(2)擅長處理非聚合類的原始數據,生態圈內用於原始數據入庫的ETL工具衆多,同時比MOLAP入庫速率更高;
(3)由於數據存儲在關係型數據庫中,所以支持標準SQL接口,查詢便捷;
ROLAP的劣勢:
(1)根據OLAP survey(http://www.olapreport.com/survey.htm)在2001-2006年連續6年的調研顯示,工業界普遍認爲ROLAP的性能要低於MOLAP。但也有人提出質疑,爭議包含兩方面:ROLAP的用戶數是MOLAP的7倍多,那麼抱怨產品性能差的比例自然更高;其他因素的影響,上述調研報告並沒有將ROLAP產品和MOLAP產品放在同一個維度模型上進行比較,所以該報告結論並不具有權威性;
(2)處理已聚合的數據,需要使用定製的ETL工具,開發量大且不具有通用性;如果採用原始數據入庫,將非常影響查詢性能,如果想要提升查詢性能,需要將已入庫的原始數據重新聚合後再導入到新的表中進行查詢分析;
(3)ROLAP的性能很大程度上依賴於使用的關係型數據庫的查詢與緩存性能;同時對於所有分析操作,都依賴於SQL語句,對於重計算類的分析模型,轉換後的SQL就會變得複雜,對分析者的SQL語句的調優要求較高,而在某些無法使用SQL的場景下,ROLAP類產品則變得無能爲力。
1.5.2 多維聯機實時分析(MOLAP)
MOLAP是OLAP的經典使用模式,所以經常用MOLAP來指代OLAP。MOLAP和ROLAP具有一定的相似性,二者都可以使用維度模型進行數據分析,但是MOLAP並不將數據存儲在維度表或者事實表中,而是對原始數據進行預計算(比如聚合操作),將計算結果存儲在OLAP cube中。
MOLAP的優勢:
(1)由於MOLAP不採用關係型數據庫進行數據存儲,所以必須採用特殊的存儲手段,例如:壓縮存儲、索引(例如位圖索引)以及緩存技術等,查詢速率更快;
MOLAP的劣勢:
(1)數據導入較慢,需要使用定製的ETL入庫工具;
(2)由於沒有維度表和事實表,所以對於更新操作以及明細查詢,效率要比ROLAP低很多。
1.5.3 混合型聯機實時分析(HOLAP)
HOLAP充分利用了ROLAP與MOLAP的各自優勢,從縱向角度,既允許用戶將部分數據(比如聚合類數據)使用MOLAP進行存儲,從而獲得更快的查詢性能;又允許部分數據(比如原始數據)使用ROLAP進行存儲,使用戶能夠查看細粒度數據。從橫向角度,使用MOLAP存儲最近較熱的數據,從而提升查詢性能;而使用ROLAP存儲歷史較冷的數據。
什麼是OLAP
最近由於很多人問我什麼是OLAP,從而發現目前OLAP對大多數人來說還是個新名詞,這裏我來簡單講講OLAP(聯機分析)。
聯機分析(OLAP)是由關係數據庫之父E.F.Codd於1993年提出的一種數據動態分析模型,它允許以一種稱爲多維數據集的多維結構訪問來自商業數據源的經過聚合和組織整理的數據。以此爲標準,OLAP作爲單獨的一類產品同聯機事務處理(OLTP)得以明顯區分。
有點深奧是不是?其實並不複雜,OLAP最基本的概念其實只有三個:多維觀察、數據鑽取、CUBE運算。
從動態的多維角度分析數據
我們在平時工作中,會遇到各種問題,在分析問題的時候,同樣的現象,我們會從多個角度去分析考慮,並且有時候我們還會從幾個角度綜合起來進行分析。這就是OLAP分析最基本的概念:從多個觀察角度的靈活組合來觀察數據,從而發現數據內在規律。
OLAP將數據分爲兩種特徵,一種爲表現特徵,比如一個銷售分析模型中的銷售額、毛利等;還有一種爲角度特徵,比如銷售分析中的時間週期、產品類型、銷售模式、銷售區域等。前者是被觀察的對象,OLAP術語稱之爲“度量數據”,後者爲觀察視角,OLAP術語稱之爲“維數據”。
如果建立這樣一個模型,我們就可以根據業務需求,從產品類型角度去觀察各個銷售地區的銷售額數據(以產品類型和銷售地區爲維、以銷售額爲度量);或者我們還可以從銷售模式的角度去觀察各個銷售地區的銷售額數據(以銷售模式和銷售地區爲維、以銷售額爲度量)。
對數據進行鑽取,以獲得更爲精確的信息
在分析過程中,我們可能需要在現有數據基礎上,將數據進一步細化,以獲得更爲精確的認識。這就是OLAP中數據鑽取的概念。
比如,在銷售分析中,當我們以產品類型和銷售地區爲維、以銷售額爲度量進行分析的時候,可能希望進一步觀察某類產品的不同銷售模式在各個銷售地區的表現,這時我們就可以在產品大類這個數據維下面,再加上一個銷售模式維,從而獲得相應的信息。
創建數據CUBE
那麼,要滿足上述運算,需要什麼樣的前提呢?
我們可以想像,和報表不同,OLAP分析所需的原始數據量是非常龐大的。一個分析模型,往往會涉及數百萬條、數千萬條、甚至更多;而分析模型中包含多個維數據,這些維又可以由瀏覽者作任意的提取組合。這樣的結果就是大量的實時運算導致的時間延滯。我們可以設想,一個對於1000萬條記錄的分析模型,如果一次提取4個維度進行組合分析,那麼實際的運算次數將達到4的1000次方的數量:這樣的運算量將導致數十分鐘乃至更長的等待時間。如果用戶對維組合次序進行調整,或者增加減少某些維度的話,又將是一個重新的計算過程。
從上面分析,我們可以得出結論,如果不能解決OLAP運算效率問題的話,OLAP將是一個毫無實用價值的概念。那麼,作爲一個成熟產品是如何解決這個問題的呢?這就是OLAP中一個非常重要的技術:數據CUBE預運算。
一個OLAP模型中,度量數據和維數據我們應該實現確定,一旦兩者確定下來,那麼我們可以對數據進行預先的處理,在正式發佈之前,將數據根據維進行最大限度的聚類運算,運算中會考慮到各種維組合情況,運算結果將生成一個數據CUBE,並保存在服務器上。這樣,當最終用戶在調閱這個分析模型的時候,就可以直接使用這個CUBE,在此基礎上根據用戶的維選擇和維組合進行復運算,從而達到實時響應的這麼一個效果。
補充說明
上面所說的,是OLAP最基本的概念,除此以外,OLAP通常包括的功能包括數據旋轉(變換觀察維組合順序)、數據切片(過濾無關數據,對指定數據進行重點觀察),以及對數據進行跨行列運算
https://www.2cto.com/database/201503/379650.html