聯機分析處理

聯機分析處理

軟件技術
聯機分析處理OLAP是一種軟件技術,它使分析人員能夠迅速、一緻、交互地從各個方面觀察信息,以達到深入理解數據的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多維信息的快速分析的特征。其中F是快速性(Fast),指系統能在數秒内對用戶的多數分析要求做出反應;A是可分析性(Analysis),指用戶無需編程就可以定義新的專門計算,将其作為分析的一部 分,并以用戶所希望的方式給出報告;M是多維性(Multi—dimensional),指提供對數據分析的多維視圖和分析;I是信息性(Information),指能及時獲得信息,并且管理大容量信息。[1]
    中文名:聯機分析處理 外文名: 别名: 英文名:Online Analytical Processing 應用行業:IT 簡 寫:OLAP 應 用:數據倉庫系統

簡介

随着數據庫技術的發展和應用,數據庫存儲的數據量從20世紀80年代的兆(M)字節及千兆(G)字節過渡到現在的兆兆(T)字節和千兆兆(P)字節,同時,用戶的查詢需求也越來越複雜,涉及的已不僅是查詢或操縱一張關系表中的一條或幾條記錄,而且要對多張表中千萬條記錄的數據進行數據分析和信息綜合,關系數據庫系統已不能全部滿足這一要求。操作型應用和分析型應用,特别是在性能上難以兩全,人們常常在關系數據庫中放寬了對冗餘的限制,引入了統計及綜合數據,但這些統計綜合數據的應用邏輯是分散而雜亂的、非系統化的,因此分析功能有限,不靈活,維護困難。在國外,不少軟件廠商采取了發展其前端産品來彌補關系數據庫管理系統支持的不足,他們通過專門的數據綜合引擎,輔之以更加直觀的數據訪問界面,力圖統一分散的公共應用邏輯,在短時間内響應非數據處理專業人員的複雜查詢要求。1993年,E.F.Codd(關系數據庫之父)将這類技術定義為“聯機分析處理”。

聯機分析處理是共享多維信息的、針對特定問題的聯機數據訪問和分析的快速軟件技術。它通過對信息的多種可能的觀察形式進行快速、穩定一緻和交互性的存取,允許管理決策人員對數據進行深入觀察。決策數據是多維數據,多維數據就是決策的主要内容。OLAP專門設計用于支持複雜的分析操作,側重對決策人員和高層管理人員的決策支持,可以根據分析人員的要求快速、靈活地進行大數據量的複雜查詢處理,并且以一種直觀而易懂的形式将查詢結果提供給決策人員,以便他們準确掌握企業(公司)的經營狀況,了解對象的需求,制定正确的方案。

聯機分析處理具有靈活的分析功能、直觀的數據操作和分析結果可視化表示等突出優點,從而使用戶對基于大量複雜數據的分析變得輕松而高效,以利于迅速做出正确判斷。它可用于證實人們提出的複雜的假設,其結果是以圖形或者表格的形式來表示的對信息的總結。它并不将異常信息标記出來,是一種知識證實的方法。

由來

聯機分析處理(OLAP)的概念最早是由關系數據庫之父E.F.Codd于1993年提出的,他同時提出了關于OLAP的12條準則。OLAP的提出引起了很大的反響,OLAP作為一類産品同聯機事務處理 (OLTP) 明顯區分開來。Codd提出OLAP的12條準則來描述OLAP系統:準則1OLAP模型必須提供多維概念視圖;準則2透明性準則;準則3存取能力推測;準則4穩定的報表能力;準則5客戶/服務器體系結構; 準則6維的等同性準則;準則7動态的稀疏矩陣處理準則; 準則8多用戶支持能力準則;準則9非受限的跨維操作;準則10直觀的數據操縱;準則11靈活的報表生成;準則12不受限的維與聚集層次。

當今的數據處理大緻可以分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果。下表列出了OLTP與OLAP之間的比較。

發展背景

