阿里巴巴大數(shù)據(jù)實踐(數(shù)據(jù)管理篇)

第12章 元數(shù)據(jù)
第13章 計算管理
第14章 存儲和成本管理
第15章 數(shù)據(jù)質量
第16章 數(shù)據(jù)應用

第12章 元數(shù)據(jù)

12.1 元數(shù)據(jù)概述

12.1.1 元數(shù)據(jù)定義

按照傳統(tǒng)的定義,元數(shù)據(jù)(Metadata)是關于數(shù)據(jù)的數(shù)據(jù)。元數(shù)據(jù)打通了源數(shù)據(jù)、數(shù)據(jù)倉庫、數(shù)據(jù)應用,記錄了數(shù)據(jù)從產生到消費的全過程。元數(shù)據(jù)主要記錄數(shù)據(jù)倉庫中模型的定義、各層級間的映射關系、監(jiān)控數(shù)據(jù)倉庫的數(shù)據(jù)狀態(tài)及ETL的任務運行狀態(tài)。

在數(shù)據(jù)倉庫系統(tǒng)中,元數(shù)據(jù)可以幫助數(shù)據(jù)倉庫管理員和開發(fā)人員非常方便地找到他們所關心的數(shù)據(jù),用于指導其進行數(shù)據(jù)管理和開發(fā)工作,提高工作效率。

將元數(shù)據(jù)按用途的不同分為兩類:

  • 技術元數(shù)據(jù)(Technical Metadata)

存儲關于數(shù)據(jù)倉庫系統(tǒng)技術細節(jié)的數(shù)據(jù),是用于開發(fā)和管理數(shù)據(jù)倉庫使用的數(shù)據(jù)。

(包括分布式計算系統(tǒng)存儲元數(shù)據(jù)/運行元數(shù)據(jù)、數(shù)據(jù)開發(fā)平臺中數(shù)據(jù)同步/計算任務/任務調度等數(shù)據(jù)、數(shù)據(jù)質量和運維相關元數(shù)據(jù)等)

  • 業(yè)務元數(shù)據(jù)(Business Metadata)

從業(yè)務角度描述了數(shù)據(jù)倉庫中的數(shù)據(jù),它提供了介于使用者和實際系統(tǒng)之間的語義層,使得不懂計算機技術的業(yè)務人員也能夠“讀懂”數(shù)據(jù)倉庫中的數(shù)據(jù)。

(包括OneData元數(shù)據(jù)和數(shù)據(jù)應用元數(shù)據(jù)等,如數(shù)據(jù)報表、數(shù)據(jù)產品等的配置和運行元數(shù)據(jù))

12.1.2 元數(shù)據(jù)價值

元數(shù)據(jù)有重要的應用價值,是數(shù)據(jù)管理、數(shù)據(jù)內容、數(shù)據(jù)應用的基礎,在數(shù)據(jù)管理方面為集團數(shù)據(jù)提供在計算、存儲、成本、質量、安全、模型等治理領域上的數(shù)據(jù)支持。

例如在計算上可以利用元數(shù)據(jù)查找超長運行節(jié)點,對這些節(jié)點進行專項治理,保障基線產出時間。

在數(shù)據(jù)內容方面為集團數(shù)據(jù)進行數(shù)據(jù)域、數(shù)據(jù)主題、業(yè)務屬性等的提取和分析提供數(shù)據(jù)素材。例如可以利用元數(shù)據(jù)構建知識圖譜,給數(shù)據(jù)打標簽,清楚地知道現(xiàn)在有哪些數(shù)據(jù)。

在數(shù)據(jù)應用方面打通產品及應用鏈路,保障產品數(shù)據(jù)準確、及時產出。例如打通MaxCompute和應用數(shù)據(jù),明確數(shù)據(jù)資產等級,更有效地保障產品數(shù)據(jù)。

12.1.3 統(tǒng)一元數(shù)據(jù)體系建設

元數(shù)據(jù)的質量直接影響到數(shù)據(jù)管理的準確性,如何把元數(shù)據(jù)建設好將起到至關重要的作用。

