說到olap就不得不先介紹一下數(shù)據(jù)倉庫执泰,因?yàn)閛lap就是基于數(shù)據(jù)倉庫基礎(chǔ)上面向分析的對(duì)多維模型進(jìn)行各類操作的集合墓贿。
數(shù)據(jù)倉庫的概念模型?最流行的數(shù)據(jù)倉庫概念是多維數(shù)據(jù)模型贰剥。這種模型可以以星型模式弹沽,雪花模式畴嘶,或事實(shí)星座模式的形式存在。
1.星型模式(Star schema):事實(shí)表在中心凝垛,周圍圍繞地連接著維表(每維一個(gè))懊悯,事實(shí)表包含有大量數(shù)據(jù),沒有冗余梦皮。
2.雪花模式(Snowflake schema):是星型模式的變種炭分,其中某些維表是規(guī)范化的,因而把數(shù)據(jù)進(jìn)一步分解到附加表中剑肯。結(jié)果捧毛,模式圖形成類似雪花的形狀。
雪花模型相較于星座模型退子,是把維表進(jìn)行了規(guī)范化岖妄。
事實(shí)星座(Fact constellations):多個(gè)事實(shí)表共享維表,這種模式可以看作星座模式集寂祥,因此稱作星系模式(galaxy schema)荐虐,或者事實(shí)星座(fact constellation)
事實(shí)星座模式是把事實(shí)間共享的維進(jìn)行合并。
對(duì)概念進(jìn)行分層丸凭,有利于數(shù)據(jù)的匯總福扬。
數(shù)據(jù)立方體
關(guān)于數(shù)據(jù)立方體(Data Cube),這里必須注意的是數(shù)據(jù)立方體只是多維模型的一個(gè)形象的說法惜犀。立方體其本身只有三維铛碑,但多維模型不僅限于三維模型,可以組合更多的維度虽界,但一方面是出于更方便地解釋和描述汽烦,同時(shí)也是給思維成像和想象的空間;另一方面是為了與傳統(tǒng)關(guān)系型數(shù)據(jù)庫的二維表區(qū)別開來莉御,于是就有了數(shù)據(jù)立方體的叫法撇吞。所以本文中也是引用立方體俗冻,也就是把多維模型以三維的方式為代表進(jìn)行展現(xiàn)和描述,其實(shí)上Google圖片搜索“OLAP”會(huì)有一大堆的數(shù)據(jù)立方體圖片牍颈,這里我自己畫了一個(gè):
OLAP
OLAP(On-line Analytical Processing迄薄,聯(lián)機(jī)分析處理)是在基于數(shù)據(jù)倉庫多維模型的基礎(chǔ)上實(shí)現(xiàn)的面向分析的各類操作的集合≈笏辏可以比較下其與傳統(tǒng)的OLTP(On-line Transaction Processing讥蔽,聯(lián)機(jī)事務(wù)處理)的區(qū)別來看一下它的特點(diǎn):
OLAP與OLTP
數(shù)據(jù)處理類型OLTPOLAP
面向?qū)ο髽I(yè)務(wù)開發(fā)人員分析決策人員
功能實(shí)現(xiàn)日常事務(wù)處理面向分析決策
數(shù)據(jù)模型關(guān)系模型多維模型
數(shù)據(jù)量幾條或幾十條記錄百萬千萬條記錄
操作類型查詢、插入画机、更新冶伞、刪除查詢?yōu)橹?/p>
OLAP的類型
首先要聲明的是這里介紹的有關(guān)多維數(shù)據(jù)模型和OLAP的內(nèi)容基本都是基于ROLAP,因?yàn)槠渌麕追N類型極少接觸色罚,而且相關(guān)的資料也不多碰缔。
MOLAP(Multidimensional)
即基于多維數(shù)組的存儲(chǔ)模型账劲,也是最原始的OLAP戳护,但需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理才能形成多維結(jié)構(gòu)。
ROLAP(Relational)
比較常見的OLAP類型瀑焦,這里介紹和討論的也基本都是ROLAP類型腌且,可以從多維數(shù)據(jù)模型的那篇文章的圖中看到,其實(shí)ROLAP是完全基于關(guān)系模型進(jìn)行存放的榛瓮,只是它根據(jù)分析的需要對(duì)模型的結(jié)構(gòu)和組織形式進(jìn)行的優(yōu)化铺董,更利于OLAP。
HOLAP(Hybrid)
介于MOLAP和ROLAP的類型禀晓,我的理解是細(xì)節(jié)的數(shù)據(jù)以ROLAP的形式存放精续,更加方便靈活,而高度聚合的數(shù)據(jù)以MOLAP的形式展現(xiàn)粹懒,更適合于高效的分析處理重付。
另外還有WOLAP(Web-based OLAP)、DOLAP(Desktop OLAP)凫乖、RTOLAP(Real-Time OLAP)确垫,具體可以參開維基百科上的解釋——OLAP。
OLAP的基本操作
我們已經(jīng)知道OLAP的操作是以查詢——也就是數(shù)據(jù)庫的SELECT操作為主帽芽,但是查詢可以很復(fù)雜删掀,比如基于關(guān)系數(shù)據(jù)庫的查詢可以多表關(guān)聯(lián),可以使用COUNT导街、SUM披泪、AVG等聚合函數(shù)。OLAP正是基于多維模型定義了一些常見的面向分析的操作類型是這些操作顯得更加直觀搬瑰。
OLAP的多維分析操作包括:鉆瓤钇薄(Drill-down)计福、上卷(Roll-up)、切片(Slice)徽职、切塊(Dice)以及旋轉(zhuǎn)(Pivot)象颖,下面還是以上面的數(shù)據(jù)立方體為例來逐一解釋下:
鉆取(Drill-down):在維的不同層次間的變化姆钉,從上層降到下一層说订,或者說是將匯總數(shù)據(jù)拆分到更細(xì)節(jié)的數(shù)據(jù),比如通過對(duì)2010年第二季度的總銷售數(shù)據(jù)進(jìn)行鉆取來查看2010年第二季度4潮瓶、5陶冷、6每個(gè)月的消費(fèi)數(shù)據(jù),如上圖毯辅;當(dāng)然也可以鉆取浙江省來查看杭州市埂伦、寧波市、溫州市……這些城市的銷售數(shù)據(jù)思恐。
上卷(Roll-up):鉆取的逆操作沾谜,即從細(xì)粒度數(shù)據(jù)向高層的聚合,如將江蘇省胀莹、上海市和浙江省的銷售數(shù)據(jù)進(jìn)行匯總來查看江浙滬地區(qū)的銷售數(shù)據(jù)基跑,如上圖。
切片(Slice):選擇維中特定的值進(jìn)行分析描焰,比如只選擇電子產(chǎn)品的銷售數(shù)據(jù)媳否,或者2010年第二季度的數(shù)據(jù)。
切塊(Dice):選擇維中特定區(qū)間的數(shù)據(jù)或者某批特定值進(jìn)行分析荆秦,比如選擇2010年第一季度到2010年第二季度的銷售數(shù)據(jù)篱竭,或者是電子產(chǎn)品和日用品的銷售數(shù)據(jù)。
旋轉(zhuǎn)(Pivot):即維的位置的互換步绸,就像是二維表的行列轉(zhuǎn)換掺逼,如圖中通過旋轉(zhuǎn)實(shí)現(xiàn)產(chǎn)品維和地域維的互換。
OLAP的優(yōu)勢
首先必須說的是靡努,OLAP的優(yōu)勢是基于數(shù)據(jù)倉庫面向主題坪圾、集成的、保留歷史及不可變更的數(shù)據(jù)存儲(chǔ)惑朦,以及多維模型多視角多層次的數(shù)據(jù)組織形式兽泄,如果脫離的這兩點(diǎn),OLAP將不復(fù)存在漾月,也就沒有優(yōu)勢可言病梢。
數(shù)據(jù)展現(xiàn)方式
基于多維模型的數(shù)據(jù)組織讓數(shù)據(jù)的展示更加直觀,它就像是我們平常看待各種事物的方式蜓陌,可以從多個(gè)角度多個(gè)層面去發(fā)現(xiàn)事物的不同特性觅彰,而OLAP正是將這種尋常的思維模型應(yīng)用到了數(shù)據(jù)分析上。
查詢效率
多維模型的建立是基于對(duì)OLAP操作的優(yōu)化基礎(chǔ)上的钮热,比如基于各個(gè)維的索引填抬、對(duì)于一些常用查詢所建的視圖等,這些優(yōu)化使得對(duì)百萬千萬甚至上億數(shù)量級(jí)的運(yùn)算變得得心應(yīng)手隧期。
分析的靈活性
我們知道多維數(shù)據(jù)模型可以從不同的角度和層面來觀察數(shù)據(jù)飒责,同時(shí)可以用上面介紹的各類OLAP操作對(duì)數(shù)據(jù)進(jìn)行聚合、細(xì)分和選取仆潮,這樣提高了分析的靈活性宏蛉,可以從不同角度不同層面對(duì)數(shù)據(jù)進(jìn)行細(xì)分和匯總,滿足不同分析的需求性置。