????????數(shù)據(jù)倉庫作為全行或全公司的數(shù)據(jù)中心和總線,匯集了全行各系統(tǒng)以及外部數(shù)據(jù),通過良好的系統(tǒng)架構(gòu)可以保證系統(tǒng)穩(wěn)定性和處理高效性,那如何保障系統(tǒng)數(shù)據(jù)的完備性、規(guī)范性和統(tǒng)一性呢?這里就需要有良好的數(shù)據(jù)分區(qū)和數(shù)據(jù)模型,那數(shù)據(jù)分區(qū)在第三部分?jǐn)?shù)據(jù)架構(gòu)中已經(jīng)介紹,本節(jié)將介紹如何進(jìn)行數(shù)據(jù)模型的設(shè)計(jì)。
1、各數(shù)據(jù)分區(qū)的模型設(shè)計(jì)思路:
?????? 數(shù)據(jù)架構(gòu)部分中提到了在數(shù)據(jù)倉庫中主要分為以下區(qū)域,那各數(shù)據(jù)區(qū)域的主要設(shè)計(jì)原則如下:

???????(1)主數(shù)據(jù)區(qū):主數(shù)據(jù)區(qū)是全行最全的基礎(chǔ)數(shù)據(jù)區(qū),保留歷史并作為整個(gè)數(shù)據(jù)倉庫的數(shù)據(jù)主存儲(chǔ)區(qū),后續(xù)的數(shù)據(jù)都可以從主數(shù)據(jù)區(qū)數(shù)據(jù)加工獲得,因此主數(shù)據(jù)區(qū)的數(shù)據(jù)天然就要保留所有歷史數(shù)據(jù)軌跡。
? ? ? ? 1) 近源模型區(qū):主要是將所有入數(shù)據(jù)倉庫的數(shù)據(jù)表按歷史拉鏈表或事件表(APPEND算法)的方式保留所有歷史數(shù)據(jù),因此模型設(shè)計(jì)較簡單,只需要基于源系統(tǒng)表結(jié)構(gòu),對(duì)字段進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化后,增加保留歷史數(shù)據(jù)算法所需要的日期字段即可。
? ? ? ? 2)整合模型區(qū):該模型區(qū)域按主題方式對(duì)數(shù)據(jù)進(jìn)行建模,需要對(duì)源系統(tǒng)表字段按主題分類劃分到不同的主題區(qū)域中,并主要按3范式的方式設(shè)計(jì)表結(jié)構(gòu),通過主題模型的設(shè)計(jì)并匯總各系統(tǒng)數(shù)據(jù),可以從全行及集團(tuán)角度進(jìn)行客戶、產(chǎn)品、協(xié)議(賬戶、合同)分析,獲得統(tǒng)一視圖。比如說,全行有多少客戶、有多少產(chǎn)品?通過主題模型事先良好的設(shè)計(jì)和梳理,可以很快獲得相關(guān)統(tǒng)計(jì)數(shù)據(jù)。
?????? 主數(shù)據(jù)區(qū)的模型設(shè)計(jì)按頂層設(shè)計(jì)(自上而下)為主,兼顧應(yīng)用需求(自下而上)的方式,即需要有全局視角,也要滿足應(yīng)用需求。那頂層設(shè)計(jì)主要是需要從全行數(shù)據(jù)角度對(duì)源系統(tǒng)的主要業(yè)務(wù)數(shù)據(jù)進(jìn)行入倉,獲得全行客戶、業(yè)務(wù)數(shù)據(jù)的整體視角,同時(shí)又保存所有交易明細(xì)數(shù)據(jù),滿足后續(xù)的數(shù)據(jù)分析需求;應(yīng)用需求指源系統(tǒng)數(shù)據(jù)的入倉也需要考慮當(dāng)前集市、數(shù)據(jù)應(yīng)用系統(tǒng)的數(shù)據(jù)需求,因?yàn)閿?shù)據(jù)需求是千變?nèi)f化的,但是只要保留全面的基礎(chǔ)的業(yè)務(wù)數(shù)據(jù),就有了加工的基礎(chǔ),當(dāng)前的數(shù)據(jù)需求只是考慮的一部分,更多的需要根據(jù)業(yè)務(wù)經(jīng)驗(yàn)以及主題模型進(jìn)行數(shù)據(jù)入倉和模型設(shè)計(jì)。
????????主數(shù)據(jù)模型的設(shè)計(jì)主要自上而下,近源模型層雖然比較簡單,但設(shè)計(jì)步驟和整合模型類型,分為以下幾個(gè)步驟:

? ?????步驟1:系統(tǒng)信息調(diào)研,篩選入倉的系統(tǒng)并深入了解業(yè)務(wù)數(shù)據(jù);
? ?????步驟2:對(duì)入倉系統(tǒng)進(jìn)行表級(jí)篩選和字段篩選,并將字段進(jìn)行初步映射;
? ????? 步驟3:根據(jù)入倉字段按一定規(guī)范設(shè)計(jì)邏輯模型;
? ?????步驟4:對(duì)邏輯模型進(jìn)行物理化;
?????? (2)集市區(qū):集市區(qū)的設(shè)計(jì)表結(jié)構(gòu)設(shè)計(jì)主要按維度模型(雪花模型、星形模型)進(jìn)行設(shè)計(jì),主要是為了方便應(yīng)用分析,滿足數(shù)據(jù)應(yīng)用需求,集市區(qū)一般以切片的形式保留結(jié)果歷史數(shù)據(jù),但保留期限不會(huì)太長,比如只保留月末數(shù)據(jù)以及當(dāng)前月份的每日切片數(shù)據(jù)。
?????? 數(shù)據(jù)集市需要從數(shù)據(jù)倉庫獲得基礎(chǔ)數(shù)據(jù),對(duì)于倉內(nèi)集市,可以直接訪問或通過視圖訪問,減少數(shù)據(jù)存儲(chǔ),倉外集市則需要從數(shù)據(jù)倉庫獲得批量數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù)進(jìn)行存儲(chǔ)加工。因此倉外集市還需要設(shè)計(jì)基礎(chǔ)數(shù)據(jù)的保留策略。
??????集市區(qū)的設(shè)計(jì)步驟如下:

? ? ? ?(3)接口區(qū):接口區(qū)的設(shè)計(jì)完全根據(jù)數(shù)據(jù)應(yīng)用系統(tǒng)的接口方式來進(jìn)行,一般也是維度模型(事實(shí)表+維度表)方式,接口區(qū)之前也提到過,不做復(fù)雜計(jì)算,只做簡單關(guān)聯(lián),可以將復(fù)雜計(jì)算放到集市或指標(biāo)匯總層加工。
????????(4)指標(biāo)匯總區(qū):作為集市接口區(qū)和主數(shù)據(jù)區(qū)的中間層,主要是提供基于各集市和接口數(shù)據(jù)的共性需求,基于主模型區(qū)數(shù)據(jù)進(jìn)行統(tǒng)一加工。即面向所有的應(yīng)用需求來設(shè)計(jì),那中間層一般采用維度模型,按從細(xì)粒度到粗粒度的方式逐步匯總。由于各數(shù)據(jù)應(yīng)用及集市的需求不斷變化,指標(biāo)匯總區(qū)也是不斷進(jìn)行完善,許多一開始在集市的加工由于其它集市或應(yīng)用也需要,則會(huì)從集市轉(zhuǎn)移到指標(biāo)匯總層。常見的數(shù)據(jù)就是客戶、賬戶、合同等常用的數(shù)據(jù)實(shí)體的寬表(事實(shí)表),統(tǒng)一進(jìn)行匯總后供各數(shù)據(jù)應(yīng)用使用。
????????另外指標(biāo)匯總層也包括共性指標(biāo)的加工,指標(biāo)可以通過基礎(chǔ)指標(biāo)配置指標(biāo)計(jì)算加工方式獲得衍生指標(biāo),那這些基礎(chǔ)指標(biāo)和衍生指標(biāo)的定義、口徑以及加工方式可以由指標(biāo)管理系統(tǒng)來維護(hù)并集成到數(shù)據(jù)標(biāo)準(zhǔn)系統(tǒng)和元數(shù)據(jù)管理系統(tǒng)中。
????????指標(biāo)匯總區(qū)設(shè)計(jì)步驟如下:

????????(5)非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)區(qū):非結(jié)構(gòu)化存儲(chǔ)區(qū)的設(shè)計(jì)不僅需要考慮非結(jié)構(gòu)化數(shù)據(jù)本身的存儲(chǔ),同時(shí)需要考慮非結(jié)構(gòu)化數(shù)據(jù)所帶有的結(jié)構(gòu)化屬性,因此在設(shè)計(jì)時(shí)主要考慮以下幾點(diǎn):
?????????1)存儲(chǔ)路徑規(guī)劃:是需要將非結(jié)構(gòu)化數(shù)據(jù)按源系統(tǒng)、類型、日期、外部來源等角度進(jìn)行存儲(chǔ)路徑的規(guī)劃,分門別類,便于管理。
?????????2)對(duì)非結(jié)構(gòu)化數(shù)據(jù)的元數(shù)據(jù)建立索引:比如對(duì)于憑證的影像,需要有賬戶、流水號(hào)、客戶名等相關(guān)結(jié)構(gòu)化數(shù)據(jù),以便完整描述影像圖片的來源,通過對(duì)這些結(jié)構(gòu)化數(shù)據(jù)建立索引,方便查找。
?????????3)對(duì)部分文檔內(nèi)容建立索引:對(duì)于部分文檔如合同電子版、紅頭文件PDF需要建立內(nèi)容索引,以便快速搜索查找文件內(nèi)容,一般可用支持HADOOP的ElasticSearch來實(shí)現(xiàn)。
?????????4)設(shè)立計(jì)算區(qū)和結(jié)果區(qū):由于非結(jié)構(gòu)化數(shù)據(jù)往往需要使用MAPREDUCE或程序化語言進(jìn)行處理,也會(huì)產(chǎn)生中間臨時(shí)文件和結(jié)果數(shù)據(jù),因此需要規(guī)劃計(jì)算區(qū)和結(jié)果區(qū)來存放這些數(shù)據(jù)。
????????(6)歷史數(shù)據(jù)存儲(chǔ)區(qū):歷史數(shù)據(jù)區(qū)作為歷史數(shù)據(jù)的歸檔,即包括結(jié)構(gòu)化數(shù)據(jù),也包括非結(jié)構(gòu)化數(shù)據(jù),對(duì)于歷史數(shù)據(jù)除了存儲(chǔ)也需要方便查找,歷史數(shù)據(jù)區(qū)的規(guī)劃設(shè)計(jì)需要考慮非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)區(qū)的存儲(chǔ)、索引設(shè)計(jì)外,還需要考慮以下幾點(diǎn):
????????1)壓縮,由于歷史數(shù)據(jù)使用頻率低,可以選擇壓縮率較高的算法,降低存儲(chǔ)空間。
?????????2)容量規(guī)劃:由于歷史數(shù)據(jù)歸檔會(huì)越來越大,因此需要提前進(jìn)行容量規(guī)劃以及歷史數(shù)據(jù)清理。比如10年以上的數(shù)據(jù)進(jìn)行刪除。
?????????3)可設(shè)計(jì)一個(gè)管理系統(tǒng)對(duì)歷史數(shù)據(jù)進(jìn)行歸檔、查找以及管理。
????????(7)實(shí)時(shí)數(shù)據(jù)區(qū):實(shí)時(shí)數(shù)據(jù)區(qū)需要使用部分批量數(shù)據(jù)來和實(shí)時(shí)流數(shù)據(jù)進(jìn)行關(guān)聯(lián)加工,因此可從主數(shù)據(jù)區(qū)獲得所需要的數(shù)據(jù)后進(jìn)行存放在實(shí)時(shí)數(shù)據(jù)區(qū)的關(guān)聯(lián)數(shù)據(jù)區(qū),同時(shí)對(duì)于加工結(jié)果不僅可以推送到KAFKA等消息中間件,同時(shí)也可輸出到實(shí)時(shí)數(shù)據(jù)區(qū)的結(jié)果區(qū)進(jìn)行保留。
????????(8)在線查詢區(qū):在線查詢區(qū)主要在線提供計(jì)算結(jié)果查詢,常用HBASE來實(shí)現(xiàn),設(shè)計(jì)按照接口來分別存放到不同的HBASE表,字段內(nèi)容也主要是接口字段內(nèi)容。HBASE表可以根據(jù)應(yīng)用或者接口類型進(jìn)行分目錄和分用戶。由于在線查詢區(qū)和實(shí)時(shí)數(shù)據(jù)區(qū)考慮到作業(yè)的保障級(jí)別以及資源競爭,往往會(huì)單獨(dú)建立一套集群,與批量作業(yè)集群進(jìn)行隔離,在線查詢的結(jié)果計(jì)算可以在批量集群計(jì)算后加載到在線查詢區(qū)。
? ? ???后續(xù)將分別對(duì)主數(shù)據(jù)區(qū)、集市及匯總指標(biāo)層模型設(shè)計(jì)進(jìn)行介紹,敬請(qǐng)關(guān)注。