元數(shù)據(jù)建設的目標是打通數(shù)據(jù)接入到加工,再到數(shù)據(jù)消費整個鏈路,規(guī)范元數(shù)據(jù)體系與模型,提供統(tǒng)一的元數(shù)據(jù)服務出口,保障元數(shù)據(jù)產出的穩(wěn)定性和質量。

圖12.1 統(tǒng)一元數(shù)據(jù)體系建設思路圖.png

12.2 元數(shù)據(jù)應用

數(shù)據(jù)的真正價值在于數(shù)據(jù)驅動決策,通過數(shù)據(jù)指導運營。通過數(shù)據(jù)驅動的方法,我們能夠判斷趨勢,從而展開有效行動,幫助自己發(fā)現(xiàn)問題,推動創(chuàng)新或解決方案的產生。這就是數(shù)據(jù)化運營。同樣,對于元數(shù)據(jù),可以用于指導數(shù)據(jù)相關人員進行日常工作,實現(xiàn)數(shù)據(jù)化“運營”。

比如對于數(shù)據(jù)使用者,可以通過元數(shù)據(jù)讓其快速找到所需要的數(shù)據(jù);對于ETL工程師,可以通過元數(shù)據(jù)指導其進行模型設計、任務優(yōu)化和任務下線等各種日常ETL工作;對于運維工程師,可以通過元數(shù)據(jù)指導其進行整個集群的存儲、計算和系統(tǒng)優(yōu)化等運維工作。

12.2.1 Data Profile

核心思路是為紛繁復雜的數(shù)據(jù)建立一個脈絡清晰的血緣圖譜。通過圖計算、標簽傳播算法等技術,系統(tǒng)化、自動化地對計算與存儲平臺上的數(shù)據(jù)進行打標、整理、歸檔。形象地說,DataProfile實際承擔的是為元數(shù)據(jù)“畫像”的任務。

  • 基礎標簽

針對數(shù)據(jù)的存儲情況、訪問情況、安全等級等進行打標。

  • 數(shù)倉標簽

針對數(shù)據(jù)是增量還是全量、是否可再生、數(shù)據(jù)的生命周期來進行標簽化處理。

  • 業(yè)務標簽

根據(jù)數(shù)據(jù)歸屬的主題域、產品線、業(yè)務類型為數(shù)據(jù)打上不同的標簽。

  • 潛在標簽

這類標簽主要是為了說明數(shù)據(jù)潛在的應用場景,比如社交、媒體、廣告、電商、金融等。

12.2.2 元數(shù)據(jù)門戶

元數(shù)據(jù)門戶致力打造一站式的數(shù)據(jù)管理平臺、高效的一體化數(shù)據(jù)市場。包括“前臺”和“后臺”,“前臺”產品為數(shù)據(jù)地圖,定位消費市場,實現(xiàn)檢索數(shù)據(jù)、理解數(shù)據(jù)等“找數(shù)據(jù)”需求;“后臺”產品為數(shù)據(jù)管理,定位于一站式數(shù)據(jù)管理,實現(xiàn)成本管理、安全管理、質量管理等。

  • 數(shù)據(jù)地圖

圍繞數(shù)據(jù)搜索,服務于數(shù)據(jù)分析、數(shù)據(jù)開發(fā)、數(shù)據(jù)挖掘、算法工程師、數(shù)據(jù)運營等數(shù)據(jù)表的使用者和擁有者,提供方便快捷的數(shù)據(jù)搜索服務,擁有功能強大的血緣信息及影響分析,利用表使用說明、評價反饋、表收藏及精品表機制,為用戶浮現(xiàn)高質量、高保障的目標數(shù)據(jù)。

比如在進行數(shù)據(jù)分析前,使用數(shù)據(jù)地圖進行關鍵詞搜索,幫助快速縮小范圍,找到對應的數(shù)據(jù);比如使用數(shù)據(jù)地圖根據(jù)表名直接查看表詳情,快速查閱明細信息,掌握使用規(guī)則:比如通過數(shù)據(jù)地圖的血緣分析可以查看每個數(shù)據(jù)表的來源、去向,并查看每個表及字段的加工邏輯。

  • 數(shù)據(jù)管理平臺

