一、阿里巴巴數(shù)據(jù)整合及管理體系
實(shí)施工作流:
1、劃分?jǐn)?shù)據(jù)域:根據(jù)業(yè)務(wù)過程抽象出數(shù)據(jù)域。
2、構(gòu)建總線矩陣:明確每個(gè)數(shù)據(jù)域下有哪些業(yè)務(wù)過程,業(yè)務(wù)過程與哪些維度相關(guān),并定義每個(gè)數(shù)據(jù)域下的業(yè)務(wù)過程和維度。
3、規(guī)范定義:定義度量/原子指標(biāo)、修飾類型、修飾詞、時(shí)間周期、派生指標(biāo)。是一套數(shù)據(jù)規(guī)范命名體系,用在模型設(shè)計(jì)中。
規(guī)范定義實(shí)例:
指標(biāo)定義:
- 事務(wù)型指標(biāo):指對業(yè)務(wù)活動(dòng)進(jìn)行衡量的指標(biāo),例如新發(fā)商品數(shù)、新增會(huì)員數(shù)等。
- 存量型指標(biāo):指對實(shí)體對象某些狀態(tài)的統(tǒng)計(jì),例如商品總數(shù)、會(huì)員總數(shù)。
- 復(fù)合型指標(biāo):是在事務(wù)型指標(biāo)和存量型指標(biāo)的基礎(chǔ)上復(fù)合而成的,例如瀏覽 UV-下單買家數(shù)轉(zhuǎn)化率,有些需要?jiǎng)?chuàng)建新原子指標(biāo),有些則可以在事務(wù)型或存量型原子指標(biāo)的基礎(chǔ)上增加修飾詞得到派生指標(biāo)。
4、模型設(shè)計(jì):維度及屬性的規(guī)范定義,維表、明細(xì)事實(shí)表和匯總事實(shí)表的模型設(shè)計(jì)。
5、模型架構(gòu)圖
操作數(shù)據(jù)層(ODS):把操作系統(tǒng)數(shù)據(jù)幾乎無處理地存放在數(shù)據(jù)倉庫系統(tǒng)中。
公共模型層(CDM):存放明細(xì)事實(shí)數(shù)據(jù)、維表數(shù)據(jù)及公共指標(biāo)匯總數(shù)據(jù) ,其中明細(xì)事實(shí)數(shù)據(jù)、維表數(shù)據(jù)一般根據(jù) ODS 層數(shù)據(jù)加工生成 ;公共指標(biāo)匯總數(shù)據(jù)一般根據(jù)維表數(shù)據(jù)和明細(xì)事實(shí)數(shù)據(jù)加工生成。
明細(xì)數(shù)據(jù)層(DWD)和匯總數(shù)據(jù)層(DWS):CDM 層又細(xì)分為 DWD 層和 DWS 層,分別是明細(xì)數(shù)據(jù)層和匯總數(shù)據(jù)層,采用維度模型方法作為理論基礎(chǔ) ,更多地采用一些維度退化手法, 將維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián) ,提高明細(xì)數(shù)據(jù)表的易用性;同時(shí)在匯總數(shù)據(jù)層, 加強(qiáng)指標(biāo)的維度退化, 采取更多的寬表化手段構(gòu)建公共指標(biāo)數(shù)據(jù)層,提升公共指標(biāo)的復(fù)用性,減少重復(fù)加工。
應(yīng)用數(shù)據(jù)層(ADS):存放數(shù)據(jù)產(chǎn)品個(gè)性化的統(tǒng)計(jì)指標(biāo)數(shù)據(jù),根據(jù) CDM 層與 ODS 層加工生成 。
6、模型設(shè)計(jì)原則
(1)高內(nèi)聚和低耦合
主要從數(shù)據(jù)業(yè)務(wù)特性和訪問特性兩個(gè)角度來考慮:將業(yè)務(wù)相近或者相關(guān)、粒度相同的數(shù)據(jù)設(shè)計(jì)為一個(gè)邏輯或者物理模型;將高概率同時(shí)訪問的數(shù)據(jù)放一起,將低概率同時(shí)訪問的數(shù)據(jù)分開存儲(chǔ)。
(2)核心模型與擴(kuò)展模型分離
建立核心模型與擴(kuò)展模型體系,核心模型包括的字段支持常用的核心業(yè)務(wù),擴(kuò)展模型包括的字段支持個(gè)性化或少量應(yīng)用的需要 ,不能讓擴(kuò)展模型的宇段過度侵入核心模型,以免破壞核心模型的架構(gòu)簡潔性與可維護(hù)性。
(3)公共處理邏輯下沉及單一
越是底層公用的處理邏輯越應(yīng)該在數(shù)據(jù)調(diào)度依賴的底層進(jìn)行封裝與實(shí)現(xiàn),不要讓公用的處理邏輯暴露給應(yīng)用層實(shí)現(xiàn),不要讓公共邏輯多處同時(shí)存在。
(4)成本與性能平衡
適當(dāng)?shù)臄?shù)據(jù)冗余可換取查詢和刷新性能,不宜過度冗余與數(shù)據(jù)復(fù)制。
(5)數(shù)據(jù)可回滾
處理邏輯不變,在不同時(shí)間多次運(yùn)行數(shù)據(jù)結(jié)果確定不變。
(6)一致性
具有相同含義的字段在不同表中的命名必須相同,必須使用規(guī)范定義中的名稱。
(7)命名清晰、可理解
表命名需清晰、一致,表名需易于消費(fèi)者理解和使用。
二、維度設(shè)計(jì)
1、基本概念
在維度建模中,將度量成為“事實(shí)”,將環(huán)境稱為“維度”。代理鍵和自然鍵–例如,對于前臺(tái)應(yīng)用系統(tǒng)來說,商品ID是代理鍵;而對于數(shù)據(jù)倉庫系統(tǒng)來說,商品ID則屬于自然鍵。
2、規(guī)范化和反規(guī)范化
當(dāng)屬性層次被實(shí)例化為一系列維度,而不是單一維度時(shí)被稱為雪花模型。大多數(shù)OLTP系統(tǒng)模型采用雪花模型這種規(guī)范化操作。采用雪花模型,除了可以節(jié)約一部分存儲(chǔ)外,對于OLAP系統(tǒng)來說沒有其他效用,而現(xiàn)階段存儲(chǔ)的成本很低,所以在實(shí)際應(yīng)用中幾乎總是使用維表的空間來換取簡明性和查詢性能。
3、維度整合
數(shù)據(jù)集成到數(shù)倉中的體現(xiàn):
- 命名規(guī)范的統(tǒng)一
- 字段類型的統(tǒng)一
- 公共代碼及代碼值的統(tǒng)一
- 業(yè)務(wù)含義相同的表的統(tǒng)一:通常有3種方式–主從表(將多個(gè)表都有的字段放在主表中,而從屬信息分別放在各自的從表中)、直接合并、不合并,具體可以根據(jù)源表重合度及差異等狀況確定。
垂直整合: 不同的來源表包含相同的數(shù)據(jù)集,比如淘寶會(huì)員在源系統(tǒng)中有多個(gè)表,包括會(huì)員基礎(chǔ)信息表、會(huì)員擴(kuò)展信息表等,可以盡量垂直整合到會(huì)員維度模型中。
水平整合: 不同的來源表包含不同的數(shù)據(jù)集,不同子集之間無交叉,也可以存在部分交叉,如果要整合則可以采用各子集的自然鍵作為聯(lián)合主鍵的方式來實(shí)現(xiàn)。
4、維度拆分
水平拆分:
- 屬性差異較大時(shí),將所有屬性建在一張維表中是不切實(shí)際的。可以抽象出穩(wěn)定的公共維度,特殊維度單獨(dú)落地。
- 兩個(gè)相關(guān)性較低的業(yè)務(wù),整合在一起弊大于利,對模型的穩(wěn)定性和易用性影響較大,需要拆分單獨(dú)落地。
垂直拆分:
出于擴(kuò)展性、產(chǎn)出時(shí)間、易用性等方面的考慮,設(shè)計(jì)主從維度,主維表存放穩(wěn)定、產(chǎn)出時(shí)間早、熱度高的屬性,從維表存放變化較快、產(chǎn)出時(shí)間晚、熱度低的屬性,比如商品主維表在每日的1:30左右產(chǎn)出,而商品擴(kuò)展維度在每日的3:00左右產(chǎn)出。
5、維度變化
緩慢變化維,有三種處理方式:
- 重寫維度值,不保留歷史數(shù)據(jù);
- 插入新的維度行,保留歷史數(shù)據(jù),這種方式不能將變化前后記錄的事實(shí)歸一化為變化前或變化后的維度;
- 添加維度列,記錄新舊維度值,可以解決方案2的不足。
阿里巴巴內(nèi)部處理緩慢變化維的方法是采用快照維表方式,即每天保留一份全量的快照數(shù)據(jù),這種方案簡單高效,但是存儲(chǔ)空間浪費(fèi)嚴(yán)重。
針對空間的浪費(fèi)問題:
極限存儲(chǔ):采用歷史拉鏈存儲(chǔ),對于不變的數(shù)據(jù),不再重復(fù)存儲(chǔ)。
6、特殊維度
遞歸維度:可以直接采用遞歸模型支撐遞歸維度,但很多工具不支持遞歸SQL,且遞歸SQL成本高,所以可以在維度模型中對層次結(jié)構(gòu)進(jìn)行扁平化處理。大部分時(shí)候,扁平化設(shè)計(jì)足夠滿足需求了。
多值維度: 常見的有三種處理方式
- 降低事實(shí)表的粒度,避免出現(xiàn)多值;
- 采用多字段來處理多值維度(如果值的數(shù)量固定);
- 采用橋接表來表達(dá)一對多關(guān)系(復(fù)雜成本高需慎重)。
多值屬性: 常見的有三種處理方式
- 保持維度主鍵不變,將多值屬性存放在維度的一個(gè)屬性字段中,一般以K-V的形式存放;
- 保持維度主鍵不變,將多值屬性存放在多個(gè)字段中;
- 維度主鍵發(fā)生變化,一個(gè)維度值存放多條記錄,主鍵變更為原主鍵加屬性ID。
雜項(xiàng)維度: 除去關(guān)鍵維度之外的維度,比如訂單類型、支付狀態(tài)、物流狀態(tài)、訂單屬性、訂單標(biāo)簽等。以上雜項(xiàng)維度一般單獨(dú)建表存放。
三、事實(shí)表設(shè)計(jì)
1、事實(shí)表特性
作為度量業(yè)務(wù)過程的事實(shí),有可加性、半可加性(只能按照特定維度匯總,不能對所有的維度進(jìn)行匯總)、不可加性(比率類事實(shí))。
2、事實(shí)表類型
- 事務(wù)事實(shí)表: 用來描述業(yè)務(wù)過程,跟蹤空間或時(shí)間上某點(diǎn)的度量事件,保存的是最原子的數(shù)據(jù),也稱為“原子事實(shí)表“。
- 周期快照事實(shí)表: 以具有規(guī)律性的、可預(yù)見的時(shí)間間隔記錄事實(shí) ,時(shí)間間隔如每天、每月、每年等。
- 累積快照事實(shí)表:用來表述過程開始和結(jié)束之間的關(guān)鍵步驟事件,覆蓋過程的整個(gè)生命周期,通常具有多個(gè)日期字段來記錄關(guān)鍵時(shí)間點(diǎn),當(dāng)過程隨著生命周期不斷變化時(shí),記錄也會(huì)隨著過程的變化而被修改。
3、事實(shí)表設(shè)計(jì)原則
- 盡可能包含所有與業(yè)務(wù)過程相關(guān)的事實(shí)
- 只選擇與業(yè)務(wù)過程相關(guān)的事實(shí)
- 分解不可加性事實(shí)為可加事實(shí)
- 在選擇維度和事實(shí)之前必須先聲明粒度
- 在同一個(gè)事實(shí)表中不能有多個(gè)不同粒度的事實(shí)
- 事實(shí)的單位要保持一致
- 對事實(shí)的null值要處理:對于事實(shí)表中事實(shí)度量為 null 值的處理,因?yàn)樵跀?shù)據(jù) 庫中 null 值 對常用數(shù)字型字段的 SQL過濾條件都不生效,比如大于、小于、等于、 大于或等于、小于或等于,建議用零值填充。
- 使用退化維度提高事實(shí)表的易用性
4、事務(wù)事實(shí)表
單事務(wù)事實(shí)表: 針對每個(gè)業(yè)務(wù)過程設(shè)計(jì)一個(gè)事實(shí)表。
多事務(wù)事實(shí)表: 多事務(wù)事實(shí)表在設(shè)計(jì)時(shí)有兩種方法進(jìn)行事實(shí)的處理
- 不同業(yè)務(wù)過程的事實(shí)使用不同的事實(shí)字段進(jìn)行存放(會(huì)產(chǎn)生大量空數(shù)據(jù)),適合當(dāng)不同業(yè)務(wù)過程的度量差異較大的情形;
- 不同業(yè)務(wù)過程的事實(shí)使用同一個(gè)事實(shí)字段進(jìn)行存放,但增加一個(gè)業(yè)務(wù)過程標(biāo)簽。適合當(dāng)不同業(yè)務(wù)過程的度量比較相似、差異不大的情形。
例子:淘寶交易事務(wù)事實(shí)表:
5、周期快照事實(shí)表的注意事項(xiàng)
-
事務(wù)事實(shí)表與周期快照事實(shí)表成對設(shè)計(jì):
數(shù)據(jù)倉庫維度建模時(shí),對于事務(wù)事實(shí)表和快照事實(shí)表往往都是成對 設(shè)計(jì)的,互相補(bǔ)充,以滿足更多的下游統(tǒng)計(jì)分析需求,特別是在事務(wù)事實(shí)表的基礎(chǔ)上可以加工快照事實(shí)表,如前面所述的淘寶賣家歷史至今快 照事實(shí)表,就是在事務(wù)事實(shí)表的基礎(chǔ)上加工得到的,既豐富了星形模型, 又降低了下游分析的成本。 - 附加事實(shí):快照事實(shí)表在確定狀態(tài)度量時(shí),一般都是保存采樣周期結(jié)束時(shí)的狀態(tài)度量,比如歷史截至當(dāng)日下單金額、歷史截至當(dāng)日XXXX。但是也有分析需求需要關(guān)注上一個(gè)采樣周期結(jié)束時(shí)的狀態(tài)度量,而又不愿意多次使用快照事實(shí)表,因此一般在設(shè)計(jì)周期快照事實(shí)表時(shí)會(huì)附加一些上一個(gè)采樣周期的狀態(tài)度量。
周期到日期度量
- 在介紹淘寶賣家歷史至今快照事實(shí)表時(shí),指定了統(tǒng)計(jì)周期是賣家歷史至今的一些狀態(tài)度量,比如歷史截至當(dāng)日的下單金額、成交金額等。然而在實(shí)際應(yīng)用中,也有需要關(guān)注自然年至今、季度至今、財(cái)年至今的一些狀態(tài)度量,因此在確定周期快照事實(shí)表的度量時(shí),也要考慮類似的度量值,以滿足更多的統(tǒng)計(jì)分析需求。
阿里巴巴數(shù)據(jù)倉庫在設(shè)計(jì)周期快照事實(shí)表時(shí),就針對多種周期到日期的度量設(shè)計(jì)了不同的快照事實(shí)表,比如淘寶賣家財(cái)年至今的下單金額、淘寶商品自然年至今的收藏次數(shù)等。
6、累計(jì)快照事實(shí)表的物理實(shí)現(xiàn)
全量表的形式:此全量表一般為日期分區(qū)表,每天的 分區(qū)存儲(chǔ)昨天的全量數(shù)據(jù)和當(dāng)天的增量數(shù)據(jù)合并的結(jié)果,保證每條記錄 的狀態(tài)最新。此種方式適用于全量數(shù)據(jù)較少的情況。
全量表的變化形式:比如針對交易訂單,我們以 200 天作為訂單從產(chǎn)生到消亡的最大間隔。設(shè)計(jì)最近 200 天的交易訂單累積快照事實(shí)表,每天的分 區(qū)存儲(chǔ)最近 200 天的交易訂單而 200 天之前的訂單則按照 gmt_create 創(chuàng)建分區(qū)存儲(chǔ)在歸檔表中。
業(yè)務(wù)實(shí)體的結(jié)束時(shí)間分區(qū):每天的分區(qū)存放當(dāng)天結(jié) 束的數(shù)據(jù),設(shè)計(jì)一個(gè)時(shí)間非常大的分區(qū),比如 3000-12-31 ,存放截至當(dāng)前未結(jié)束的數(shù)據(jù)。由于每天將當(dāng)天結(jié)束的數(shù)據(jù)歸檔至當(dāng)天分區(qū)中,時(shí)間 非常大的分區(qū)數(shù)據(jù)量不會(huì)很大, ETL 性能較好;并且無存儲(chǔ)的浪費(fèi),對于業(yè)務(wù)實(shí)體的某具體實(shí)例,在該表的全量數(shù)據(jù)中唯一。但接口等原因,存在結(jié)束標(biāo)志的確認(rèn)問題,有以下兩個(gè)方案:
- 使用相關(guān)業(yè)務(wù)系統(tǒng)的業(yè)務(wù)實(shí)體的結(jié)束標(biāo)志作為此業(yè)務(wù) 系統(tǒng)的結(jié)束標(biāo)志。
- 和前端業(yè)務(wù)系統(tǒng)確定口徑或使用前端歸檔策略。
7、三種事實(shí)表的比較
8、聚集型事實(shí)表
數(shù)據(jù)倉庫的性能是數(shù)據(jù)倉庫建設(shè)是否成功的重要標(biāo)準(zhǔn)之一。聚集主要是通過匯總明細(xì)粒度數(shù)據(jù)來獲得改進(jìn)查詢性能的效果。通過訪問聚集數(shù)據(jù),可以減少數(shù)據(jù)庫在響應(yīng)查詢時(shí)必須執(zhí)行的工作量,能夠快速響應(yīng)用戶的查詢,同時(shí)有利于減少不同用戶訪問明細(xì)數(shù)據(jù)帶來的結(jié)果不一致問題。盡管聚集能帶來良好的收益,但需要事先對其進(jìn)行加載和維護(hù),這將會(huì)對給ETL帶來更多的挑戰(zhàn)。
阿里巴巴將使用頻繁的公用數(shù)據(jù),通過聚集進(jìn)行沉淀,比如賣家最近1天的交易匯總表、賣家最近N天的交易匯總表、賣家自然年交易匯總表等。這類聚集匯總數(shù)據(jù),被叫作“公共匯總層”。文章來源:http://www.zghlxwxcb.cn/news/detail-738763.html
參考文章:
[1] 阿里巴巴大數(shù)據(jù)實(shí)踐(數(shù)據(jù)模型篇)文章來源地址http://www.zghlxwxcb.cn/news/detail-738763.html
到了這里,關(guān)于大數(shù)據(jù)之路—數(shù)據(jù)架構(gòu)體系及模型設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!