大數據之路

1.總述

人類從“IT時代”進入“DT時代”。本書介紹了阿里巴巴的大數據系統(tǒng)架構,為了滿足不斷變化的業(yè)務需求,同時實現(xiàn)系統(tǒng)的高擴展性、靈活性以及數據展現(xiàn)的高性能
數據體系主要包括:數據采集、數據計算、數據服務數據應用四大層次。

大數據系統(tǒng)體系架構

1.數據采集層包括兩大體系:Aplus.JS是Web端日志采集技術方案,UserTrack是APP端日志采集技術方案。
2.數據計算層包括兩大體系:數據存儲及計算云平臺(離線計算平臺:MaxCompute;實時計算平臺:StreamCompute);數據整合和管理體系(阿里內部稱為“OneData”)。數倉的加工鏈路包括:ods(操作數據層)、dwd(明細數據層)、dws(匯總數據層)、ads(應用數據層)。
3.數據服務層通過接口服務化方式對外提供數據服務,數據服務層架構在多種數據庫之上(例如:mysql、Hbase等),數據服務層對外提供服務通過統(tǒng)一的數據服務平臺(OneService)。

11.事實表設計

11.1 事實表基礎

事實表包括引用的維度和描述具體業(yè)務的度量。

事實表中一條記錄描述的業(yè)務的細節(jié)程度稱為粒度。粒度可以使用兩種方式來表示:(1)維度屬性組合(2)所表示的具體業(yè)務含義。

事實包括可加性、半可加性和不可加性三種類型:
半可加性:只可以針對特定維度做聚合,例如庫存(不能按照日期,可按照倉庫聚合)。
可加性:可以按照任意維度聚合。
不可加性:完全不具備可加性。(例如:比率,事實表可以拆分存儲分子分母)

維度屬性也可以存到事實表中,稱為退化維度

事實表有三種類型:事務事實表、周期快照事實表、累計快照事實表。
事務事實表描述的是業(yè)務過程上的原子事務,也稱為原子事實表。
周期快照事實表是按照周期性規(guī)律的時間間隔記錄事實。
累計快照事實表:累計快照事實表用來表示過程開始和結束過程之間的關鍵步驟事件,覆蓋整個生命周期,通常用多個日期字段記錄關鍵時間點,記錄會隨著時間變化而修改。

事實表設計原則:
原則1: 盡可能包含所有與業(yè)務過程相關的事實。
即時存在冗余,也盡可能存儲。

原則2:只選擇與業(yè)務過程相關的事實。

原則3:分解不可加事實為可加的組件。
例如:不存成單率,轉而存儲成單數和提單數。

原則4:選擇維度和事實前,必須先聲明粒度。
建議粒度設置的越細越好,這樣可以最大限度的提高靈活性??梢酝ㄟ^業(yè)務描述或者維度屬性組合的方式來定義粒度。

原則5:在同一個事實表中,不應該有不同粒度的事實。
例如:一個事實表中不應該包含某些精確到訂單粒度的度量,同時又包含只精確到城市的度量。

原則6:事實的單位一致。

原則7:盡量處理掉事實表中的null值。
SQL中大于,小于的條件不適用與null值,所以盡量用數值替代null,例如0.

原則8:使用退化維度增加事實表的易用性。
在Kimball的維度設計模型中,分拆出單獨的維度表,為了節(jié)省存儲。但是為了減少使用時的關聯(lián)次數,可以多使用退化維度提供事實表易用性。

事實表設計方法:
1.選擇業(yè)務過程及確定事實表類型。2. 聲明粒度。3.確定維度。4.確定事實。5.冗余維度(設計退化維度)。

11.2 事務事實表

事務事實表,即針對業(yè)務過程構建的一類事實表,用來跟蹤定義業(yè)務過程的個體行為,提供豐富的分析能力,作為數據倉庫原子的明細數據。

11.2.1 單事務事實表

單事務事實表,即針對每一個業(yè)務過程設計一個事實表,這樣可以方便地對每一個業(yè)務過程進行分析研究。

11.2.2 多事務事實表