圍繞數(shù)據(jù)管理,服務于個人開發(fā)者、BU管理者、系統(tǒng)管理員等用戶,提供個人和BU全局資產管理、成本管理和質量管理等。針對個人開發(fā)者,主要包括計算費用和健康分管理、存儲費用和健康分管理,并提供優(yōu)化建議和優(yōu)化接口;針對BU管理者和管理員,主要提供BU、應用、集群等全局資產消耗概覽、分析和預測。

12.2.3 應用鏈路分析

對于某個數(shù)據(jù)計算任務或表,其重要程度如何,是否還有下游在使用,是否可以下線;阿里巴巴有這么多數(shù)據(jù)產品,都依賴哪些MaxCompute表,對這些MaxCompute表是否需要根據(jù)應用的重要程度進行資源、運維保障。

對于這些問題,我們都可以通過元數(shù)據(jù)血緣來分析產品及應用的鏈路,通過血緣鏈路可以清楚地統(tǒng)計到某個產品所用到的數(shù)據(jù)在計算、存儲、質量上存在哪些問題,通過治理優(yōu)化保障產品數(shù)據(jù)的穩(wěn)定性。

通過應用鏈路分析,產出表級血緣、字段血緣和表的應用血緣。其中表級血緣主要有兩種計算方式:一種是通過MaxCompute任務日志進行解析;一種是根據(jù)任務依賴進行解析。

常見的應用鏈路分析應用主要有影響分析、重要性分析、下線分析、鏈路分析、尋根溯源、故障排查等。

12.2.4 數(shù)據(jù)建模

傳統(tǒng)的數(shù)據(jù)倉庫建模一般采用經驗建模的方式,效率較低且不準確?;诂F(xiàn)有底層數(shù)據(jù)已經有下游使用的情況,我們可以通過下游所使用的元數(shù)據(jù)指導數(shù)據(jù)參考建模。通過元數(shù)據(jù)驅動的數(shù)據(jù)倉庫模型建設,可以在一定程度上解決此問題,提高數(shù)據(jù)倉庫建模的數(shù)據(jù)化指導,提升建模效率。

  • 數(shù)據(jù)模型建設

基于下游使用中關聯(lián)次數(shù)大于某個闊值的表或查詢次數(shù)大于某個闡值的表等元數(shù)據(jù)信息,篩選用于數(shù)據(jù)模型建設的表。

  • 業(yè)務過程標識

基于表的字段元數(shù)據(jù),如字段中的時間字段、字段在下游使用中的過濾次數(shù)等,選擇業(yè)務過程標識字段。

  • 關聯(lián)從表

基于主從表的關聯(lián)關系、關聯(lián)次數(shù),確定和主表關聯(lián)的從表。

  • 目標模型

基于主從表的字段使用情況,如字段的查詢次數(shù)、過濾次數(shù)、關聯(lián)次數(shù)、聚合次數(shù)等,確定哪些字段進入目標模型。

12.2.5 驅動ETL開發(fā)

可以通過DataProfile得到數(shù)據(jù)的下游任務依賴情況、最近被讀寫的次數(shù)、數(shù)據(jù)是否可再生、每天消耗的存儲計算等,這些信息足以讓我們判斷數(shù)據(jù)是否可以下線;如果根據(jù)一些規(guī)則判斷可以下線,則會通過OneClick觸發(fā)一個數(shù)據(jù)下線的工作任務流,數(shù)據(jù)Owner可能只需要點擊提交按鈕,刪除數(shù)據(jù)、刪除元數(shù)據(jù)、下線調度任務、下線DQC監(jiān)控等一系列操作就會自動在后臺執(zhí)行完成。

第13章 計算管理