随着數據庫技術的廣泛應用,企業信息系統産生了大量的數據,如何從這些海量數據中提取對企業決策分析有用的信息成為企業決策管理人員所面臨的重要難題。傳統的企業數據庫系統(管理信息系統)即聯機事務處理系統(On-LineTransactionProcessing,簡稱OLTP)作為數據管理手段,主要用于事務處理,但它對分析處理的支持一直不能令人滿意。因此,人們逐漸嘗試對OLTP數據庫中的數據進行再加工,形成一個綜合的、面向分析的、更好的支持決策制定的決策支持系統(DecisionSupportSystem,簡稱DSS)。企業目前的信息系統的數據一般由DBMS管理,但決策數據庫和運行操作數據庫在數據來源、數據内容、數據模式、服務對象、訪問方式、事務管理乃至無力存儲等方面都有不同的特點和要求,因此直接在運行操作的數據庫上建立DSS是不合适的。數據倉庫(DataWarehouse)技術就是在這樣的背景下發展起來的。數據倉庫的概念提出于20世紀80年代中期,20世紀90年代,數據倉庫已從早起的探索階段走向實用階段。業界公認的數據倉庫概念創始人W.H.Inmon在《BuildingtheDataWarehouse》一書中對數據倉庫的定義是:“數據倉庫是支持管理決策過程的、面向主題的、集成的、随時間變化的持久的數據集合”。構建數據倉庫的過程就是根據預先設計好的邏輯模式從分布在企業内部各處的OLTP數據庫中提取數據并對經過必要的變換最終形成全企業統一模式數據的過程。當前數據倉庫的核心仍是RDBMS管理下的一個數據庫系統。數據倉庫中數據量巨大,為了提高性能,RDBMS一般也采取一些提高效率的措施:采用并行處理結構、新的數據組織、查詢策略、索引技術等等。

包括聯機分析處理(On-LineAnalyticalProcessing,簡稱OLAP)在内的諸多應用牽引驅動了數據倉庫技術的出現和發展;而數據倉庫技術反過來又促進了OLAP技術的發展。聯機分析處理的概念最早由關系數據庫之父E.F.Codd于1993年提出的。Codd認為聯機事務處理(OLTP)已不能滿足終端用戶對數據庫查詢分析的要求,SQL對大數據庫的簡單查詢也不能滿足用戶分析的需求。用戶的決策分析需要對關系數據庫進行大量計算才能得到結果,而查詢的結果并不能滿足決策者提出的需求。因此,Codd提出了多維數據庫和多維分析的概念,即OLAP。OLAP委員會對聯機分析處理的定義為:使分析人員、管理人員或執行人員能夠從多種角度對從原始數據中轉化出來的、能夠真正為用戶所理解的、并真實反映企業維特性的信息進行快速、一緻、交互地存取,從而獲得對數據的更深入了解的一類軟件技術。OLAP的目标是滿足決策支持或多維環境特定的查詢和報表需求,它的技術核心是“維”這個概念,因此OLAP也可以說是多維數據分析工具的集合。

處理特點

在過去的二十年中,大量的企業利用關系型數據庫來存儲和管理業務數據,并建立相應的應用系統來支持日常業務運作。這種應用以支持業務處理為主要目的,被稱為聯機事務處理(OLTP,On-line Transaction Processing)應用,它所存儲的數據被稱為操作數據或者業務數據。随着市場競争的日趨激烈,近年來企業更加強調決策的及時性和準确性,這使得以支持決策管理分析為主要目的的應用迅速崛起,這類應用被稱為聯機分析處理,它所存儲的數據被稱為信息數據。

聯機分析處理的用戶是企業中的專業分析人員及管理決策人員,他們在分析業務經營的數據時,從不同的角度來審視業務的衡量指标是一種很自然的思考模式。例如分析銷售數據,可能會綜合時間周期、産品類别、分銷渠道、地理分布、客戶群類等多種因素來考量。這些分析角度雖然可以通過報表來反映,但每一個分析的角度可以生成一張報表,各個分析角度的不同組合又可以生成不同的報表,使得IT人員的工作量相當大,而且往往難以跟上管理決策人員思考的步伐。

聯機分析處理的主要特點,是直接仿照用戶的多角度思考模式,預先為用戶組建多維的數據模型,在這裡,維指的是用戶的分析角度。例如對銷售數據的分析,時間周期是一個維度,産品類别、分銷渠道、地理分布、客戶群類也分别是一個維度。一旦多維數據模型建立完成,用戶可以快速地從各個分析角度獲取數據,也能動态的在各個角度之間切換或者進行多角度綜合分析,具有極大的分析靈活性。這也是聯機分析處理在近年來被廣泛關注的根本原因,它從設計理念和真正實現上都與舊有的管理信息系統有着本質的區别。

事實上,随着數據倉庫理論的發展,數據倉庫系統已逐步成為新型的決策管理信息系統的解決方案。數據倉庫系統的核心是聯機分析處理,但數據倉庫包括更為廣泛的内容。概括來說,數據倉庫系統是指具有綜合企業數據的能力,能夠對大量企業數據進行快速和準确分析,輔助做出更好的商業決策的系統。它本身包括三部分内容:

數據層。實現對企業操作數據的抽取、轉換、清洗和彙總,形成信息數據,并存儲在企業級的中心信息數據庫中。

應用層。通過聯機分析處理,甚至是數據挖掘等應用處理,實現對信息數據的分析。