表示同一個事實表包含不同的業(yè)務過程。多事務事實表有兩種實現(xiàn)方法:(1)使用兩個不同的事實字段來保存各自業(yè)務過程。(2)使用同一個字段保存,但是增加一個業(yè)務過程標簽。
下面舉例說明,淘寶交易事務事實表同時包含下單、支付和成功完結三個過程,三個過程粒度一致,可以放在一個事實表。下面確定維度和事實,該表中的下單度量、支付度量和成功完結度量信息分別存在不同字段,如果不是當前業(yè)務處理,則用0來處理。
當不同業(yè)務過程的度量比較相似、差異不大時使用第二種事實表(使用一個字段保存),當不同業(yè)務過程的度量差異大時,使用第一種(多字段保存)。

11.2.3 比較

對于單事務事實表和多事務事實表的選擇上,可以從以下一些方面來區(qū)分:
業(yè)務過程、粒度和維度(不同業(yè)務過程粒度相同,并且維度相似時,可以選用單事務事實表)、事實、下游業(yè)務使用、計算存儲成本。電商環(huán)境下,有父子訂單的概念,店鋪多商品各生成一個訂單,在一個店鋪合成一個父訂單。

事務事實表類型 單事務事實表 多事務事實表
業(yè)務過程 一個 多個
粒度 相互不相關 相同粒度
維度 相互不相關 一致
事實 只取當前業(yè)務過程中的事實 保留多個事實,非當前業(yè)務度量置0
冗余維度 多個業(yè)務過程,冗余多次 不同業(yè)務過程只冗余一次
理解成本 易于理解,不易混淆 難以理解,需要通過標簽限定
計算存儲成本 較多,每個業(yè)務過程都需要計算存儲一次 較少,增加了存儲量,存在大量零值數據

11.2.4 事實的設計準則

1.事實完整性:事實表包含與其描述的過程有關的所有事實。
2.事實一致性:明確存儲每一個事實以確保度量一致性。例如,有下單商品數和商品價格2個事實,同時保存下單金額(價格*商品數)。這樣下游使用時,直接取下單金額,而不是再次計算,以保證指標的一致性。
3.事實可加性:為確保下游使用時,指標的可聚合性,盡量保存原始數,而不是計算后的比率指標。

11.3 周期性快照事實表

對于事務度量,事務性事實表可以很好地表征。但是對于一些狀態(tài)度量,例如買賣家累計交易金額、商品庫存、買賣家星級、溫度(事務事實表無法聚合得到)等,事務事實表的效率較低或者無法處理。為了解決狀態(tài)度量問題,引入周期性快照事實表(也稱為快照事實表)。

11.3.1 快照事實表特性

1.用快照采樣狀態(tài):快照事實表以預定的間隔采樣狀態(tài)度量。
2.快照粒度:快照事實表通??偸潜欢嗑S聲明,即快照需要采樣的周期以及什么將被采樣。
3.密度和稠密性:稠密性是快照事實表的重要特征。事務事實表一般都是稀疏的,只要發(fā)生業(yè)務才會有相應記錄。
4.半可加性:快照事實表的狀態(tài)度量都是半可加的,例如商品庫存,只針對商品維度可加,對日期維度不可加。

設計快照事實表,首先確定快照粒度,然后確定采樣的狀態(tài)度量。下面介紹幾個快照事實表實例。
單維度每天快照事實表、混合維度每天快照事實表,這兩種快照表都可以從事務事實表匯總得到。另外的一種產出模式是直接使用操作型系統(tǒng)作為數據源來加工,例如淘寶賣家的星級評分是在操作型系統(tǒng)中計算得出的,倉庫直接拿來這部分數據加入事實表。全量快照事實表,是特殊類型的周期快照表,例如設計無事實的事實表來記錄評論的狀態(tài)度量。

總結:事務事實表和周期快照表一般都是成對設計,特別是在事務事實表基礎上加工周期快照事實表。一般地,快照事實表會有狀態(tài)比對的需求(和上一個時間周期),所以周期快照表一般也會附加存儲上一個時間周期的狀態(tài)度量(防止多次使用周期快照表)。除歷史至今的狀態(tài)度量,還可能需要自然年、季度、月份至今的狀態(tài)(例如年初至今的庫存量)。