目前內部MaxCompute集群上有200多萬個任務,每天存儲資源、計算資源消耗都很大。如何降低計算資源的消耗,提高任務執(zhí)行的性能,提升任務產出的時間,是計算平臺和ETL開發(fā)工程師孜孜追求的目標。

13.1 系統(tǒng)優(yōu)化

Hadoop等分布式計算系統(tǒng)評估資源的方式,一般是根據(jù)輸入數(shù)據(jù)量進行靜態(tài)評估,Map任務用于處理輸入,對于普通的Map任務,評估一般符合預期:而對于Reduce任務,其輸入來自于Map的輸出,但一般只能根據(jù)Map任務的輸入進行評估,經常和實際需要的資源數(shù)相差很大,所以在任務穩(wěn)定的情況下,可以考慮基于任務的歷史執(zhí)行情況進行資源評估,即采用HBO(History-Based Optimizer,基于歷史的優(yōu)化器)。

13.2 任務優(yōu)化

主要從數(shù)據(jù)傾斜方面進行數(shù)據(jù)優(yōu)化。

13.2.1 Map傾斜

Map端是MR任務的起始階段,Map端的主要功能是從磁盤中將數(shù)據(jù)讀入內存,在Map端讀數(shù)據(jù)時,由于讀入數(shù)據(jù)的文件大小分布不均勻,因此會導致有些MapInstance讀取并且處理的數(shù)據(jù)特別多,而有些MapInstance處理的數(shù)據(jù)特別少,造成Map端長尾。

以下兩種情況可能會導致Map端長尾:

  • 上游表文件的大小特別不均勻,并且小文件特別多,導致當前表Map端讀取的數(shù)據(jù)分布不均勻,引起長尾。

可通過對上游合并小文件,同時調節(jié)本節(jié)點的小文件的參數(shù)來進行優(yōu)化。

  • Map端做聚合時,由于某些MapInstance讀取文件的某個值特別多而引起長尾,主要是指CountDistinct操作。

針對這種情況,可以使用“distribute by rand()”來打亂數(shù)據(jù)分布,使數(shù)據(jù)盡可能分布均勻。

通過“distribute by rand()”會將Map端分發(fā)后的數(shù)據(jù)重新按照隨機值再進行一次分發(fā)。原先不加隨機分發(fā)函數(shù)時,Map階段需要與使用MapJoin的小表進行笛卡兒積操作,Map端完成了大小表的分發(fā)和笛卡兒積操作。使用隨機分布函數(shù)后,Map端只負責數(shù)據(jù)的分發(fā),不再有復雜的聚合或者笛卡兒積操作,因此不會導致Map端長尾。

(代碼略)

Map端長尾的根本原因是由于讀入的文件塊的數(shù)據(jù)分布不均勻,再加上UDF函數(shù)性能、Join、聚合操作等,導致讀人數(shù)據(jù)量大的Maplnstance耗時較長。在開發(fā)過程中如果遇到Map端長尾的情況,首先考慮如何讓MapInstance讀取的數(shù)據(jù)量足夠均勻,然后判斷是哪些操作導致MapInstance比較慢,最后考慮這些操作是否必須在Map端完成,在其他階段是否會做得更好。

13.2.2 Join傾斜

MaxComputeSQL在Join執(zhí)行階段會將JoinKey相同的數(shù)據(jù)分發(fā)到同一個執(zhí)行Instance上處理。如果某個Key上的數(shù)據(jù)量比較大,則會導致該Instance執(zhí)行時間較長。其表現(xiàn)為:在執(zhí)行日志中該JoinTask的大部分Instance都已執(zhí)行完成,但少數(shù)幾個Instance一直處于執(zhí)行中(這種現(xiàn)象稱之為長尾)。

因為數(shù)據(jù)傾斜導致長尾的現(xiàn)象比較普遍,嚴重影響任務的執(zhí)行時間,尤其是在“雙11”等大型活動期間,長尾程度比平時更嚴重。比如某些大型店鋪的PV遠遠超過一般店鋪的PV,當用瀏覽日志數(shù)據(jù)和賣家維表關聯(lián)時,會按照賣家ID進行分發(fā),導致某些大賣家所在Instance處理的數(shù)據(jù)量遠遠超過其他Instance,而整個任務會因為這個長尾的Instance遲遲無法結束。