表現層。通過前台分析工具,将查詢報表、統計分析、多維聯機分析和數據發掘的結論展現在用戶面前。

從應用角度來說,數據倉庫系統除了聯機分析處理外,還可以采用傳統的報表,或者采用數理統計和人工智能等數據挖掘手段,涵蓋的範圍更廣;就應用範圍而言,聯機分析處理往往根據用戶分析的主題進行應用分割,例如:銷售分析、市場推廣分析、客戶利潤率分析等等,每一個分析的主題形成一個OLAP應用,而所有的OLAP應用實際上隻是數據倉庫系統的一部分。

典型操作

OLAP展現在用戶面前的是一幅幅多維視圖。

維(Dimension):是人們觀察數據的特定角度,是考慮問題時的一類屬性,屬性集合構成一個維(時間維、地理維等)。維的層次(Level):人們觀察數據的某個特定角度(即某個維)還可以存在細節程度不同的各個描述方面(時間維:日期、月份、季度、年)。維的成員(Member):維的一個取值,是數據項在某維中位置的描述。(“某年某月某日”是在時間維上位置的描述)。

度量(Measure):多維數組的取值。(2000年1月,上海,筆記本電腦,0000)。OLAP的基本多維分析操作有鑽取(Drill-up和Drill-down)、切片(Slice)和切塊(Dice)、以及旋轉(Pivot)等。

鑽取:是改變維的層次,變換分析的粒度。它包括向下鑽取(Drill-down)和向上鑽取(Drill-up)/上卷(Roll-up)。Drill-up是在某一維上将低層次的細節數據概括到高層次的彙總數據,或者減少維數;而Drill-down則相反,它從彙總數據深入到細節數據進行觀察或增加新維。

切片和切塊:是在一部分維上選定值後,關心度量數據在剩餘維上的分布。如果剩餘的維隻有兩個,則是切片;如果有三個或以上,則是切塊。旋轉:是變換維的方向,即在表格中重新安排維的放置(例如行列互換)。

體系結構

數據倉庫與OLAP的關系是互補的,現代OLAP系統一般以數據倉庫作為基礎,即從數據倉庫中抽取詳細數據的一個子集并經過必要的聚集存儲到OLAP存儲器中供前端分析工具讀取。典型的OLAP系統體系結構如下圖所示:

OLAP系統按照其存儲器的數據存儲格式可以分為關系OLAP(RelationalOLAP,簡稱ROLAP)、多維OLAP(MultidimensionalOLAP,簡稱MOLAP)和混合型OLAP(HybridOLAP,簡稱HOLAP)三種類型。

ROLAP

ROLAP将分析用的多維數據存儲在關系數據庫中并根據應用的需要有選擇的定義一批實視圖作為表也存儲在關系數據庫中。不必要将每一個SQL查詢都作為實視圖保存,隻定義那些應用頻率比較高、計算工作量比較大的查詢作為實視圖。對每個針對OLAP服務器的查詢,優先利用已經計算好的實視圖來生成查詢結果以提高查詢效率。同時用作ROLAP存儲器的RDBMS也針對OLAP作相應的優化,比如并行存儲、并行查詢、并行數據管理、基于成本的查詢優化、位圖索引、SQL的OLAP擴展(cube,rollup)等等。

MOLAP

MOLAP将OLAP分析所用到的多維數據物理上存儲為多維數組的形式,形成“立方體”的結構。維的屬性值被映射成多維數組的下标值或下标的範圍,而總結數據作為多維數組的值存儲在數組的單元中。由于MOLAP采用了新的存儲結構,從物理層實現起,因此又稱為物理OLAP(PhysicalOLAP);而ROLAP主要通過一些軟件工具或中間軟件實現,物理層仍采用關系數據庫的存儲結構,因此稱為虛拟OLAP(VirtualOLAP)。

HOLAP

由于MOLAP和ROLAP有着各自的優點和缺點(如下表所示),且它們的結構迥然不同,這給分析人員設計OLAP結構提出了難題。為此一個新的OLAP結構——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP兩種結構的優點結合起來。迄今為止,對HOLAP還沒有一個正式的定義。但很明顯,HOLAP結構不應該是MOLAP與ROLAP結構的簡單組合,而是這兩種結構技術優點的有機結合,能滿足用戶各種複雜的分析請求。

實現方式

同樣是仿照用戶的多角度思考模式,聯機分析處理有三種不同的實現方法:關系型聯機分析處理(ROLAP,Relational OLAP);多維聯機分析處理(MOLAP,Multi-Dimensional OLAP);前端展示聯機分析處理(Desktop OLAP)。

