京东数仓分层相关
一、模型分層
源業(yè)務(wù)系統(tǒng)數(shù)據(jù)的快照,保存細(xì)節(jié)數(shù)據(jù),按天分區(qū),會(huì)保持最近一段時(shí)間數(shù)據(jù)。一般情況下,每個(gè)BDM表對(duì)應(yīng)著源業(yè)務(wù)系統(tǒng)的一個(gè)表或者一個(gè)日志文件,數(shù)據(jù)結(jié)構(gòu)與線上基本是對(duì)應(yīng)的。絕大多數(shù)的數(shù)據(jù)快照是經(jīng)過增量抽取策略抽過來了,對(duì)于不支持增量抽取策略或者數(shù)據(jù)量極少的表采用全量抽取的策略。
基礎(chǔ)數(shù)據(jù)模型,用來保存源業(yè)務(wù)系統(tǒng)數(shù)據(jù)的快照,數(shù)據(jù)永久保存。對(duì)于有更新操作的數(shù)據(jù)來說,采用拉鏈的方式優(yōu)化存儲(chǔ)。對(duì)于沒有更新操作的數(shù)據(jù)來說,采用流水方式存儲(chǔ)。
根據(jù)京東核心業(yè)務(wù)主題按照星型模型或雪花模型設(shè)計(jì)方式建設(shè)的最細(xì)業(yè)務(wù)粒度匯總層。在本層需要進(jìn)行指標(biāo)與維度的標(biāo)準(zhǔn)化,保證指標(biāo)數(shù)據(jù)的唯一性。
根據(jù)不同的業(yè)務(wù)需求采用星型或雪花型模型設(shè)計(jì)方法構(gòu)建的按維度匯總數(shù)據(jù)。
維度表可以看作是用戶來分析數(shù)據(jù)的窗口,維度表中包含事實(shí)數(shù)據(jù)表中事實(shí)記錄的特性,有些特性提供描述性信息,有些特性指定如何匯總事實(shí)數(shù)據(jù)表數(shù)據(jù),以便為分析者提供有用的信息,維度表包含幫助匯總數(shù)據(jù)的特性的層次結(jié)構(gòu)。例如,包含訂單信息的維度表通常包含將訂單分為區(qū)域、省份、城市等若干類的層次結(jié)構(gòu)。在維度表中,每個(gè)表都包含獨(dú)立于其他維度表的事實(shí)特性,例如,客戶維度表包含有關(guān)客戶級(jí)別的數(shù)據(jù)。維度表中的列字段可以將信息分為不同層次的結(jié)構(gòu)級(jí)。
用來降低加工過程計(jì)算難度,提高運(yùn)行效率的臨時(shí)表,用完即舍,不保存歷史數(shù)據(jù)。
7 中間層(操作數(shù)據(jù)模型) ODM
在加工通用模型的時(shí)候,對(duì)于多個(gè)模型都使用到的公共數(shù)據(jù)需要清洗轉(zhuǎn)換的時(shí)候,用來封裝清洗轉(zhuǎn)換邏輯保存清洗后的數(shù)據(jù),供加工通用模型使用,中間層數(shù)據(jù)保存歷史狀態(tài)。
應(yīng)用數(shù)據(jù)模型按照具體的需求進(jìn)行設(shè)計(jì),其數(shù)據(jù)直接供前端報(bào)表工具展現(xiàn)使用,或者推送到其他系統(tǒng)做相關(guān)的數(shù)據(jù)支撐。
數(shù)倉分層意義:
二、建模分類
我們先從幾個(gè)物理概念入手理解什么是流量,存量,增量
(1)存量:系統(tǒng)在某一時(shí)點(diǎn)時(shí)的所保有的數(shù)量;
(2)流量:是指在某一段時(shí)間內(nèi)流入/出系統(tǒng)的數(shù)量
(3)增量:則是指在某一段時(shí)間內(nèi)系統(tǒng)中保有數(shù)量的變化
(4)增量=流入量–流出量
(5)本期期末存量=上期期末存量+本期內(nèi)增量
拉鏈表
(1)記錄一個(gè)事物從開始,一直到當(dāng)前狀態(tài)的所有變化的信息;
(2)拉鏈表每次上報(bào)的都是歷史記錄的最終狀態(tài),是記錄在當(dāng)前時(shí)刻的歷史總量;
(3)當(dāng)前記錄存的是當(dāng)前時(shí)間之前的所有歷史記錄的最后變化量(總量);
(4)存量是在某一時(shí)刻的總量;
(5)存量一般設(shè)計(jì)成拉鏈表(月報(bào)-常用、日?qǐng)?bào));
(6)流量和存量的區(qū)別:流量是增量;存量是總量;
(7)封鏈時(shí)間可以是2999,3000,9999等等比較大的年份;拉鏈表到期數(shù)據(jù)要報(bào)0;
(8)拉鏈表和增量表的共同點(diǎn):表結(jié)構(gòu)基本一樣。
流水表:對(duì)于表的每一個(gè)修改都會(huì)記錄,可以用于反映實(shí)際記錄的變更
區(qū)別于拉鏈表:
拉鏈表通常是對(duì)賬戶信息的歷史變動(dòng)進(jìn)行處理保留的結(jié)果,流水表是每天的交易形成的歷史;
流水表用于統(tǒng)計(jì)業(yè)務(wù)相關(guān)情況,拉鏈表用于統(tǒng)計(jì)賬戶及客戶的情況
快照表:
按照每天存放的數(shù)據(jù)以及是否按天分區(qū)可以分為增量表,全量表和快照表
全量表
(1)全量表,有無變化,都要報(bào)
(2)每次上報(bào)的數(shù)據(jù)都是所有的數(shù)據(jù)(變化的 + 沒有變化的)
增量表
(1)記錄每次增加的量,而不是總量;
(2)流量是指在一定時(shí)間內(nèi)的增量;
(3)流量一般設(shè)計(jì)成增量表(日?qǐng)?bào)-常用、月報(bào));
(4)流量和存量的區(qū)別:流量是增量;存量是總量;
(5)增量表,只報(bào)變化量,無變化不用報(bào)
三、數(shù)據(jù)倉庫建模理論
1、建模三個(gè)階段
1.1、概念模型設(shè)計(jì)(Concept Data Modeling)
這一階段之前的首要工作是明確需求涵蓋的業(yè)務(wù)范圍。然后再對(duì)需求范圍內(nèi)的業(yè)務(wù)及其間關(guān)系進(jìn)行高度概括性的描述,把密切相關(guān)業(yè)務(wù)對(duì)象進(jìn)行歸類,即劃分主題域。概念模型的設(shè)計(jì)是為邏輯模型的設(shè)計(jì)做準(zhǔn)備。
1.2、邏輯模型設(shè)計(jì)(Logical Data Modeling)
邏輯數(shù)據(jù)模型(Logical Data Model)是利用數(shù)據(jù)和關(guān)系來反映集團(tuán)業(yè)務(wù)的一個(gè)過程,其生成的關(guān)系數(shù)據(jù)模型,利用圖形化方式來展現(xiàn)集團(tuán)業(yè)務(wù)規(guī)則。邏輯數(shù)據(jù)模型描述了集團(tuán)的重要業(yè)務(wù)元素以及這些元素之間的關(guān)系,是集團(tuán)進(jìn)行數(shù)據(jù)管理、分析和交流的重要手段,通過它可以清楚地了解集團(tuán)的數(shù)據(jù)結(jié)構(gòu)和業(yè)務(wù)規(guī)則,是IT人員和業(yè)務(wù)人員溝通的橋梁。同時(shí),邏輯數(shù)據(jù)模型也是用來發(fā)現(xiàn)、記錄和溝通業(yè)務(wù),展現(xiàn)業(yè)務(wù)規(guī)則的詳細(xì)“藍(lán)圖”。邏輯數(shù)據(jù)模型獨(dú)立于技術(shù)和特定平臺(tái),邏輯數(shù)據(jù)模型在特定平臺(tái)的實(shí)施即為物理數(shù)據(jù)模型。在建立邏輯模型的時(shí)候,我們要盡量把所有的業(yè)務(wù)邏輯涵蓋在模型之中,不能留給程序去定義業(yè)務(wù)邏輯
1.3、物理模型設(shè)計(jì)(Physical Data Modeling)
物理數(shù)據(jù)模型與邏輯數(shù)據(jù)模型不同,因?yàn)橐獧?quán)衡數(shù)據(jù)源的數(shù)據(jù)組織結(jié)構(gòu)、ETL過程的復(fù)雜程度以及數(shù)據(jù)庫本身的特點(diǎn),因此在物理模型中往往會(huì)使用一些非正則化處理,增加一些冗余字段和匯總表,而這些是不會(huì)出現(xiàn)在邏輯數(shù)據(jù)模型中的。另外,邏輯數(shù)據(jù)模型中的元素在物理數(shù)據(jù)庫中實(shí)現(xiàn)時(shí)可能被重新組合,例如實(shí)體歸并、屬性從一個(gè)實(shí)體被移到另一個(gè)實(shí)體等。但是必須堅(jiān)持的一個(gè)基本原則是,物理模型不能改變業(yè)務(wù)規(guī)則,其目的僅是提高數(shù)據(jù)分析的速度,適應(yīng)具體數(shù)據(jù)庫的容量、性能等限制。因此可以說,這一階段面對(duì)的是具體的軟硬件平臺(tái)和性能要求。
四、數(shù)據(jù)倉庫設(shè)計(jì)規(guī)范
1、邏輯模型設(shè)計(jì)
數(shù)據(jù)倉庫共性加工層邏輯模型設(shè)計(jì)總體遵循以下設(shè)計(jì)原則:
中性的,共享的:服務(wù)于多個(gè)應(yīng)用相同業(yè)務(wù)數(shù)據(jù)的統(tǒng)計(jì);
逆范式化:設(shè)計(jì)成寬表模型,重新組織基礎(chǔ)層數(shù)據(jù),減少了重新關(guān)聯(lián)表進(jìn)行計(jì)算所帶來的性能問題,加快了查詢的響應(yīng)時(shí)間;
規(guī)范的,易懂的:使用業(yè)務(wù)定義和語言進(jìn)行模型設(shè)計(jì),易于讓業(yè)務(wù)人員理解和使用,有助于IT和業(yè)務(wù)部門人員的溝通。
2、物理模型設(shè)計(jì)
數(shù)據(jù)倉庫共性加工層物理模型設(shè)計(jì)總體遵循以下設(shè)計(jì)原則:
可實(shí)施的:結(jié)合特定數(shù)據(jù)庫平臺(tái)進(jìn)行設(shè)計(jì),可以在相應(yīng)平臺(tái)上直接創(chuàng)建數(shù)據(jù)庫,不具有平臺(tái)共享性;
高效的:結(jié)合數(shù)據(jù)及使用特性的通過適度冗余、創(chuàng)建索引等手段保證物理數(shù)據(jù)庫的高效運(yùn)轉(zhuǎn);
規(guī)范的,易懂的:物理數(shù)據(jù)模型與邏輯數(shù)據(jù)模型同樣需要遵循命名規(guī)范,表名、字段名命名規(guī)范一致,方便易懂、易查詢。
模型開發(fā)相關(guān):
HiveTask總結(jié):
1. 京東SQL任務(wù)提交入口,提供如下功能:
1.1 日志存儲(chǔ)
1.2 Spark/MR(Hive)任務(wù)切換
1.3 統(tǒng)一提供初始化內(nèi)置參數(shù)
1.4 增加LZO索引 【Jar包】
1.6 提供合并小文件 【Jar包提供功能支持】
1.7 任務(wù)失敗重試【是否切換引擎, 開啟Hive重試機(jī)制】
1.8 解析表結(jié)構(gòu)、分析等等
總結(jié)
- 上一篇: 【报告分享】丁香园矩阵建设及商业价值分析
- 下一篇: ⚡性能优化之首屏秒开