三種常見的傾斜場景:

  • Join的某路輸入比較小

可以采用MapJoin,避免分發(fā)引起長尾。

  • Join的每路輸入都較大,且長尾是空值導致的

可以將空值處理成隨機值,避免聚集。

  • Join的每路輸入都較大,且長尾是熱點值導致的

可以對熱點值和非熱點值分別進行處理,再合并數(shù)據(jù)。

13.2.3 Reduce傾斜

Reduce端負責的是對Map端梳理后的有序key-value鍵值對進行聚合,即進行Count、Sum、Avg等聚合操作,得到最終聚合的結果。

Distinct是MaxComputeSQL中支持的語法,用于對字段去重。比如計算在某個時間段內支付買家數(shù)、訪問UV等,都是需要用Distinct進行去重的。

MaxCompute中Distinct的執(zhí)行原理是將需要去重的字段以及GroupBy字段聯(lián)合作為key將數(shù)據(jù)分發(fā)到Reduce端。

因為Distinct操作,數(shù)據(jù)無法在Map端的Shuffle階段根據(jù)GroupBy先做一次聚合操作,以減少傳輸?shù)臄?shù)據(jù)量,而是將所有的數(shù)據(jù)都傳輸?shù)絉educe端,當key的數(shù)據(jù)分發(fā)不均勻時,就會導致Reduce端長尾。

Reduce端產生長尾的主要原因就是key的數(shù)據(jù)分布不均勻。比如有些Reduce任務Instance處理的數(shù)據(jù)記錄多,有些處理的數(shù)據(jù)記錄少,造成Reduce端長尾。

如下幾種情況會造成Reduce端長尾:

  • 對同一個表按照維度對不同的列進行Count Distinct操作,造成Map端數(shù)據(jù)膨脹,從而使得下游的Join和Reduce出現(xiàn)鏈路上的長尾。

  • Map端直接做聚合時出現(xiàn)key值分布不均勻,造成Reduce端長尾。

可以對熱點key進行單獨處理,然后通過“Union All”合并。

  • 動態(tài)分區(qū)數(shù)過多時可能造成小文件過多,從而引起Reduce端長尾。

可以把符合不同條件的數(shù)據(jù)放到不同的分區(qū),避免通過多次“InsertOverwrite”寫人表中,特別是分區(qū)數(shù)比較多時,能夠很好地簡化代碼。

但是動態(tài)分區(qū)也有可能會帶來小文件過多的困擾。

MaxCompute對動態(tài)分區(qū)的處理是引人額外一級的Reduce Task,把相同的目標分區(qū)交由同一個(或少量幾個)Reduce Instance來寫入,避免小文件過多,并且這個Reduce肯定是最后一個ReduceTask操作。

  • 多個Distinct同時出現(xiàn)在一段SQL代碼中時,數(shù)據(jù)會被分發(fā)多次,不僅會造成數(shù)據(jù)膨脹N倍,還會把長尾現(xiàn)象放大N倍。

在7天、30天等時間范圍內,分PC端、無線端、所有終端,計算支付買家數(shù)和支付商品數(shù),其中支付買家數(shù)和支付商品數(shù)指標需要去重。因為需要根據(jù)日期、終端等多種條件組合對買家和商品進行去重計算,因此有12個Count Distinct計算。在計算過程中會根據(jù)12個組合key分發(fā)數(shù)據(jù)來統(tǒng)計支付買家數(shù)和支付商品數(shù)。這樣做使得節(jié)點運行效率變低。

針對上面的問題,可以先分別進行查詢,執(zhí)行GroupBy原表粒度+ buyer_id,計算出PC端、無線端、所有終端以及在7天、30天等統(tǒng)計口徑下的buyer_id(這里可以理解為買家支付的次數(shù)),然后在子查詢外GroupBy原表粒度,當上一步的Count值大于0時,說明這一買家在這個統(tǒng)計口徑下有過支付,計人支付買家數(shù),否則不計入。計算支付商品數(shù)采用同樣的處理方式。最后對支付商品數(shù)和支付買家數(shù)進行Join操作。