其中,前端展示聯機分析需要将所有數據下載到客戶機上,然後在客戶機上進行數據結構/報表格式重組,使用戶能在本機實現動态分析。該方式比較靈活,然而它能夠支持的數據量非常有限,嚴重地影響了使用的範圍和效率。因此,随着時間的推移,這種方式已退居次要地位,在此不作讨論 以下就ROLAP和MOLAP的具體實施方法進行讨論,關系型聯機分析處理的具體實施方法:

顧名思義,關系型聯機分析處理是以關系型數據庫為基礎的。唯一特别之處在于聯機分析處理中的數據結構組織的方式。讓我們考察一個例子,假設我們要進行産品銷售的财務分析,分析的角度包括時間、産品類别、市場分布、實際發生與預算四方面内容,分析的财務指标包括:銷售額、銷售支出、毛利(=銷售額-銷售支出)、費用、純利(=毛利-費用)等内容,則我們可以建立如下的數據結構:

該數據結構的中心是主表,裡面包含了所有分析維度的外鍵,以及所有的财務指标,可計算推導的财務指标不計在内,我們稱之為事實表(Fact Table)。周圍的表分别是對應于各個分析角度的維表(Dimension Table),每個維表除了主鍵以外,還包含了描述和分類信息。無論原來的業務數據的數據結構為何,隻要原業務數據能夠整理成為以上模式,則無論業務人員據此提出任何問題,都可以用SQL語句進行表連接或彙總(table join and group by)實現數據查詢和解答。(當然,有一些現成的ROLAP前端分析工具是可以自動根據以上模型生成SQL語句的)。這種模式被稱為星型模式(Star-Schema),可應用于不同的聯機分析處理應用中。以下是另一個采用星型模式的例子,分析的角度和指标截然不同,但數據結構模式一樣。我們看到的不是表的數據,而是表的結構。在聯機分析處理的數據模型設計中,這種表達方式更為常見:

有時候,維表的定義會變得複雜,例如對産品維,既要按産品種類進行劃分,對某些特殊商品,又要另外進行品牌劃分,商品品牌和産品種類劃分方法并不一樣。因此,單張維表不是理想的解決方案,可以采用以下方式,這種數據模型實際上是星型結構的拓展,我們稱之為雪花型模式(snow-flake schema)。

基本特點

數據結構和組織模式需要預先設計和建立;數據查詢需要進行表連接,在查詢性能測試中往往是影響速度的關鍵;數據彙總查詢(例如查詢某個品牌的所有産品銷售額),需要進行Group by 操作,雖然實際得出的數據量很少,但查詢時間變得更長;為了改善數據彙總查詢的性能,可以建立彙總表,但彙總表的數量與用戶分析的角度數目和每個角度的層次數目密切相關。例如,用戶從8個角度進行分析,每個角度有3個彙總層次,則彙總表的數目高達3的8次方。可以采取對常用彙總數據建立彙總表,對不常用的彙總數據進行Group by 操作,這樣來取得性能和管理複雜度之間的均衡。

某些客戶隻通過某些分銷渠道才購買,但是隻要該客戶存在,他在各個月和各個地區内均有消費(例如,華南IBM隻通過熊貓國旅定購南航機票,但在華南四省在每個月均有機票訂購)。則時間和地區維是密集維,客戶和分銷渠道是稀疏維,MOLAP将稀疏維建成索引文件(Index File),密集維所對應的數值仍然保留在數據文件中,索引文件不存儲空紀錄。這樣保持了對空間的合理利用。我們也可以看到,如果所有維都是稀疏維,則MOLAP的索引文件就退化成ROLAP的事實表,兩者沒有區别了。

在實際應用中,不可能所有分析的維度都是密集的,也絕少存在所有分析的維度都是稀疏的,因此稀疏維和密集維并用的模式幾乎主導了所有的MOLAP應用。而稀疏維和密集維的定義全部集中在概要文件中,因此,隻要預先定義好概要文件,所有的數據分布就自動确定了。在這種模式中,密集維的組合組成了的數據塊(Data Block),每個數據塊是I/O讀寫的基礎單位(如上圖),所有的數據塊組成了數據文件。稀疏維的組合組成了索引文件,索引文件的每一個數據紀錄的末尾都帶有一個指針,指向要讀寫的數據塊。因此,進行數據查詢時,系統先搜索索引文件紀錄,然後直接調用指針指向的數據塊進行I/O讀寫(如果該數據塊尚未駐留内存),将相應數據塊調入内存後,根據密集維的數據放置順序直接計算出要查詢的數據距離數據塊頭的偏移量,直接提取數據下傳到客戶端。因此,MOLAP 方式基本上是索引搜索與直接尋址的查詢方式相結合,比起ROLAP的表/索引搜索和表連接方式,速度要快得多。

相關詞條

相關搜索

其它詞條