數(shù)字化轉(zhuǎn)型|數(shù)據(jù)建模類型和流程
大數(shù)據(jù)時代,維度建模已成為各大廠的主流方式。維度建模從分析決策的需求出發(fā)構(gòu)建模型,為分析需求服務(wù)。重點關(guān)注用戶如何快速的完成數(shù)據(jù)分析,可以直觀的反應(yīng)業(yè)務(wù)模型中的業(yè)務(wù)問題,需要大量的數(shù)據(jù)預(yù)處理、數(shù)據(jù)冗余,有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能。
要討論數(shù)據(jù)建模,我們首先要搞清楚“數(shù)據(jù)建?!笔鞘裁?,以及數(shù)據(jù)建模的目標(biāo)是什么。在大數(shù)據(jù)時代,數(shù)據(jù)不僅僅包括數(shù)據(jù)表,因此,我們用一個內(nèi)涵更加廣泛的詞“數(shù)據(jù)集合”來替代“一系列的表”這個說法。那么數(shù)據(jù)建模是如何去滿足要求的呢?是通過抽象出良好的結(jié)構(gòu),來實現(xiàn)的。
數(shù)據(jù)建模是一個用于定義和分析在組織的信息系統(tǒng)范圍內(nèi)支持商業(yè)流程所需的數(shù)據(jù)要求的過程。簡單來說,數(shù)據(jù)建模是基于對業(yè)務(wù)數(shù)據(jù)的理解和數(shù)據(jù)分析的需要,將各類數(shù)據(jù)進行整合和關(guān)聯(lián),使得數(shù)據(jù)可以最終以可視化的方式呈現(xiàn),讓使用者能夠快速地、高效地獲取到數(shù)據(jù)中有價值的信息,從而做出準(zhǔn)確有效的決策。
之所以數(shù)據(jù)建模會變得復(fù)雜且難度大,是因為在建模過程中會引入數(shù)學(xué)公式或模型,用于確定數(shù)據(jù)實體之間的關(guān)聯(lián)關(guān)系。不同的業(yè)務(wù)邏輯和商業(yè)需求需要選擇不同的數(shù)學(xué)公式或模型,而且,一個好的數(shù)據(jù)模型需要通過多次的測試和優(yōu)化迭代來完成,這就使得數(shù)據(jù)建模的難度變得很高。但是,數(shù)據(jù)分析中的建模并沒有想象中的那么高深莫測,人人都可以做出適合自己的模型。
數(shù)據(jù)建模是一個“通過良好的結(jié)構(gòu)設(shè)計,建設(shè)滿足要求的數(shù)據(jù)集合”的過程。在建模過程中,需分析數(shù)據(jù)和數(shù)據(jù)之間的關(guān)系,對所要模型化的內(nèi)容具有清晰的認(rèn) 識。數(shù)據(jù)建模者要和各方涉眾進行交流、溝通,以便構(gòu)建的數(shù) 據(jù)模型具有較高的精確性,在所有用戶中達成共識。
1.保障數(shù)據(jù)質(zhì)量:質(zhì)量是數(shù)據(jù)的生命線,數(shù)據(jù)的質(zhì)量決定了數(shù)據(jù)的價值。具體而言數(shù)據(jù)質(zhì)量,可以概括為4類,正確性、完整性、時效性,以及一致性。
2.提升交付效率:穩(wěn)定性、適應(yīng)性、簡潔性和易用性,是影響數(shù)據(jù)研發(fā)效率的4個主要因素。
3. 降低整體成本:在確定的品質(zhì)效率下,要盡可能的降低成本,把握好存儲成本與計算成本之間的平衡。
簡而言之,數(shù)據(jù)建模的目標(biāo)是建立對于業(yè)務(wù)經(jīng)營而言“好用、高效、且經(jīng)濟”的數(shù)據(jù)資產(chǎn)。當(dāng)然,與此同時,我們還要守好底線,保證數(shù)據(jù)合規(guī)、防止數(shù)據(jù)泄露。
一、數(shù)據(jù)建模類型和流程
1.1 數(shù)據(jù)建模常見類型
概念模型的主要目標(biāo)是建立實體及其屬性和實體之間的關(guān)系,不會涉及數(shù)據(jù)庫結(jié)構(gòu)的。例如,客戶和產(chǎn)品是兩個實體,客戶的編號和名稱是它的屬性,產(chǎn)品的名稱和價格是產(chǎn)品的屬性,銷售是客戶和產(chǎn)品之間的關(guān)系。
邏輯模型將更多的信息添加到概念模型中,定義了元素的結(jié)構(gòu)并設(shè)置了元素之間的關(guān)系。邏輯數(shù)據(jù)模型具有如下特征:描述單個項目的數(shù)據(jù)需求,但可以根據(jù)項目范圍與其他邏輯數(shù)據(jù)模型集成;獨立于數(shù)據(jù)庫的設(shè)計和開發(fā);數(shù)據(jù)屬性將具有精確精度和長度的數(shù)據(jù)類型;通常將模型的標(biāo)準(zhǔn)化過程應(yīng)用到第三范式。
物理數(shù)據(jù)模型描述數(shù)據(jù)模型的數(shù)據(jù)庫實現(xiàn),提供了數(shù)據(jù)庫的抽象,包含了豐富的信息。這種類型的數(shù)據(jù)模型還有助于可視化數(shù)據(jù)庫結(jié)構(gòu)。它有助于為數(shù)據(jù)庫列建模鍵,約束,索引,觸發(fā)器和其他RDBMS功能。
1.2 數(shù)倉模型設(shè)計原則
數(shù)據(jù)倉庫要分層建設(shè),這個幾乎是毫無爭議的。但具體分為哪幾層,每一層的稱呼是什么,各家的見解略有差異。不過沒關(guān)系,最重要的是抓住本質(zhì):高內(nèi)聚、低耦合、高復(fù)用、控依賴,以下詳細(xì)闡述。
1. 高內(nèi)聚低耦合:邏輯和物理模型的記錄和字段組成方式,應(yīng)該遵循最基本的軟件設(shè)計方法論中的高內(nèi)聚低耦合的原則。
- 從業(yè)務(wù)特征而言:將業(yè)務(wù)近似或相關(guān)的數(shù)據(jù),或是粒度相同的數(shù)據(jù)設(shè)計為一個邏輯或物理模型。
- 從訪問特征而言:將高概率同時訪問的數(shù)據(jù)放一起,將低概率同時訪問的數(shù)據(jù)分開存儲。
2. MECE原則:數(shù)據(jù)域劃分統(tǒng)一標(biāo)準(zhǔn),盡可能遵照MECE原則,不重不漏。數(shù)據(jù)域之間的邊界劃分的越清晰,越能夠延緩數(shù)據(jù)模型的腐化。
3. 公共處理邏輯,下沉且保持單一:所謂下沉是指,越是底層公用的處理邏輯,越應(yīng)該在數(shù)據(jù)調(diào)度任務(wù)依賴的上游進行封裝和實現(xiàn),不可讓公共的處理邏輯暴露給應(yīng)用層實現(xiàn)。所謂保持單一是指,不可用讓公共邏輯
在多處存在,因為多處存在的邏輯,隨著時間的推演,很難保持一致性。
4. 核心模型與擴展模型分離:建立核心模型與擴展模型體系,核心模型包括的字段支持常用核心的業(yè)務(wù),擴展模型包括的字段支持個性化,或是少量應(yīng)用的需要。不可讓擴展字段過度侵入核心模型,以至于破壞核心模型的架構(gòu)簡潔性和可維護性。
5. 合理的層次依賴:各層數(shù)據(jù)空間之間,避免“反向引用”;例如DWD層應(yīng)嚴(yán)格遵守層次依賴,理論上只可以引用ODS、DIM和部分的DWD層數(shù)據(jù),不可引用處于下游層次的ADS層數(shù)據(jù)。ADS應(yīng)用層各數(shù)據(jù)集市之間,也應(yīng)該盡量避免頻繁引用,如有高頻共用的邏輯,應(yīng)該向CMD中間層(含DWD、DWS、DIM)沉淀。
6. 清晰可理解的數(shù)據(jù)表命名,遵照一致性的字段命名:表命名需要遵照OneModel數(shù)據(jù)表命名規(guī)范,表名需要對于主要消費者而言,是清晰、易于理解和易于使用的。對于核心的指標(biāo)(事實)、維度(對象),相同含義的字段,在不同表中的字段名必須保持一致,且須使用《模型命名規(guī)范》中的名稱。
1.3 數(shù)據(jù)倉庫核心架構(gòu)
數(shù)據(jù)倉庫是一個為數(shù)據(jù)分析而設(shè)計的企業(yè)級數(shù)據(jù)管理系統(tǒng)。數(shù)據(jù)倉庫可集中、整合多個信息源的大量數(shù)據(jù),借助數(shù)據(jù)倉庫的分析能力,企業(yè)可從數(shù)據(jù)中獲得寶貴的信息進而改進決策。同時,隨著時間的推移,數(shù)據(jù)倉庫中積累的大量歷史數(shù)據(jù)對于數(shù)據(jù)科學(xué)家和業(yè)務(wù)分析師也是十分寶貴的。
1.4 數(shù)據(jù)倉庫建模的意義
如果把數(shù)據(jù)看作圖書館里的書,我們希望看到它們在書架上分門別類地放置;如果把數(shù)據(jù)看作城市的建筑,我們希望城市規(guī)劃布局合理;如果把數(shù)據(jù)看作電腦文件和文件夾,我們希望按照自己的習(xí)慣有很好的文件夾組織方式,而不是糟糕混亂的桌面,經(jīng)常為找一個文件而不知所措。
數(shù)據(jù)模型就是數(shù)據(jù)組織和存儲方法,它強調(diào)從業(yè)務(wù)、數(shù)據(jù)存取和使用角度合理存儲數(shù)據(jù)。只有將數(shù)據(jù)有序的組織和存儲起來之后,數(shù)據(jù)才能得到高性能、低成本、高效率、高質(zhì)量的使用。
高性能:良好的數(shù)據(jù)模型能夠幫助我們快速查詢所需要的數(shù)據(jù)
低成本:良好的數(shù)據(jù)模型能減少重復(fù)計算,實現(xiàn)計算結(jié)果的復(fù)用,減低計算成本
高效率:良好的數(shù)據(jù)模型能極大的改善用戶使用數(shù)據(jù)的體驗,提高使用數(shù)據(jù)的效率
高質(zhì)量:良好的數(shù)據(jù)模型能改善數(shù)據(jù)統(tǒng)計口徑的混亂,減少計算錯誤的可能性
二、四種常見模型
2.1 維度模型
維度建模按數(shù)據(jù)組織類型劃分可分為星型模型、雪花模型、星座模型。
維度建模四個步驟:
選擇業(yè)務(wù)處理過程 > 定義粒度 > 選擇維度 > 確定事實
2.1.1 星型模型
星型模型主要是維表和事實表,以事實表為中心,所有維度直接關(guān)聯(lián)在事實表上,呈星型分布。
2.1.2 雪花模型
雪花模型,在星型模型的基礎(chǔ)上,維度表上又關(guān)聯(lián)了其他維度表。這種模型維護成本高,性能方面也較差,所以一般不建議使用。尤其是基于hadoop體系構(gòu)建數(shù)倉,減少join就是減少shuffle,性能差距會很大。
星型模型可以理解為,一個事實表關(guān)聯(lián)多個維度表,雪花模型可以理解為一個事實表關(guān)聯(lián)多個維度表,維度表再關(guān)聯(lián)維度表。
2.1.3 星座模型
星座模型,是對星型模型的擴展延伸,多張事實表共享維度表。
星座模型是很多數(shù)據(jù)倉庫的常態(tài),因為很多數(shù)據(jù)倉庫都是多個事實表的。所以星座模型只反映是否有多個事實表,他們之間是否共享一些維度表。
2.2 范式模型
即實體關(guān)系(ER)模型,數(shù)據(jù)倉庫之父Immon提出的,從全企業(yè)的高度設(shè)計一個3NF模型,用實體加關(guān)系描述的數(shù)據(jù)模型描述企業(yè)業(yè)務(wù)架構(gòu),在范式理論上符合3NF。此建模方法,對建模人員的能力要求非常高。
特點:設(shè)計思路自上而下,適合上游基礎(chǔ)數(shù)據(jù)存儲,同一份數(shù)據(jù)只存儲一份,沒有數(shù)據(jù)冗余,方便解耦,易維護,缺點是開發(fā)周期一般比較長,維護成本高。
2.3 Data Vault模型
DataVault由Hub(關(guān)鍵核心業(yè)務(wù)實體)、Link(關(guān)系)、Satellite(實體屬性) 三部分組成 ,是Dan Linstedt發(fā)起創(chuàng)建的一種模型方法論,它是在ER關(guān)系模型上的衍生,同時設(shè)計的出發(fā)點也是為了實現(xiàn)數(shù)據(jù)的整合,并非為數(shù)據(jù)決策分析直接使用。
2.4 Anchor模型
高度可擴展的模型,所有的擴展只是添加而不是修改,因此它將模型規(guī)范到6NF,基本變成了K-V結(jié)構(gòu)模型。企業(yè)很少使用。
三、數(shù)據(jù)模型的流程
3.1 確定實體關(guān)系
在數(shù)據(jù)庫中,管理信息系統(tǒng)為其中的基本框架,設(shè)計數(shù)據(jù)庫概念模型是構(gòu)建數(shù)據(jù)庫的關(guān)鍵所在。其中構(gòu)建實體關(guān)系是非常關(guān)鍵的一個環(huán)節(jié)。在真實的世界當(dāng)中,實體是能夠互相區(qū)分的,能夠被人類所了解與掌握的概念、事與物等。集合概念是實體的基本特征,用實體實例來闡述它的各個個體。有若干個特征存在于實體當(dāng)中,因此,可以稱它們?yōu)閷傩?。對于實體的屬性組合屬性 都能夠唯一標(biāo)識出來,也就是 PK Primary Key(主鍵),同時也有外鍵存在于實體當(dāng)中,在現(xiàn)階段的實體中,它也是屬性的一種,在其他的實體中則為主鍵。
可以通過三種方式構(gòu)建實體之間的關(guān)系:構(gòu)建一對多的關(guān)系:指的是將實體B的n個實例通過實體A的一個實例構(gòu)建出來。構(gòu)建多對多的關(guān)系:對于實體B的n個實例,能夠利用實體A的一個實例構(gòu)建起來。構(gòu)建一對一的關(guān)系:實體B的一個實例能夠通過實體A的一個實例構(gòu)建起來。
3.2 將信息用統(tǒng)主題構(gòu)建起來
這為相關(guān)行業(yè)進行信息系統(tǒng)數(shù)據(jù)建模的一個關(guān)鍵流程,利用分析信息系統(tǒng)數(shù)據(jù)建模的相關(guān)需求,將行業(yè)內(nèi)的工作主題確定出來。在相關(guān)決策的前提下,將工作人員所要傾向的主體構(gòu)建起來。此外,還應(yīng)該同行業(yè)內(nèi)的聯(lián)機系統(tǒng)進行連接,然后粗略的分析這些操作型數(shù)據(jù),進而將良好的數(shù)據(jù)基礎(chǔ)為構(gòu) 建綜合性的數(shù)據(jù)分析系統(tǒng)和信息系統(tǒng)構(gòu)建起來。
3.3 邏輯數(shù)據(jù)建模
分析系統(tǒng)的數(shù)據(jù)邏輯模型和數(shù)據(jù)綜合信息系統(tǒng)是通過數(shù)據(jù)庫將數(shù)據(jù)模型構(gòu)建起來的,因此,怎樣可以令數(shù)據(jù)倉庫更加有效的對用戶的相關(guān)需求給予滿足,是構(gòu)建數(shù)據(jù)邏輯模型的關(guān)鍵所在。用一定數(shù)量的維數(shù)據(jù)將星型模式設(shè)計出來,這樣能 將良好的查詢功能為數(shù)據(jù)倉庫提供出來。通過數(shù)據(jù)模式的外觀得出了星型模式這個概念,從屬的 表格通過星狀包圍起了這個居于中間的大表格。而且,指標(biāo)實體的度量屬性和指標(biāo)實體一同構(gòu)成了這個居于中央的大表格。
這與概念模型過程中所產(chǎn)生的度量屬性和事實實體是相 對應(yīng)的。維度實體被包含于從屬的表格中,而且,它有效的對 應(yīng)著指標(biāo)實體當(dāng)中的較多個度量屬性。同時,還有另一類實體也存在于從屬表格中,進而來有效的限制用戶的數(shù)據(jù)查詢結(jié)果,將較少的行為查詢過程中的指標(biāo)實體返回來,將產(chǎn)訊范圍進而縮小。而將實體的詳細(xì)的類別出來,是為了對用戶查詢過 程詳細(xì)信息的需求給予充分的滿足,維度實體和指標(biāo)實體的 聯(lián)系一般都是通過各個維度實體當(dāng)中最低一層的精細(xì)類別展現(xiàn)出來的,也就是說,居中表格的主鍵是從屬表格外鍵的主要來源。
3.4 選擇有效的建模工具
例如選擇ROSE,可以切實的完成相關(guān)的數(shù)據(jù)建模:
①利用分析相關(guān)的需求,將項目里面所關(guān)聯(lián)的數(shù)據(jù)實體尋找出來,將 E-R 圖在關(guān)系數(shù)據(jù)庫中構(gòu)建起來;
② 將關(guān)系與實體在相關(guān)的圖形中完成映射處理,進而將類圖在對象模型中構(gòu)建起來,并且用類的方法取締數(shù)據(jù)上的操作??墒?,將實體的對象模型如果能夠在需求分析中直接構(gòu)建起來,這樣上一步就能夠被有效的省略掉;
③用 rose 轉(zhuǎn)化功能對構(gòu) 成的對象模型進行轉(zhuǎn)化,能夠用數(shù)據(jù)模型取代象模型;
④將關(guān)系數(shù)據(jù)庫用數(shù)據(jù)模型自動轉(zhuǎn)化出來,并且,按照有關(guān)的轉(zhuǎn)換原實現(xiàn)生成過程;
⑤導(dǎo)出對象數(shù)據(jù),將代碼的框架構(gòu)造成型,然后進一步的強化和完善代碼框中的相關(guān)內(nèi)容;
⑥將相關(guān)的測試用例編寫出來,與數(shù)據(jù)庫中的一些對象及對應(yīng)類結(jié)合起來統(tǒng)一的進行測試;
⑦隨著不斷深入的項目建設(shè),也會相應(yīng)的完善和增加一些數(shù)據(jù)對象,因此,循環(huán)的迭代過程就需要被開展 =起來,進行相應(yīng)的完善和細(xì)化。經(jīng)過以上流程,能夠找出對象層里面所涵蓋的對象,并且迅速的進行編碼測試和建模。
此工作環(huán)節(jié)的目的是將相應(yīng)封裝之后的實體類獲取出來。接下來的工作是在業(yè)務(wù)需求的基礎(chǔ)上,合理的組裝實體類,進而確保能夠有效的調(diào)用界面層。
四、數(shù)據(jù)模型的評價標(biāo)準(zhǔn)
數(shù)據(jù)模型建設(shè)的怎么樣,極度依賴規(guī)范設(shè)計,如果代碼風(fēng)格是“千人千面”,那么恐怕半年下來,業(yè)務(wù)系統(tǒng)就沒法看了。沒有什么比“數(shù)據(jù)系統(tǒng)”更看重“法制”了,規(guī)范體系不僅能保障數(shù)據(jù)建設(shè)的一致性,也能夠應(yīng)對業(yè)務(wù)交接的情況,更能夠為自動化奠定基礎(chǔ)。
業(yè)務(wù)過程清晰:ODS就是原始信息,不修改;DWD面向基礎(chǔ)業(yè)務(wù)過程;DIM描述維度信息;DWS針對最小場景做指標(biāo)計算;ADS也要分層,面向跨域的建設(shè),和面向應(yīng)用的建設(shè);
指標(biāo)可理解:按照一定業(yè)務(wù)事務(wù)過程進行業(yè)務(wù)劃分,明細(xì)層粒度明確、歷史數(shù)據(jù)可獲取,匯總層維度和指標(biāo)同名同義,能客觀反映業(yè)務(wù)不同角度下的量化程度;
核心模型相對穩(wěn)定:如果業(yè)務(wù)過程運行的比較久,過程相對固定,就要盡快下沉到公共層,形成可復(fù)用的核心模型;
高內(nèi)聚低耦合:各主題內(nèi)數(shù)據(jù)模型要業(yè)務(wù)高內(nèi)聚,避免在一個模型耦合其他業(yè)務(wù)的指標(biāo),造成該模型主題不清晰和性價比低。
總結(jié)
在傳統(tǒng)企業(yè)數(shù)倉中,業(yè)務(wù)相對穩(wěn)定,以范式建模為主。如電信、金融行業(yè)等。在互聯(lián)網(wǎng)公司,業(yè)務(wù)變化快,需求來來回回的改,計算和存儲也不是問題,我們更關(guān)心快速便捷的響應(yīng)業(yè)務(wù)需求,所以以維度建模為主流。