(代碼略)

對MultiDistinct的思考如下:

  • 上述方案中如果出現(xiàn)多個需要去重的指標,那么在把不同指標Join在一起之前,一定要確保指標的粒度是原始表的數(shù)據(jù)粒度。

比如支付買家數(shù)和支付商品數(shù),在子查詢中指標粒度分別是:原始表的數(shù)據(jù)粒度+buyer_id和原始表的數(shù)據(jù)粒度+item_id,這時兩個指標不是同一數(shù)據(jù)粒度,所以不能Join,需要再套一層代碼,分別把指標GroupBy到“原始表的數(shù)據(jù)粒度”,然后再進行Join操作。

  • 修改前的MultiDistinct代碼的可讀性比較強,代碼簡潔,便于維護;修改后的代碼較為復雜。

當出現(xiàn)的Distinct個數(shù)不多、表的數(shù)據(jù)量也不是很大、表的數(shù)據(jù)分布較均勻時,不使用MultiDistinct的計算效果也是可以接受的。

所以,在性能和代碼簡潔、可維護之間需要根據(jù)具體情況進行權衡。另外,這種代碼改動還是比較大的,需要投入一定的時間成本,因此可以考慮做成自動化,通過檢測代碼、優(yōu)化代碼自動生成將會更加方便。

  • 當代碼比較臃腫時,也可以將上述子查詢落到中間表里,這樣數(shù)據(jù)模型更合理、復用性更強、層次更清晰。

當需要去除類似的多個Distinct時,也可以查一下是否有更細粒度的表可用,避免重復計算。

目前Reduce端數(shù)據(jù)傾斜很多是由Count Distinct問題引起的,因此在ETL開發(fā)工作中應該予以重視Count Distinct問題,避免數(shù)據(jù)膨脹。對于一些表的Join階段的Null值問題,應該對表的數(shù)據(jù)分布要有清楚的認識,在開發(fā)時解決這個問題。

第14章 存儲和成本管理

如何有效地降低存儲資源的消耗,節(jié)省存儲成本,將是存儲管理孜孜追求的目標。

14.1 數(shù)據(jù)壓縮

14.2 數(shù)據(jù)重分布

在MaxCompute中主要采用基于列存儲的方式,由于每個表的數(shù)據(jù)分布不同,插人數(shù)據(jù)的順序不一樣,會導致壓縮效果有很大的差異,因此通過修改表的數(shù)據(jù)重分布,避免列熱點,將會節(jié)省一定的存儲空間。

目前我們主要通過修改distributeby和sortby字段的方法進行數(shù)據(jù)重分布。

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

阿里巴巴數(shù)據(jù)倉庫在資源管理的過程中,經過不斷地實踐,慢慢摸索出一套適合大數(shù)據(jù)的存儲優(yōu)化方法,在元數(shù)據(jù)的基礎上,診斷、加工成多個存儲治理優(yōu)化項。

目前已有的存儲治理優(yōu)化項有未管理表、空表、最近62天未訪問表、數(shù)據(jù)無更新無任務表、數(shù)據(jù)無更新有任務表、開發(fā)庫數(shù)據(jù)大于1OOGB且無訪問表、長周期表等。

通過對該優(yōu)化項的數(shù)據(jù)診斷,形成治理項,治理項通過流程的方式進行運轉、管理,最終推動各個ETL開發(fā)人員進行操作,優(yōu)化存儲管理,并及時回收優(yōu)化的存儲效果。在這個體系下,形成現(xiàn)狀分析、問題診斷、管理優(yōu)化、效果反饋的存儲治理項優(yōu)化的閉環(huán)。通過這個閉環(huán),可以有效地推進數(shù)據(jù)存儲的優(yōu)化,降低存儲管理的成本。

14.4 生命周期管理

