數(shù)據(jù)倉庫的建模方法有很多種,常見的有維度建模法、范式建模法、實體建模法等,下面主要介紹一下維度建模法。
維度建模的基本概念
維度建模(dimensional modeling)是專門用于分析型數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)集市建模的方法。它本身屬于一種關(guān)系建模方法,但和關(guān)系建模方法相比增加了兩個概念:
維度表(dimension)
表示對分析主題所屬類型的描述。比如"昨天下午鄭州外國語學(xué)校8年級3班王小明同學(xué)花費了99元購買了一套課程"。那么我們以購買為主題進行分析,可從這段信息中提取三個維度:時間維度(昨天下午),地點維度(鄭州外國語學(xué)校), 商品維度(課程)。通常來說維度表信息比較固定,且數(shù)據(jù)量小。
- 維度表類型
- 日期維
- 數(shù)據(jù)倉庫必須有的維度,包含日期,日期所屬的周,月,季度,年等信息。
- 角色維
- 相同的維度表在維度模型中扮演不中的邏輯角色,一般通過創(chuàng)建視圖來表示。
- 支架維
- 如果維度之間是一對多的關(guān)系或區(qū)別于原維度的多個描述性維度屬性,可以建雪花型支架維度。
- 多值維度橋接維
- 如果二個維度表是多對多的關(guān)系,可以使用多值維度設(shè)計。
- 微型維
- 一個大型維有些屬性變化比較頻繁,把這些屬性單獨生成一個微型維度表。
- 縮小維
- 維度表的一個子集或部分屬性。
- 層次維
- 有些維度表是有層次結(jié)構(gòu)的,可以通過視圖生成樹形結(jié)構(gòu)的維度表。
- ...
- 日期維
事實表(fact table)
表示對分析主題的度量。比如上面那個例子中,99元就是事實信息。事實表包含了與各維度表相關(guān)聯(lián)的外碼,并通過 JOIN 方式與維度表關(guān)聯(lián)。事實表的度量通常是數(shù)值類型,且記錄數(shù)會不斷增加,表規(guī)模迅速增長。
-
事實表類型
- 事務(wù)事實表
- 它是面向事務(wù)的,其粒度是每一行對應(yīng)一個事務(wù),它是最細粒度的事實表。
- 周期快照事實表
- 它是按照良好的時間周期間隔(每天,每月)來捕捉業(yè)務(wù)活動的執(zhí)行情況,一旦裝入事實表就不會再去更新,它是事務(wù)事實表的補充,而非替代品。
- 累積快照事實表
- 它用于描述業(yè)務(wù)過程中某個不確定時間跨度里的活動,它隨著業(yè)務(wù)活動的發(fā)生會不斷的更新。
- 事務(wù)事實表
三種事實表類型之間的區(qū)別:
事務(wù)事實表 | 周期快照事實表 | 累積快照事實表 | |
---|---|---|---|
代表的時間段 | 時間點 | 規(guī)律可預(yù)見間隔 | 不確定時間跨度,一般是短期 |
粒度 | 每個事件事務(wù)一行 | 每段時間一行 | 每個生命周期一行 |
事實表加載 | 插入 | 插入 | 插入與更新 |
事實表更新 | 不重新加載 | 不重新加載 | 重新加載 |
日期維度 | 事務(wù)日期 | 時間段終止日期 | 標準關(guān)鍵環(huán)節(jié)的多個日期 |
事實 | 事務(wù)活動 | 預(yù)定時間間隔的性能 | 給定生命周期的性能 |
維度建模優(yōu)點
- 便于理解
- 提高查詢性能
- 對稱性
- 可擴展性
維度建模的三種模式
1.星形模式
星形模式(Star Schema)是最常用的維度建模方式,下圖展示了使用星形模式進行維度建模的關(guān)系結(jié)構(gòu):
可以看出,星形模式的維度建模由一個事實表和一組維表成,且具有以下特點:
- 維表只和事實表關(guān)聯(lián),維表之間沒有關(guān)聯(lián);
- 每個維表的主碼為單列,且該主碼放置在事實表中,作為兩邊連接的外碼;
- 以事實表為核心,維表圍繞核心呈星形分布;
2.雪花模式
雪花模式(Snowflake Schema)是對星形模式的擴展,每個維表可繼續(xù)向外連接多個子維表。下圖為使用雪花模式進行維度建模的關(guān)系結(jié)構(gòu):
星形模式中的維表相對雪花模式來說要大,而且不滿足規(guī)范化設(shè)計。雪花模型相當(dāng)于將星形模式的大維表拆分成小維表,滿足了規(guī)范化設(shè)計。然而這種模式在實際應(yīng)用中很少見,因為這樣做會導(dǎo)致開發(fā)難度增大,而數(shù)據(jù)冗余問題在數(shù)據(jù)倉庫里并不嚴重。
3.星座模式
星座模式(Fact Constellations Schema)也是星型模式的擴展。基于這種思想就有了星座模式:
前面介紹的兩種維度建模方法都是多維表對應(yīng)單事實表,但在很多時候維度空間內(nèi)的事實表不止一個,而一個維表也可能被多個事實表用到。在業(yè)務(wù)發(fā)展后期,絕大部分維度建模都采用的是星座模式。