聯(lián)機(jī)分析處理 - 軟件技術(shù)
聯(lián)機(jī)分析處理OLAP是一種軟件技術(shù),它使分析人員能夠迅速、一致、交互地從各個(gè)方面觀察信息,以達(dá)到深入理解數(shù)據(jù)的目的。它具有FASMI - Fast Analysis of Shared Multidimensional Information,即共享多維信息的快速分析的特征。其中F是快速性 - Fast,指系統(tǒng)能在數(shù)秒內(nèi)對(duì)用戶的多數(shù)分析要求做出反應(yīng);A是可分析性 - Analysis,指用戶無需編程就可以定義新的專門計(jì)算,將其作為分析的一部 分,并以用戶所希望的方式給出報(bào)告;M是多維性 - Multi—dimensional,指提供對(duì)數(shù)據(jù)分析的多維視圖和分析;I是信息性 - Information,指能及時(shí)獲得信息,并且管理大容量信息。

簡介
隨著數(shù)據(jù)庫技術(shù)的發(fā)展和應(yīng)用,數(shù)據(jù)庫存儲(chǔ)的數(shù)據(jù)量從20世紀(jì)80年代的兆(M)字節(jié)及千兆(G)字節(jié)過渡到現(xiàn)在的兆兆(T)字節(jié)和千兆兆(P)字節(jié),同時(shí),用戶的查詢需求也越來越復(fù)雜,涉及的已不僅是查詢或操縱一張關(guān)系表中的一條或幾條記錄,而且要對(duì)多張表中千萬條記錄的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析和信息綜合,關(guān)系數(shù)據(jù)庫系統(tǒng)已不能全部滿足這一要求。操作型應(yīng)用和分析型應(yīng)用,特別是在性能上難以兩全,人們常常在關(guān)系數(shù)據(jù)庫中放寬了對(duì)冗余的限制,引入了統(tǒng)計(jì)及綜合數(shù)據(jù),但這些統(tǒng)計(jì)綜合數(shù)據(jù)的應(yīng)用邏輯是分散而雜亂的、非系統(tǒng)化的,因此分析功能有限,不靈活,維護(hù)困難。在國外,不少軟件廠商采取了發(fā)展其前端產(chǎn)品來彌補(bǔ)關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持的不足,他們通過專門的數(shù)據(jù)綜合引擎,輔之以更加直觀的數(shù)據(jù)訪問界面,力圖統(tǒng)一分散的公共應(yīng)用邏輯,在短時(shí)間內(nèi)響應(yīng)非數(shù)據(jù)處理專業(yè)人員的復(fù)雜查詢要求。1993年,E.F.Codd(關(guān)系數(shù)據(jù)庫之父)將這類技術(shù)定義為“聯(lián)機(jī)分析處理”。
聯(lián)機(jī)分析處理是共享多維信息的、針對(duì)特定問題的聯(lián)機(jī)數(shù)據(jù)訪問和分析的快速軟件技術(shù)。它通過對(duì)信息的多種可能的觀察形式進(jìn)行快速、穩(wěn)定一致和交互性的存取,允許管理決策人員對(duì)數(shù)據(jù)進(jìn)行深入觀察。決策數(shù)據(jù)是多維數(shù)據(jù),多維數(shù)據(jù)就是決策的主要內(nèi)容。OLAP專門設(shè)計(jì)用于支持復(fù)雜的分析操作,側(cè)重對(duì)決策人員和高層管理人員的決策支持,可以根據(jù)分析人員的要求快速、靈活地進(jìn)行大數(shù)據(jù)量的復(fù)雜查詢處理,并且以一種直觀而易懂的形式將查詢結(jié)果提供給決策人員,以便他們準(zhǔn)確掌握企業(yè)(公司)的經(jīng)營狀況,了解對(duì)象的需求,制定正確的方案。
聯(lián)機(jī)分析處理具有靈活的分析功能、直觀的數(shù)據(jù)操作和分析結(jié)果可視化表示等突出優(yōu)點(diǎn),從而使用戶對(duì)基于大量復(fù)雜數(shù)據(jù)的分析變得輕松而高效,以利于迅速做出正確判斷。它可用于證實(shí)人們提出的復(fù)雜的假設(shè),其結(jié)果是以圖形或者表格的形式來表示的對(duì)信息的總結(jié)。它并不將異常信息標(biāo)記出來,是一種知識(shí)證實(shí)的方法。
由來
聯(lián)機(jī)分析處理 - OLAP的概念最早是由關(guān)系數(shù)據(jù)庫之父E.F.Codd于1993年提出的,他同時(shí)提出了關(guān)于OLAP的12條準(zhǔn)則。OLAP的提出引起了很大的反響,OLAP作為一類產(chǎn)品同聯(lián)機(jī)事務(wù)處理 - OLTP 明顯區(qū)分開來。Codd提出OLAP的12條準(zhǔn)則來描述OLAP系統(tǒng):準(zhǔn)則1OLAP模型必須提供多維概念視圖;準(zhǔn)則2透明性準(zhǔn)則;準(zhǔn)則3存取能力推測(cè);準(zhǔn)則4穩(wěn)定的報(bào)表能力;準(zhǔn)則5客戶/服務(wù)器體系結(jié)構(gòu);?準(zhǔn)則6維的等同性準(zhǔn)則;準(zhǔn)則7動(dòng)態(tài)的稀疏矩陣處理準(zhǔn)則;?準(zhǔn)則8多用戶支持能力準(zhǔn)則;準(zhǔn)則9非受限的跨維操作;準(zhǔn)則10直觀的數(shù)據(jù)操縱;準(zhǔn)則11靈活的報(bào)表生成;準(zhǔn)則12不受限的維與聚集層次。
當(dāng)今的數(shù)據(jù)處理大致可以分成兩大類:聯(lián)機(jī)事務(wù)處理OLTP(on-line transaction processing)、聯(lián)機(jī)分析處理OLAP(On-Line Analytical Processing)。OLTP是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的主要應(yīng)用,主要是基本的、日常的事務(wù)處理,例如銀行交易。OLAP是數(shù)據(jù)倉庫系統(tǒng)的主要應(yīng)用,支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。下表列出了OLTP與OLAP之間的比較。
發(fā)展背景
隨著數(shù)據(jù)庫技術(shù)的廣泛應(yīng)用,企業(yè)信息系統(tǒng)產(chǎn)生了大量的數(shù)據(jù),如何從這些海量數(shù)據(jù)中提取對(duì)企業(yè)決策分析有用的信息成為企業(yè)決策管理人員所面臨的重要難題。傳統(tǒng)的企業(yè)數(shù)據(jù)庫系統(tǒng)(管理信息系統(tǒng))即聯(lián)機(jī)事務(wù)處理系統(tǒng)(On-LineTransactionProcessing,簡稱OLTP)作為數(shù)據(jù)管理手段,主要用于事務(wù)處理,但它對(duì)分析處理的支持一直不能令人滿意。因此,人們逐漸嘗試對(duì)OLTP數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行再加工,形成一個(gè)綜合的、面向分析的、更好的支持決策制定的決策支持系統(tǒng)(DecisionSupportSystem,簡稱DSS)。企業(yè)目前的信息系統(tǒng)的數(shù)據(jù)一般由DBMS管理,但決策數(shù)據(jù)庫和運(yùn)行操作數(shù)據(jù)庫在數(shù)據(jù)來源、數(shù)據(jù)內(nèi)容、數(shù)據(jù)模式、服務(wù)對(duì)象、訪問方式、事務(wù)管理乃至無力存儲(chǔ)等方面都有不同的特點(diǎn)和要求,因此直接在運(yùn)行操作的數(shù)據(jù)庫上建立DSS是不合適的。數(shù)據(jù)倉庫(DataWarehouse)技術(shù)就是在這樣的背景下發(fā)展起來的。數(shù)據(jù)倉庫的概念提出于20世紀(jì)80年代中期,20世紀(jì)90年代,數(shù)據(jù)倉庫已從早起的探索階段走向?qū)嵱秒A段。業(yè)界公認(rèn)的數(shù)據(jù)倉庫概念創(chuàng)始人W.H.Inmon在《BuildingtheDataWarehouse》一書中對(duì)數(shù)據(jù)倉庫的定義是:“數(shù)據(jù)倉庫是支持管理決策過程的、面向主題的、集成的、隨時(shí)間變化的持久的數(shù)據(jù)集合”。構(gòu)建數(shù)據(jù)倉庫的過程就是根據(jù)預(yù)先設(shè)計(jì)好的邏輯模式從分布在企業(yè)內(nèi)部各處的OLTP數(shù)據(jù)庫中提取數(shù)據(jù)并對(duì)經(jīng)過必要的變換最終形成全企業(yè)統(tǒng)一模式數(shù)據(jù)的過程。當(dāng)前數(shù)據(jù)倉庫的核心仍是RDBMS管理下的一個(gè)數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)倉庫中數(shù)據(jù)量巨大,為了提高性能,RDBMS一般也采取一些提高效率的措施:采用并行處理結(jié)構(gòu)、新的數(shù)據(jù)組織、查詢策略、索引技術(shù)等等。
包括聯(lián)機(jī)分析處理(On-LineAnalyticalProcessing,簡稱OLAP)在內(nèi)的諸多應(yīng)用牽引驅(qū)動(dòng)了數(shù)據(jù)倉庫技術(shù)的出現(xiàn)和發(fā)展;而數(shù)據(jù)倉庫技術(shù)反過來又促進(jìn)了OLAP技術(shù)的發(fā)展。聯(lián)機(jī)分析處理的概念最早由關(guān)系數(shù)據(jù)庫之父E.F.Codd于1993年提出的。Codd認(rèn)為聯(lián)機(jī)事務(wù)處理(OLTP)已不能滿足終端用戶對(duì)數(shù)據(jù)庫查詢分析的要求,SQL對(duì)大數(shù)據(jù)庫的簡單查詢也不能滿足用戶分析的需求。用戶的決策分析需要對(duì)關(guān)系數(shù)據(jù)庫進(jìn)行大量計(jì)算才能得到結(jié)果,而查詢的結(jié)果并不能滿足決策者提出的需求。因此,Codd提出了多維數(shù)據(jù)庫和多維分析的概念,即OLAP。OLAP委員會(huì)對(duì)聯(lián)機(jī)分析處理的定義為:使分析人員、管理人員或執(zhí)行人員能夠從多種角度對(duì)從原始數(shù)據(jù)中轉(zhuǎn)化出來的、能夠真正為用戶所理解的、并真實(shí)反映企業(yè)維特性的信息進(jìn)行快速、一致、交互地存取,從而獲得對(duì)數(shù)據(jù)的更深入了解的一類軟件技術(shù)。OLAP的目標(biāo)是滿足決策支持或多維環(huán)境特定的查詢和報(bào)表需求,它的技術(shù)核心是“維”這個(gè)概念,因此OLAP也可以說是多維數(shù)據(jù)分析工具的集合。
處理特點(diǎn)
在過去的二十年中,大量的企業(yè)利用關(guān)系型數(shù)據(jù)庫來存儲(chǔ)和管理業(yè)務(wù)數(shù)據(jù),并建立相應(yīng)的應(yīng)用系統(tǒng)來支持日常業(yè)務(wù)運(yùn)作。這種應(yīng)用以支持業(yè)務(wù)處理為主要目的,被稱為聯(lián)機(jī)事務(wù)處理 - OLTP,On-line Transaction Processing應(yīng)用,它所存儲(chǔ)的數(shù)據(jù)被稱為操作數(shù)據(jù)或者業(yè)務(wù)數(shù)據(jù)。隨著市場(chǎng)競爭的日趨激烈,近年來企業(yè)更加強(qiáng)調(diào)決策的及時(shí)性和準(zhǔn)確性,這使得以支持決策管理分析為主要目的的應(yīng)用迅速崛起,這類應(yīng)用被稱為聯(lián)機(jī)分析處理,它所存儲(chǔ)的數(shù)據(jù)被稱為信息數(shù)據(jù)。
聯(lián)機(jī)分析處理的用戶是企業(yè)中的專業(yè)分析人員及管理決策人員,他們?cè)诜治鰳I(yè)務(wù)經(jīng)營的數(shù)據(jù)時(shí),從不同的角度來審視業(yè)務(wù)的衡量指標(biāo)是一種很自然的思考模式。例如分析銷售數(shù)據(jù),可能會(huì)綜合時(shí)間周期、產(chǎn)品類別、分銷渠道、地理分布、客戶群類等多種因素來考量。這些分析角度雖然可以通過報(bào)表來反映,但每一個(gè)分析的角度可以生成一張報(bào)表,各個(gè)分析角度的不同組合又可以生成不同的報(bào)表,使得IT人員的工作量相當(dāng)大,而且往往難以跟上管理決策人員思考的步伐。
聯(lián)機(jī)分析處理的主要特點(diǎn),是直接仿照用戶的多角度思考模式,預(yù)先為用戶組建多維的數(shù)據(jù)模型,在這里,維指的是用戶的分析角度。例如對(duì)銷售數(shù)據(jù)的分析,時(shí)間周期是一個(gè)維度,產(chǎn)品類別、分銷渠道、地理分布、客戶群類也分別是一個(gè)維度。一旦多維數(shù)據(jù)模型建立完成,用戶可以快速地從各個(gè)分析角度獲取數(shù)據(jù),也能動(dòng)態(tài)的在各個(gè)角度之間切換或者進(jìn)行多角度綜合分析,具有極大的分析靈活性。這也是聯(lián)機(jī)分析處理在近年來被廣泛關(guān)注的根本原因,它從設(shè)計(jì)理念和真正實(shí)現(xiàn)上都與舊有的管理信息系統(tǒng)有著本質(zhì)的區(qū)別。
事實(shí)上,隨著數(shù)據(jù)倉庫理論的發(fā)展,數(shù)據(jù)倉庫系統(tǒng)已逐步成為新型的決策管理信息系統(tǒng)的解決方案。數(shù)據(jù)倉庫系統(tǒng)的核心是聯(lián)機(jī)分析處理,但數(shù)據(jù)倉庫包括更為廣泛的內(nèi)容。概括來說,數(shù)據(jù)倉庫系統(tǒng)是指具有綜合企業(yè)數(shù)據(jù)的能力,能夠?qū)Υ罅科髽I(yè)數(shù)據(jù)進(jìn)行快速和準(zhǔn)確分析,輔助做出更好的商業(yè)決策的系統(tǒng)。它本身包括三部分內(nèi)容:
數(shù)據(jù)層。實(shí)現(xiàn)對(duì)企業(yè)操作數(shù)據(jù)的抽取、轉(zhuǎn)換、清洗和匯總,形成信息數(shù)據(jù),并存儲(chǔ)在企業(yè)級(jí)的中心信息數(shù)據(jù)庫中。
應(yīng)用層。通過聯(lián)機(jī)分析處理,甚至是數(shù)據(jù)挖掘等應(yīng)用處理,實(shí)現(xiàn)對(duì)信息數(shù)據(jù)的分析。
表現(xiàn)層。通過前臺(tái)分析工具,將查詢報(bào)表、統(tǒng)計(jì)分析、多維聯(lián)機(jī)分析和數(shù)據(jù)發(fā)掘的結(jié)論展現(xiàn)在用戶面前。
從應(yīng)用角度來說,數(shù)據(jù)倉庫系統(tǒng)除了聯(lián)機(jī)分析處理外,還可以采用傳統(tǒng)的報(bào)表,或者采用數(shù)理統(tǒng)計(jì)和人工智能等數(shù)據(jù)挖掘手段,涵蓋的范圍更廣;就應(yīng)用范圍而言,聯(lián)機(jī)分析處理往往根據(jù)用戶分析的主題進(jìn)行應(yīng)用分割,例如:銷售分析、市場(chǎng)推廣分析、客戶利潤率分析等等,每一個(gè)分析的主題形成一個(gè)OLAP應(yīng)用,而所有的OLAP應(yīng)用實(shí)際上只是數(shù)據(jù)倉庫系統(tǒng)的一部分。
典型操作
OLAP展現(xiàn)在用戶面前的是一幅幅多維視圖。
維(Dimension):是人們觀察數(shù)據(jù)的特定角度,是考慮問題時(shí)的一類屬性,屬性集合構(gòu)成一個(gè)維(時(shí)間維、地理維等)。維的層次(Level):人們觀察數(shù)據(jù)的某個(gè)特定角度(即某個(gè)維)還可以存在細(xì)節(jié)程度不同的各個(gè)描述方面(時(shí)間維:日期、月份、季度、年)。維的成員(Member):維的一個(gè)取值,是數(shù)據(jù)項(xiàng)在某維中位置的描述。(“某年某月某日”是在時(shí)間維上位置的描述)。
度量(Measure):多維數(shù)組的取值。(2000年1月,上海,筆記本電腦,0000)。OLAP的基本多維分析操作有鉆?。―rill-up和Drill-down)、切片(Slice)和切塊(Dice)、以及旋轉(zhuǎn)(Pivot)等。
鉆?。菏歉淖兙S的層次,變換分析的粒度。它包括向下鉆?。―rill-down)和向上鉆取(Drill-up)/上卷 - Roll-up。Drill-up是在某一維上將低層次的細(xì)節(jié)數(shù)據(jù)概括到高層次的匯總數(shù)據(jù),或者減少維數(shù);而Drill-down則相反,它從匯總數(shù)據(jù)深入到細(xì)節(jié)數(shù)據(jù)進(jìn)行觀察或增加新維。
切片和切塊:是在一部分維上選定值后,關(guān)心度量數(shù)據(jù)在剩余維上的分布。如果剩余的維只有兩個(gè),則是切片;如果有三個(gè)或以上,則是切塊。旋轉(zhuǎn):是變換維的方向,即在表格中重新安排維的放置(例如行列互換)。
體系結(jié)構(gòu)
數(shù)據(jù)倉庫與OLAP的關(guān)系是互補(bǔ)的,現(xiàn)代OLAP系統(tǒng)一般以數(shù)據(jù)倉庫作為基礎(chǔ),即從數(shù)據(jù)倉庫中抽取詳細(xì)數(shù)據(jù)的一個(gè)子集并經(jīng)過必要的聚集存儲(chǔ)到OLAP存儲(chǔ)器中供前端分析工具讀取。典型的OLAP系統(tǒng)體系結(jié)構(gòu)如下圖所示:
OLAP系統(tǒng)按照其存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)格式可以分為關(guān)系OLAP(RelationalOLAP,簡稱ROLAP)、多維OLAP(MultidimensionalOLAP,簡稱MOLAP)和混合型OLAP(HybridOLAP,簡稱HOLAP)三種類型。
ROLAP
ROLAP將分析用的多維數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫中并根據(jù)應(yīng)用的需要有選擇的定義一批實(shí)視圖作為表也存儲(chǔ)在關(guān)系數(shù)據(jù)庫中。不必要將每一個(gè)SQL查詢都作為實(shí)視圖保存,只定義那些應(yīng)用頻率比較高、計(jì)算工作量比較大的查詢作為實(shí)視圖。對(duì)每個(gè)針對(duì)OLAP服務(wù)器的查詢,優(yōu)先利用已經(jīng)計(jì)算好的實(shí)視圖來生成查詢結(jié)果以提高查詢效率。同時(shí)用作ROLAP存儲(chǔ)器的RDBMS也針對(duì)OLAP作相應(yīng)的優(yōu)化,比如并行存儲(chǔ)、并行查詢、并行數(shù)據(jù)管理、基于成本的查詢優(yōu)化、位圖索引、SQL的OLAP擴(kuò)展 - cube,rollup等等。
MOLAP
MOLAP將OLAP分析所用到的多維數(shù)據(jù)物理上存儲(chǔ)為多維數(shù)組的形式,形成“立方體”的結(jié)構(gòu)。維的屬性值被映射成多維數(shù)組的下標(biāo)值或下標(biāo)的范圍,而總結(jié)數(shù)據(jù)作為多維數(shù)組的值存儲(chǔ)在數(shù)組的單元中。由于MOLAP采用了新的存儲(chǔ)結(jié)構(gòu),從物理層實(shí)現(xiàn)起,因此又稱為物理OLAP(PhysicalOLAP);而ROLAP主要通過一些軟件工具或中間軟件實(shí)現(xiàn),物理層仍采用關(guān)系數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu),因此稱為虛擬OLAP(VirtualOLAP)。
HOLAP
由于MOLAP和ROLAP有著各自的優(yōu)點(diǎn)和缺點(diǎn)(如下表所示),且它們的結(jié)構(gòu)迥然不同,這給分析人員設(shè)計(jì)OLAP結(jié)構(gòu)提出了難題。為此一個(gè)新的OLAP結(jié)構(gòu)——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP兩種結(jié)構(gòu)的優(yōu)點(diǎn)結(jié)合起來。迄今為止,對(duì)HOLAP還沒有一個(gè)正式的定義。但很明顯,HOLAP結(jié)構(gòu)不應(yīng)該是MOLAP與ROLAP結(jié)構(gòu)的簡單組合,而是這兩種結(jié)構(gòu)技術(shù)優(yōu)點(diǎn)的有機(jī)結(jié)合,能滿足用戶各種復(fù)雜的分析請(qǐng)求。
實(shí)現(xiàn)方式
同樣是仿照用戶的多角度思考模式,聯(lián)機(jī)分析處理有三種不同的實(shí)現(xiàn)方法:關(guān)系型聯(lián)機(jī)分析處理 - ROLAP,Relational OLAP;多維聯(lián)機(jī)分析處理 - MOLAP,Multi-Dimensional OLAP;前端展示聯(lián)機(jī)分析處理 - Desktop OLAP)。
其中,前端展示聯(lián)機(jī)分析需要將所有數(shù)據(jù)下載到客戶機(jī)上,然后在客戶機(jī)上進(jìn)行數(shù)據(jù)結(jié)構(gòu)/報(bào)表格式重組,使用戶能在本機(jī)實(shí)現(xiàn)動(dòng)態(tài)分析。該方式比較靈活,然而它能夠支持的數(shù)據(jù)量非常有限,嚴(yán)重地影響了使用的范圍和效率。因此,隨著時(shí)間的推移,這種方式已退居次要地位,在此不作討論?以下就ROLAP和MOLAP的具體實(shí)施方法進(jìn)行討論,關(guān)系型聯(lián)機(jī)分析處理的具體實(shí)施方法:
顧名思義,關(guān)系型聯(lián)機(jī)分析處理是以關(guān)系型數(shù)據(jù)庫為基礎(chǔ)的。唯一特別之處在于聯(lián)機(jī)分析處理中的數(shù)據(jù)結(jié)構(gòu)組織的方式。讓我們考察一個(gè)例子,假設(shè)我們要進(jìn)行產(chǎn)品銷售的財(cái)務(wù)分析,分析的角度包括時(shí)間、產(chǎn)品類別、市場(chǎng)分布、實(shí)際發(fā)生與預(yù)算四方面內(nèi)容,分析的財(cái)務(wù)指標(biāo)包括:銷售額、銷售支出、毛利 - =銷售額-銷售支出、費(fèi)用、純利 - =毛利-費(fèi)用等內(nèi)容,則我們可以建立如下的數(shù)據(jù)結(jié)構(gòu):
該數(shù)據(jù)結(jié)構(gòu)的中心是主表,里面包含了所有分析維度的外鍵,以及所有的財(cái)務(wù)指標(biāo),可計(jì)算推導(dǎo)的財(cái)務(wù)指標(biāo)不計(jì)在內(nèi),我們稱之為事實(shí)表 - Fact Table。周圍的表分別是對(duì)應(yīng)于各個(gè)分析角度的維表 - Dimension Table,每個(gè)維表除了主鍵以外,還包含了描述和分類信息。無論原來的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)為何,只要原業(yè)務(wù)數(shù)據(jù)能夠整理成為以上模式,則無論業(yè)務(wù)人員據(jù)此提出任何問題,都可以用SQL語句進(jìn)行表連接或匯總 - table join and group by實(shí)現(xiàn)數(shù)據(jù)查詢和解答。(當(dāng)然,有一些現(xiàn)成的ROLAP前端分析工具是可以自動(dòng)根據(jù)以上模型生成SQL語句的)。這種模式被稱為星型模式 - Star-Schema,可應(yīng)用于不同的聯(lián)機(jī)分析處理應(yīng)用中。以下是另一個(gè)采用星型模式的例子,分析的角度和指標(biāo)截然不同,但數(shù)據(jù)結(jié)構(gòu)模式一樣。我們看到的不是表的數(shù)據(jù),而是表的結(jié)構(gòu)。在聯(lián)機(jī)分析處理的數(shù)據(jù)模型設(shè)計(jì)中,這種表達(dá)方式更為常見:
有時(shí)候,維表的定義會(huì)變得復(fù)雜,例如對(duì)產(chǎn)品維,既要按產(chǎn)品種類進(jìn)行劃分,對(duì)某些特殊商品,又要另外進(jìn)行品牌劃分,商品品牌和產(chǎn)品種類劃分方法并不一樣。因此,單張維表不是理想的解決方案,可以采用以下方式,這種數(shù)據(jù)模型實(shí)際上是星型結(jié)構(gòu)的拓展,我們稱之為雪花型模式 - snow-flake schema。
基本特點(diǎn)
數(shù)據(jù)結(jié)構(gòu)和組織模式需要預(yù)先設(shè)計(jì)和建立;數(shù)據(jù)查詢需要進(jìn)行表連接,在查詢性能測(cè)試中往往是影響速度的關(guān)鍵;數(shù)據(jù)匯總查詢(例如查詢某個(gè)品牌的所有產(chǎn)品銷售額),需要進(jìn)行Group by 操作,雖然實(shí)際得出的數(shù)據(jù)量很少,但查詢時(shí)間變得更長;為了改善數(shù)據(jù)匯總查詢的性能,可以建立匯總表,但匯總表的數(shù)量與用戶分析的角度數(shù)目和每個(gè)角度的層次數(shù)目密切相關(guān)。例如,用戶從8個(gè)角度進(jìn)行分析,每個(gè)角度有3個(gè)匯總層次,則匯總表的數(shù)目高達(dá)3的8次方??梢圆扇?duì)常用匯總數(shù)據(jù)建立匯總表,對(duì)不常用的匯總數(shù)據(jù)進(jìn)行Group by 操作,這樣來取得性能和管理復(fù)雜度之間的均衡。
某些客戶只通過某些分銷渠道才購買,但是只要該客戶存在,他在各個(gè)月和各個(gè)地區(qū)內(nèi)均有消費(fèi) - 例如,華南IBM只通過熊貓國旅定購南航機(jī)票,但在華南四省在每個(gè)月均有機(jī)票訂購。則時(shí)間和地區(qū)維是密集維,客戶和分銷渠道是稀疏維,MOLAP將稀疏維建成索引文件 - Index File,密集維所對(duì)應(yīng)的數(shù)值仍然保留在數(shù)據(jù)文件中,索引文件不存儲(chǔ)空紀(jì)錄。這樣保持了對(duì)空間的合理利用。我們也可以看到,如果所有維都是稀疏維,則MOLAP的索引文件就退化成ROLAP的事實(shí)表,兩者沒有區(qū)別了。
在實(shí)際應(yīng)用中,不可能所有分析的維度都是密集的,也絕少存在所有分析的維度都是稀疏的,因此稀疏維和密集維并用的模式幾乎主導(dǎo)了所有的MOLAP應(yīng)用。而稀疏維和密集維的定義全部集中在概要文件中,因此,只要預(yù)先定義好概要文件,所有的數(shù)據(jù)分布就自動(dòng)確定了。在這種模式中,密集維的組合組成了的數(shù)據(jù)塊 - Data Block,每個(gè)數(shù)據(jù)塊是I/O讀寫的基礎(chǔ)單位 - 如上圖,所有的數(shù)據(jù)塊組成了數(shù)據(jù)文件。稀疏維的組合組成了索引文件,索引文件的每一個(gè)數(shù)據(jù)紀(jì)錄的末尾都帶有一個(gè)指針,指向要讀寫的數(shù)據(jù)塊。因此,進(jìn)行數(shù)據(jù)查詢時(shí),系統(tǒng)先搜索索引文件紀(jì)錄,然后直接調(diào)用指針指向的數(shù)據(jù)塊進(jìn)行I/O讀寫 - 如果該數(shù)據(jù)塊尚未駐留內(nèi)存,將相應(yīng)數(shù)據(jù)塊調(diào)入內(nèi)存后,根據(jù)密集維的數(shù)據(jù)放置順序直接計(jì)算出要查詢的數(shù)據(jù)距離數(shù)據(jù)塊頭的偏移量,直接提取數(shù)據(jù)下傳到客戶端。因此,MOLAP 方式基本上是索引搜索與直接尋址的查詢方式相結(jié)合,比起ROLAP的表/索引搜索和表連接方式,速度要快得多。