生命周期管理的根本目的就是用最少的存儲成本來滿足最大的業(yè)務需求,使數(shù)據(jù)價值最大化。

管理策略:

  • 周期性刪除策略

所存儲的數(shù)據(jù)都有一定的有效期,從數(shù)據(jù)創(chuàng)建開始到過時,可以周期性刪除X天前的數(shù)據(jù)。

  • 徹底刪除策略

無用表數(shù)據(jù)或者ETL過程產生的臨時數(shù)據(jù),以及不需要保留的數(shù)據(jù),可以進行及時刪除,包括刪除元數(shù)據(jù)。

  • 永久保留策略

重要且不可恢復的底層數(shù)據(jù)和應用數(shù)據(jù)需要永久保留。

比如底層交易的增量數(shù)據(jù),出于存儲成本與數(shù)據(jù)價值平衡的考慮,需要永久保留,用于歷史數(shù)據(jù)的恢復與核查。

  • 極限存儲策略

極限存儲可以超高壓縮重復鏡像數(shù)據(jù),通過平臺化配置手段實現(xiàn)透明訪問;缺點是對數(shù)據(jù)質量要求非常高,配置與維護成本比較高,建議一個分區(qū)有超過5GB的鏡像數(shù)據(jù)(如商品維表、用戶維表)就使用極限存儲。

  • 冷數(shù)據(jù)管理策略

冷數(shù)據(jù)管理是永久保留策略的擴展。永久保留的數(shù)據(jù)需要遷移到冷數(shù)據(jù)中心進行永久保存,同時將MaxCompute中對應的數(shù)據(jù)刪除。

一般將重要且不可恢復的、占用存儲空間大于lOOTB,且訪問頻次較低的數(shù)據(jù)進行冷備,例如3年以上的日志數(shù)據(jù)。

  • 增量表merge全量表策略

對于某些特定的數(shù)據(jù),極限存儲在使用性與存儲成本方面的優(yōu)勢不是很明顯,需要改成增量同步與全量merge的方式,對于對應的delta增量表的保留策略,目前默認保留93天。

例如,交易增量數(shù)據(jù),使用訂單創(chuàng)建日期或者訂單結束日期作為分區(qū),同時將未完結訂單放在最大分區(qū)中,對于存儲,一個訂單在表里只保留一份;對于用戶使用,通過分區(qū)條件就能查詢某一段時間的數(shù)據(jù)。

管理矩陣:

  • 歷史數(shù)據(jù)等級劃分

對歷史數(shù)據(jù)進行重要等級的劃分。

  • 表類型劃分

劃分為事件型流水表(增量表)、事件型鏡像表(增量表)、維表、Merge全量表、ETL臨時表、TT臨時數(shù)據(jù)、普通全量表等。

14.5 數(shù)據(jù)成本計量

在計量數(shù)據(jù)表的成本時,除考慮數(shù)據(jù)表本身的計算成本、存儲成本外,還要考慮對上游數(shù)據(jù)表的掃描帶來的掃描成本。

我們將數(shù)據(jù)成本定義為存儲成本、計算成本和掃描成本三個部分。

通過在數(shù)據(jù)成本計量中引人掃描成本的概念,可以避免僅僅將表自身硬件資源的消耗作為數(shù)據(jù)表的成本,以及對數(shù)據(jù)表成本進行分析時,孤立地分析單獨的一個數(shù)據(jù)表,能夠很好地體現(xiàn)出數(shù)據(jù)在加工鏈路中的上下游依賴關系,使得成本的評估盡量準確、公平、合理。

14.6 數(shù)據(jù)使用計費

對于數(shù)據(jù)表的使用計費,分別依據(jù)這三部分成本進行收費,稱為:計算付費、存儲付費和掃描付費。

