深入解析數(shù)倉(cāng)維度建模中的維度
如果你是剛接觸維度建模,可能對(duì)于維度的印象是不變化的或者變化緩慢,且具有相同屬性的集合體,例如日期維。但是在真實(shí)的應(yīng)用場(chǎng)景中維度可能有十幾種之多,例如從維度使用的特點(diǎn)來(lái)看可以分為緩慢變化維度、角色維度、微型維度、縮小維度、雜項(xiàng)維度、支架維度等、橋接維度;從維度的處理方式可以分為快照維度表、拉鏈維度表等;從維度的數(shù)據(jù)特點(diǎn)可以分為遞歸層次、多值屬性、多值維度等。這些維度的類型以及方法可以提供相應(yīng)的工具幫助處理真實(shí)的業(yè)務(wù)場(chǎng)景中。利用這些維度可以更好地平衡模型設(shè)計(jì)以及業(yè)務(wù)需求,同時(shí)具備一定的可拓展性以及可維護(hù)性等。
角色維
如果將維度想象成一把直尺,直尺上不同的刻度代表一個(gè)維度表上的不同的列。那么在幾何課上將直尺用來(lái)測(cè)量距離,在閱讀時(shí)用直尺用作書(shū)簽,夾在書(shū)中,這個(gè)時(shí)候直尺在不同的場(chǎng)景下有著不同的作用,這就是角色維的概念。即相同的維度表在不同的模型中起著不同的作用,一般可以用視圖實(shí)現(xiàn)。
微小維
如果直尺很長(zhǎng),但是每次測(cè)量都只用到前面的部分,那么就將直尺進(jìn)行一定程度的裁剪,將用的最多的部分獨(dú)立出來(lái),方便使用,這就是微小維的概念,即將維度的子集單獨(dú)出來(lái)進(jìn)行使用。與微小維所類似的的是微型維的概念。微型維并不是以子集拆分而是以變化程度進(jìn)行拆分的,即將維度中變化比較頻繁的維度單獨(dú)拆分出來(lái)進(jìn)行管理。因?yàn)榫S度表往往都是寬表,單獨(dú)出來(lái)的微型維度可以防止維度表的頻繁更新導(dǎo)致鎖,進(jìn)而影響使用。微小維與微型維示意圖如圖1所示。
圖片
▲圖1 微小維與微型維示意圖
支架維度
支架維度與橋接維度都可以看成維度的一種補(bǔ)充形式,前者是對(duì)于維度屬性的額外補(bǔ)充;后者是對(duì)于維度表的一種橋接關(guān)系,關(guān)聯(lián)另外的維度表。支架維度字如其名,是對(duì)于維度中屬性信息的一種補(bǔ)充,其主要是維度表中對(duì)于另外維度的引用關(guān)系。例如商品中有出廠日期屬性,但是日期屬性是屬于日期維度的信息,如圖2所示。
▲圖2 支架維度示意圖
支架維度本質(zhì)上是不同維度表的關(guān)聯(lián),但是在維度建模中維度表之間的關(guān)聯(lián)是應(yīng)該通過(guò)事實(shí)表進(jìn)行的。
橋接維度
對(duì)于橋接維度可能就更加好理解了,就是兩個(gè)維度表之間通過(guò)第三張維度表進(jìn)行關(guān)聯(lián),其中存儲(chǔ)另外兩個(gè)維度表的關(guān)系。如圖9-6所示,維度表A與維度表B之間某個(gè)字段的屬性存在多對(duì)多關(guān)系,基于這種多對(duì)多關(guān)系設(shè)計(jì)維度表C,用來(lái)存儲(chǔ)這兩個(gè)屬性的關(guān)系。例如代理商與客戶之間,一個(gè)代理商可以代理多個(gè)客戶,同時(shí)一個(gè)客戶也可以隸屬于多個(gè)代理商,那么維度表C則就是代理商與客戶的映射關(guān)系。當(dāng)然依然還是按照維度建模的理論,維度之間的關(guān)系應(yīng)該通過(guò)事實(shí)表去體現(xiàn),如果你清楚這樣做帶來(lái)的好處以及壞處,那么依然可以采用這種方式去構(gòu)建你的維度。橋接維如圖9-5所示。
圖片
▲圖3 橋接維示意圖
這樣通過(guò)支架維度、橋接維度我們可以解決維度中出現(xiàn)多值、多屬性的問(wèn)題。然而對(duì)于某些零散的維度,每個(gè)維度屬性值都比較少,例如不同渠道的付款的方式:渠道粗略的看只有線上以及線下;付款方式的只有現(xiàn)金、信用卡、網(wǎng)絡(luò)支付。將這2個(gè)屬性進(jìn)行笛卡爾組合之后,過(guò)濾掉不合理的場(chǎng)景,就完成了簡(jiǎn)單的雜項(xiàng)維的構(gòu)建,如表1所示。
表1 雜項(xiàng)維度
代理鍵 | 渠道 | 付款方式 |
1 | 線上 | 網(wǎng)絡(luò)支付 |
2 | 線下 | 現(xiàn)金 |
3 | 線下 | 信用卡 |
此外對(duì)于很多維度是有層級(jí)結(jié)構(gòu)的,例如省份、城市或者母公司、子公司等。這種層次結(jié)構(gòu)的維度對(duì)于應(yīng)用使用并不友好,故往往采用扁平化的方式進(jìn)行處理方便應(yīng)用使用。但是這種處理需要根據(jù)具體的應(yīng)用特點(diǎn),例如對(duì)于省份城市可能直接進(jìn)行平鋪展示,而對(duì)于某些場(chǎng)景會(huì)處理上一級(jí)公司或者下一級(jí)公司進(jìn)行展示,如表2所示。
表2 平鋪處理層次維度
代理鍵 | 國(guó)家 | 省份 | 城市 | 區(qū) |
1 | 中國(guó) | 江蘇 | 蘇州 | 開(kāi)發(fā)區(qū) |
2 | 中國(guó) | 上海 | 上海 | 閔行區(qū) |
當(dāng)然也有利用上下級(jí)別引用來(lái)進(jìn)行展示的維度信息,如表3所示。
表3 利用上下級(jí)別引用處理的層次維度
代理鍵 | 代理商 | 下一級(jí)代理商 | 上一級(jí)代理商 |
1 | A | C | B |
2 | B | E | D |
說(shuō)到這里一些常見(jiàn)的維度處理方式基本上就告一段落了,但是在維度的世界中,維度并不是一成不變的,恰恰相反,很多維度會(huì)隨著時(shí)間變化而進(jìn)行緩慢的變化,例如用戶年齡每一年都要變化。同時(shí)一些業(yè)務(wù)的變化必然也會(huì)導(dǎo)致維度發(fā)生變化,例如公司部門或者產(chǎn)品屬性的調(diào)整都會(huì)導(dǎo)致此類的場(chǎng)景,因?yàn)檫@就引出來(lái)維度中非常重要的概念,緩慢變化維度。
那么關(guān)于緩慢變化維度在《企業(yè)級(jí)數(shù)據(jù)架構(gòu)》一書(shū)中尋找吧。
關(guān)于作者:
李楊,資深數(shù)據(jù)架構(gòu)師,在數(shù)據(jù)相關(guān)領(lǐng)域有10年以上工作經(jīng)驗(yàn)。頭部保險(xiǎn)資管公司科技平臺(tái)交易系統(tǒng)團(tuán)隊(duì)開(kāi)發(fā)組負(fù)責(zé)人,負(fù)責(zé)多個(gè)應(yīng)用以及數(shù)據(jù)平臺(tái)的建設(shè)、優(yōu)化以及遷移工作。曾擔(dān)任某數(shù)據(jù)公司技術(shù)合伙人,負(fù)責(zé)多個(gè)金融機(jī)構(gòu)的數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)平臺(tái)相關(guān)的工作?!镀髽I(yè)級(jí)數(shù)據(jù)架構(gòu):核心要素、架構(gòu)模型、數(shù)據(jù)管理與平臺(tái)搭建》作者。
本文摘編于《企業(yè)級(jí)數(shù)據(jù)架構(gòu):核心要素、架構(gòu)模型、數(shù)據(jù)管理與平臺(tái)搭建》(書(shū)號(hào):9787111746829),經(jīng)出版方授權(quán)發(fā)布,轉(zhuǎn)載請(qǐng)標(biāo)明文章出處。






























