数据仓库设计方案(转载)
數(shù)據(jù)倉庫設(shè)計(jì)方案
一.概述
?數(shù)據(jù)倉庫的特征在于面向主題、集成性、穩(wěn)定性和時(shí)變性,用于支持管理決策。數(shù)據(jù)倉庫的存在的意義在于對(duì)企業(yè)的所有數(shù)據(jù)進(jìn)行匯總,為企業(yè)各個(gè)部門提供統(tǒng)一的、規(guī)范的數(shù)據(jù)出口。數(shù)據(jù)倉庫在構(gòu)建過程中通常都需要進(jìn)行分層處理。業(yè)務(wù)不同,分層的技術(shù)處理手段也不同。數(shù)倉分層的主要原因:
- 清晰數(shù)據(jù)結(jié)構(gòu)
?每一個(gè)數(shù)據(jù)分層都有它的作用域,這樣在使用表的時(shí)候能更方便的定位和理解。 - 數(shù)據(jù)血緣追蹤
?由于最終給業(yè)務(wù)呈現(xiàn)的是一個(gè)能直接使用的業(yè)務(wù)表,但是表的數(shù)據(jù)來源有很多,如果有一張來源表出問題了,我們希望能夠快速準(zhǔn)確的定位到問題,并清楚他的危害范圍。 - 減少重復(fù)開發(fā)
?規(guī)范數(shù)據(jù)分層,開發(fā)一些通用的中間層數(shù)據(jù),能夠減少極大的重復(fù)計(jì)算。 - 復(fù)雜問題簡單化
?將一個(gè)復(fù)雜的任務(wù)分解成多個(gè)步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便于維護(hù)數(shù)據(jù)的準(zhǔn)確性,當(dāng)數(shù)據(jù)出現(xiàn)問題之后,可以不用修復(fù)所有的數(shù)據(jù),只需要從有問題的步驟開始修復(fù)。
二.數(shù)據(jù)倉庫分層設(shè)計(jì)
?常見的數(shù)據(jù)倉庫分為ODS操作數(shù)據(jù)存儲(chǔ)層、DW數(shù)據(jù)倉庫層和DM數(shù)據(jù)集市層三層,其中DW層又分為DWD層和DWS層。數(shù)據(jù)倉庫分層結(jié)構(gòu)見下圖:
2.1 ODS層(進(jìn)行集群化)
?ODS層中的數(shù)據(jù)全部來自于業(yè)務(wù)數(shù)據(jù)庫,ODS層的表格也業(yè)務(wù)數(shù)據(jù)庫中的表格一一對(duì)應(yīng),就是將業(yè)務(wù)數(shù)據(jù)庫中的表格在數(shù)據(jù)倉庫的底層重新建立一次,數(shù)據(jù)與結(jié)構(gòu)完全一致。
?由于業(yè)務(wù)數(shù)據(jù)庫(OLTP)基本按照ER實(shí)體模型建模,因此ODS層中的建模方式也是ER實(shí)體模型。
2.2 DW層
?DWD層要做的就是將數(shù)據(jù)清理、整合、規(guī)范化、臟數(shù)據(jù)、垃圾數(shù)據(jù)、規(guī)范不一致的、狀態(tài)定義不一致的、命名不規(guī)范的數(shù)據(jù)都會(huì)被處理。DWD層應(yīng)該是覆蓋所有系統(tǒng)的、完整的、干凈的、具有一致性的數(shù)據(jù)層。在DWD層會(huì)根據(jù)維度模型,設(shè)計(jì)事實(shí)表和維度表,也就是說DWD層是一個(gè)非常規(guī)范的、高質(zhì)量的、可信的數(shù)據(jù)明細(xì)層。
?DWS層為公共匯總層,會(huì)進(jìn)行輕度匯總,粒度比明細(xì)數(shù)據(jù)稍粗,基于DWD層上的基礎(chǔ)數(shù)據(jù),整合匯總成分析某一個(gè)主題域的服務(wù)數(shù)據(jù),一般是寬表。DWS層應(yīng)覆蓋80%的應(yīng)用場景。
2.3 DM層
?DM層為數(shù)據(jù)集市層,面向特定主題。在DM層完成報(bào)表或者指標(biāo)的統(tǒng)計(jì),DM層已經(jīng)不包含明細(xì)數(shù)據(jù),是粗粒度的匯總數(shù)據(jù)。DM層是針對(duì)某一個(gè)業(yè)務(wù)領(lǐng)域建立模型,具體用戶(一般為決策層)查看DM層生成的報(bào)表。
三.維度模型
?維度建模的理論由 Ralph Kimball 提出,他提出將數(shù)據(jù)倉庫中的表劃分為事實(shí)表和維度表兩種類型。維度建模源自數(shù)據(jù)集市,主要面向分析場景。維度建模是面向分析場景而生,針對(duì)分析場景構(gòu)建數(shù)倉模型;重點(diǎn)關(guān)注快速、靈活的解決分析需求,同時(shí)能夠提供大規(guī)模數(shù)據(jù)的快速響應(yīng)性能。針對(duì)性強(qiáng),主要應(yīng)用于數(shù)據(jù)倉庫構(gòu)建和OLAP引擎底層數(shù)據(jù)模型。
?“事實(shí)表”,用來存儲(chǔ)事實(shí)的度量(measure)及指向各個(gè)維的外鍵值。“維度表”, 用來保存該維的元數(shù)據(jù),即維的描述信息,包括維的層次及成員類別等。
?簡單的說,維度表就是你觀察該事物的角度(維度),事實(shí)表就是你要關(guān)注的內(nèi)容。例如用戶使用滴滴打車,那么打車這件事就可以轉(zhuǎn)化為一個(gè)事實(shí)表,即打車訂單事實(shí)表,然后用戶對(duì)應(yīng)一張用戶維度表,司機(jī)對(duì)應(yīng)一張司機(jī)維度表。
3.1 事實(shí)表
?在現(xiàn)實(shí)世界中,每一個(gè)操作型事件,基本都是發(fā)生在實(shí)體之間的,伴隨著這種操作事件的發(fā)生,會(huì)產(chǎn)生可度量的值,而這個(gè)過程就產(chǎn)生了一個(gè)事實(shí)表,存儲(chǔ)了每一個(gè)可度量的事件。
?發(fā)生在現(xiàn)實(shí)世界中的操作性事件所產(chǎn)生的可度量數(shù)值,存儲(chǔ)在事實(shí)表中。從最低的粒度級(jí)別來看,事實(shí)表行對(duì)應(yīng)一個(gè)度量事件,反之亦然。因此,事實(shí)表的設(shè)計(jì)完全依賴于物理活動(dòng),不受可能產(chǎn)生的最終報(bào)表的影響。除數(shù)字度量外,事實(shí)表總是包含外鍵,用于關(guān)聯(lián)與之相關(guān)的維度,也包含可選的退化維度鍵和日期/時(shí)間戳。查詢請(qǐng)求的主要目標(biāo)是基于事實(shí)表展開計(jì)算和聚集操作。
?事實(shí)表往往包含三個(gè)重要元素(一般沒有主鍵):
- 維度表外鍵
- 度量數(shù)據(jù)
- 事件描述信息
?例如在電商場景中的一次購買事件,涉及主體包括客戶、商品、商家,產(chǎn)生的可度量值包括商品數(shù)量、金額、件數(shù)等。
3.2 維度表
?每個(gè)維度表都包含單一的主鍵列。維度表的主鍵可以作為與之關(guān)聯(lián)的任何事實(shí)表的外鍵,當(dāng)然,維度表行的描述環(huán)境應(yīng)與事實(shí)表行完全對(duì)應(yīng)。維度表通常比較寬,是扁平型非規(guī)范表,包含大量的低粒度的文本屬性。
?比如商品,單一主鍵為商品ID,屬性包括產(chǎn)地、顏色、材質(zhì)、尺寸、單價(jià)等,但并非屬性一定是文本,比如單價(jià)、尺寸,均為數(shù)值型描述性的,日常主要的維度抽象包括:時(shí)間維度表、地理區(qū)域維度表等。
綜上所述,如果針對(duì)用戶的下單行為(單一商品)進(jìn)行維度建模,可以得到如下模型:
?
四.數(shù)據(jù)倉庫規(guī)范
4.1 表名命名規(guī)范
?為了讓數(shù)據(jù)所有相關(guān)方對(duì)于表包含的信息有一個(gè)共同的認(rèn)知。比如說屬于哪一層(ODS、DW明細(xì)、DW匯總、DM)?哪個(gè)業(yè)務(wù)/部門?哪個(gè)維度(用戶、車機(jī)設(shè)備)?哪個(gè)時(shí)間跨度(天、月、年、實(shí)時(shí))?增量還是全量?
命名格式:層次_業(yè)務(wù)/部門_修飾/描述_范圍/周期
數(shù)據(jù)倉庫中表格的命名規(guī)范如下表所示:
| 數(shù)倉層次 | 周期/數(shù)據(jù)范圍 | ||
| 公用維度 | dim | 日快照 | d |
| DM層 | dm | 增量 | i |
| ODS層 | ods | 周 | w |
| DWD層 | dwd | 拉鏈表 | l |
| DWS層 | dws | 非分區(qū)全量表 | a |
總結(jié)
以上是生活随笔為你收集整理的数据仓库设计方案(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cf混沌之翼有什么用 为什么还有人玩穿越
- 下一篇: unreported exception