把數(shù)據(jù)資產的成本管理分為數(shù)據(jù)成本計量和數(shù)據(jù)使用計費兩個步驟。通過成本計量,可以比較合理地評估出數(shù)據(jù)加工鏈路中的成本,從成本的角度反映出在數(shù)據(jù)加工鏈路中是否存在加工復雜、鏈路過長、依賴不合理等問題,間接輔助數(shù)據(jù)模型優(yōu)化,提升數(shù)據(jù)整合效率;通過數(shù)據(jù)使用計費,可以規(guī)范下游用戶的數(shù)據(jù)使用方法,提升數(shù)據(jù)使用效率,從而為業(yè)務提供優(yōu)質的數(shù)據(jù)服務。

第15章 數(shù)據(jù)質量

數(shù)據(jù)質量是數(shù)據(jù)分析結論有效性和準確性的基礎,也是這一切的前提。

15.1 數(shù)據(jù)質量保障原則

  • 完整性

指數(shù)據(jù)的記錄和信息是否完整,是否存在缺失的情況。

數(shù)據(jù)的缺失主要包括記錄的缺失和記錄中某個字段信息的缺失,兩者都會造成統(tǒng)計結果不準確,所以說完整性是數(shù)據(jù)質量最基礎的保障。

  • 準確性

準確性是指數(shù)據(jù)中記錄的信息和數(shù)據(jù)是否準確,是否存在異常或者錯誤的信息。

  • 一致性

一般體現(xiàn)在跨度很大的數(shù)據(jù)倉庫體系中,比如阿里巴巴數(shù)據(jù)倉庫,內部有很多業(yè)務數(shù)據(jù)倉庫分支,對于同一份數(shù)據(jù),必須保證一致性。(必須都是同一種類型,長度也需要保持一致)

所以,才有了公共層的加工,以確保數(shù)據(jù)的一致性。

  • 及時性

在確保數(shù)據(jù)的完整性、準確性和一致性后,接下來就要保障數(shù)據(jù)能夠及時產出,這樣才能體現(xiàn)數(shù)據(jù)的價值。

一般決策支持分析師都希望當天就能夠看到前一天的數(shù)據(jù),而不是等三五天才能看到某一個數(shù)據(jù)分析結果;否則就已經失去了數(shù)據(jù)及時性的價值,分析工作變得毫無意義。現(xiàn)在對時間要求更高了,越來越多的應用都希望數(shù)據(jù)是小時級別或者實時級別的。

15.2 數(shù)據(jù)質量萬法概述

  • 消費場景知曉

通過數(shù)據(jù)資產等級和基于元數(shù)據(jù)的應用鏈路分析解決消費場景知曉的問題。

根據(jù)應用的影響程度,確定資產等級;根據(jù)數(shù)據(jù)鏈路血緣,將資產等級上推至各數(shù)據(jù)生產加工的各個環(huán)節(jié),確定鏈路上所涉及數(shù)據(jù)的資產等級和在各加工環(huán)節(jié)上根據(jù)資產等級的不同所采取的不同處理方式。

  • 數(shù)據(jù)生產加工各個環(huán)節(jié)卡點校驗

主要包括在線系統(tǒng)(OLTP)和離線系統(tǒng)(OLAP)數(shù)據(jù)生產加工各個環(huán)節(jié)的卡點校驗。

  • 風險點監(jiān)控

針對在數(shù)據(jù)日常運行過程中可能出現(xiàn)的數(shù)據(jù)質量和時效等問題進行監(jiān)控,并設置報警機制,包括在線數(shù)據(jù)和離線數(shù)據(jù)的風險點監(jiān)控兩個方面。

  • 質量衡量

對質量的衡量既有事前的衡量,如DQC覆蓋率;又有事后的衡量,主要用于跟進質量問題,確定質量問題原因、責任人、解決情況等,并用于數(shù)據(jù)質量的復盤,避免類似事件再次發(fā)生。

根據(jù)質量問題對不同等級資產的影響程度,確定其是屬于低影響的事件還是具有較大影響的故障。質量分則是綜合事前和事后的衡量數(shù)據(jù)進行打分。

  • 質量配套工具

針對數(shù)據(jù)質量的各個方面,都有相關的工具進行保證,以提高效能。

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

友情鏈接更多精彩內容