11.4 累計快照事實表

對于研究事件之間的時間間隔需求時,累計快照事實表能較好符合需求。
特點:
1.數據不斷更新:例如,在下單、支付和確認收貨三個業(yè)務過程中,事務事實表會生成3條記錄,而累計快照表會不斷更新一條記錄(不生成新記錄)。
2.多業(yè)務過程日期:
累計快照表適用于具有較明確起止時間的短生命周期的實體,對于每個實體都經歷從誕生到消亡等步驟。
3.存儲歷史全量數據。

11.5 三種類型事實表的比較

事實表類型 事務事實表 周期快照事實表 累積快照事實表
時間/時期 離散事務時間點 以有規(guī)律、可預測的時間間隔產生數據 用于時間跨度不確定的不斷變化的工作流
日期維度 事務日期 快照日期 相關業(yè)務過程涉及的多個日期
粒度 每行代表實體的一個事務 每行代表某時間周期的一個實體 每行代表一個實體的生命周期
事實 事務事實 累積事實 相關業(yè)務過程事實和時間間隔事實
事實表加載 插入 插入 插入與更新
事實表更新 不更新 不更新 業(yè)務過程變更時更新

11.6 無事實的事實表

1.事件類的,例如瀏覽日志。
2.條件范圍資格類的,例如客戶和銷售人員的分配情況。

11.7 聚集型事實表

主要是提前聚合,為了增加數據訪問的效率(不用再聚合了),減少數據不一致的情況。這類聚集匯總數據,被稱為“公共匯總層”。
聚集的基本步驟:1.確定聚集維度。2.確定一致性上鉆。3.確定聚集事實。

12.元數據

12.1 元數據概述:

元數據主要記錄數據倉庫中模型的定義、各層級間映射關系、監(jiān)控數據倉庫的數據狀態(tài)及ETL任務的運行狀態(tài)。元數據分為技術元數據業(yè)務元數據。
阿里巴巴技術元數據包括:
數據表、列等信息;ETL作業(yè)的信息;數據同步、任務調度、計算任務等信息。數據質量和運維相關元數據。
阿里巴巴業(yè)務元數據包括:
維度屬性、業(yè)務過程、指標等。數據應用元數據,例如數據報表、數據產品等。

元數據價值:
元數據在數據管理方面為集團數據在計算、存儲、成本、質量、安全、模型等治理領域上提供數據支持。

14.存儲和成本管理

14.1 數據壓縮

阿里MaxCompute提供了archive壓縮方法,采用了具有更高壓縮比壓縮算法,將數據以RAID file的形式存儲。這樣可以節(jié)省空間,但是恢復起來也更復雜,所以適用于冷備份的數據。

14.2 數據重分布

MaxCompute基于列存儲,通過修改表的數據重分布,避免列熱點,將會節(jié)省一定存儲空間。

14.3 存儲治理項優(yōu)化

存儲治理項以元數據為基礎,列出例如“62天內未訪問的分區(qū)”、“數據無更新的任務列表”等等管理項推動ETL優(yōu)化。形成現(xiàn)狀分析、問題診斷、管理優(yōu)化、效果反饋的存儲治理項優(yōu)化的閉環(huán)。


14.4 生命周期管理

生命周期管理的目的是用最少的存儲成本來滿足最大業(yè)務需求,實現(xiàn)數據價值最大化。
1.周期性刪除策略:
2.徹底刪除策略:主要針對無用表,ETL中間過程表。
3.永久保存策略:
4.極限存儲策略:
5.冷數據管理策略:針對重要且訪問頻率低的數據。
6.增量表merge全量表策略:

14.5 數據成本計量

將一個數據表的成本分為存儲成本和計算成本,除此之外,上游表對該表的掃描成本也應該計入。相應的計費分別核算為:計算付費、存儲付費和掃描付費。數據資產的成本管理分為數據成本計量和數據使用計費。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容