A. 數據建模方法論
數據倉庫模型設計遵循“自頂向下、逐步求精”的設計原則。
模型設計分為三個(gè)階段:
1,概念模型
對業(yè)務(wù)的范圍和使用,從高度上進(jìn)行抽象概括,也就是劃分主題域。
一般劃分為8個(gè)主題域:
客戶(hù)、服務(wù)、服務(wù)使用、賬務(wù)、結算、資源、客服、營(yíng)銷(xiāo)
為什么要劃分主題域?
劃分主題域,是根據業(yè)務(wù)的應用和需要來(lái)劃分的,是用來(lái)達到數據與業(yè)務(wù)緊耦合的目的
2,邏輯模型
對概念模型中的主題進(jìn)行細化,定義實(shí)體與實(shí)體之間的關(guān)系,和實(shí)體的屬性。
即定義具體表的作用,表與表的約束,表的字段。形成ER圖。
這些實(shí)體的設計都是基于業(yè)務(wù)規則,可以說(shuō),這一階段主要面對的是業(yè)務(wù)。也就是“業(yè)務(wù)驅動(dòng)建模”
3,物理模型
依照邏輯模型,在數據庫中進(jìn)行建表、索引等。數據倉庫,為了滿(mǎn)足高性能的需求,可以增加冗余、隱藏表之間的約束等反第三范式操作。
這一階段,主要針對的是數據庫、硬件、性能。
范式:
第一范式:數據庫表的字段都是單一屬性,不可再分。
第二范式:數據庫表中不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的部分函數依賴(lài)。
(部分函數依賴(lài)指的是存在組合關(guān)鍵字中的某些字段決定非關(guān)鍵字段的情況)。即要求所有屬性都依賴(lài)于主鍵。
第三范式:數據庫表中不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的傳遞函數依賴(lài)。
范式是向下兼容的。
例如:
學(xué)生ID | 學(xué)生名稱(chēng) | 學(xué)生部門(mén) | 課程ID | 課程名稱(chēng) | 成績(jì) |
60100 | 張三 | 教育學(xué)院,心理系,1班 | English_1 | 英語(yǔ)1 | 80 |
1)違反第一范式。因為:學(xué)生部門(mén)可以分解為:學(xué)院,系,班級
2)違反第二范式。因為:關(guān)鍵字段是學(xué)生ID和課程ID, 但存在“課程ID”決定課程名稱(chēng)和課程學(xué)分。
3)違反第三范式。因為:關(guān)鍵字段是學(xué)生ID,但存在可能名稱(chēng)和學(xué)分依賴(lài)“課程ID”。
星型模型和雪花模型
首先,他們都是由一個(gè)事實(shí)表和一組維度表組成。
星型模型,也被稱(chēng)為維度建模。
區別在于:
星型模型:維度表直接跟事實(shí)表連接,圖型像星星。
如區縣和地市做為同一維度都在地市表中。
*維度預處理,維度會(huì )預先進(jìn)行分類(lèi),排序等預處理。
雪花模型:一些維度表不是直接與事實(shí)表連接,而是通過(guò)維度表中轉,圖形像雪花。
例如:
圖1:星型模型
圖2 雪花模型
從性能來(lái)看,星型模型查詢(xún)性能好。
為了提高性能,可以允許違反第三范式,適當的冗余、隱藏表之間的約束
維度建模
將商業(yè)維度融合到數據模型中,由此得名維度建模。
或者說(shuō),為了分析方便(商業(yè)應用要求),將同一維度的不同層次的維度(如地市ID,區縣ID)都融合到事實(shí)表中(如用戶(hù)寬表)。
維度模型也是星型模型。
它 強調的是先對維度進(jìn)行預處理,將多個(gè)維度集合到一個(gè)事實(shí)表,形成一個(gè)寬表,如上面的用戶(hù)統一視圖。包含了20多個(gè)維度。這樣可以組合各維度,形成靈活的報表查詢(xún)
電信行業(yè)的數據倉庫都采用了分層設計原則。
總的來(lái)說(shuō),分三層:接口層、中間匯總層和應用層。
應用層 | 數據集市 | 地市數據集市、數據挖掘 |
應用層 | KPI報表、cagnos、主題分析、指標庫 | |
中間層 | 深度匯總層 | 信息聚合:用戶(hù)統一視圖、3G用戶(hù)統一視圖、固話(huà)用戶(hù)統一視圖 |
業(yè)務(wù)拓展:用戶(hù)行為、增值業(yè)務(wù)、集團業(yè)務(wù)、國際業(yè)務(wù) | ||
輕度匯總層 | 清單匯總、用戶(hù)屬性聚合、費用匯總、集團客戶(hù)匯總等 | |
接口層 | 存儲層 | 接口備份、增量轉全量、減少I(mǎi)/O(分常用數據和歷史數據) |
接口層 | 日接口、月接口、增量接口、全量接口 |
特別強調的是:
中間層是數據倉庫最重要的一層。直接決定了數據倉庫的性能。
一般的做法是:
1)數據匯總。將底層數據按維度進(jìn)行小顆粒度匯總
2)信息聚合。將多張表的信息聚合在一個(gè)表中。這樣的好處,是避免使用表關(guān)聯(lián),提高查詢(xún)性能。
如果說(shuō)分層設計,是橫向的設計原則,那么主題分域是縱向的處理方法。
具體做法就是從業(yè)務(wù)上,高度的抽象和歸納,將數據劃分為不同的主題域。
分域后的好處:業(yè)務(wù)緊耦合、便于數據拓展、便于使用。
域是要具有明顯的表命名規則,如:
用戶(hù)信息域—— user
通信行為—— call
數據業(yè)務(wù)—— gprs
賬務(wù) —— bill
客戶(hù)服務(wù)—— serv
xx經(jīng)分系統的數據架構圖:
聯(lián)系客服