來源:數智化轉型俱樂部算法
面對爆炸式增加的數據,如何建設高效的數據模型和體系,對這些數據進行有序和有結構地分類組織和存儲,避免重複建設和數據不一致性,保證數據的規範性,一直是大數據系統建設不斷追求的方向。架構
OneData便是阿里巴巴內部進行數據整合及管理的方法體系和工具。阿里巴巴的大數據工程師在這一體系下,構建統1、規範、可共享的全域數據體系,避免數據的冗餘和重複建設,規避數據煙囪和不一致性,充分發揮阿里巴巴在大數據海量、多樣性方面的獨特優點。藉助這一統一化數據整合及管理的方法體系,咱們構建了阿里巴巴的數據公共層,並能夠幫助類似的大數據項目快速落地實現。下面重點介紹OneData體系和實施方法論。ide
阿里巴巴集團大數據建設方法論的核心是:從業務架構設計到模型設計,從數據研發到數據服務,作到數據可管理、可追溯、可規避重複建設。目前,阿里巴巴集團數據公共層團隊已把這套方法論沉澱爲產品,以幫助數據PD、數據模型師和ETL工程師建設阿里的大數據。這一體系包含方法論以及相關產品。工具
建設統一的、規範化的數據接入層(ODS)和數據中間層(DWD和DWS),經過數據服務和數據產品,完成服務於阿里巴巴的大數據系統建設,即數據公共層建設。提供標準化的(Standard)、共享的(Shared)、數據服務(Service)能力,下降數據互通成本,釋放計算、存儲、人力等資源,以消除業務和技術之痛。性能
體系架構如圖。大數據
業務板塊:因爲阿里巴巴集團業務生態龐大,因此根據業務的屬性劃分出幾個相對獨立的業務板塊,業務板塊之間的指標或業務重疊性較小。如電商業務板塊涵蓋淘系、B2B系和AliExpress系等。ui
規範定義:阿里數據業務龐大,結合行業的數據倉庫建設經驗和阿里數據自身特色,設計出的一套數據規範命名體系,規範定義將會被用在模型設計中。後面章節將會詳細說明。阿里雲
模型設計:以維度建模理論爲基礎,基於維度建模總線架構,構建一致性的維度和事實(進行規範定義)。同時,在落地表模型時,基於阿里自身業務特色,設計出一套表規範命名體系。spa
3.模型設計操作系統
模型設計指導理論:阿里巴巴集團數據公共層設計理念遵循維度建模思想,可參考Star Schema-The Complete Reference和The Data Warehouse Toolkit-The Definitive Guide to Dimensional Modeling。數據模型的維度設計主要以維度建模理論爲基礎,基於維度數據模型總線架構,構建一致性的維度和事實。
模型層次:阿里巴巴的數據團隊把表數據模型分爲三層:操做數據層(ODS)、公共維度模型層(CDM)和應用數據層(ADS),其中公共維度模型層包括明細數據層(DWD)和彙總數據層(DWS)。
操做數據層(ODS):把操做系統數據幾乎無處理地存放在數據倉庫系統中。
同步:結構化數據增量或全量同步到MaxCompute。
結構化:非結構化(日誌)結構化處理並存儲到MaxCompute。
累積歷史、清洗:根據數據業務需求及稽覈和審計要求保存歷史數據、清洗數據。
公共維度模型層(CDM):存放明細事實數據、維表數據及公共指標彙總數據,其中明細事實數據、維表數據通常根據ODS層數據加工生成;公共指標彙總數據通常根據維表數據和明細事實數據加工生成。
CDM層又細分爲DWD層和DWS層,分別是明細數據層和彙總數據層,採用維度模型方法做爲理論基礎,更多地採用一些維度退化手法,將維度退化至事實表中,減小事實表和維表的關聯,提升明細數據表的易用性;同時在彙總數據層,增強指標的維度退化,採起更多的寬表化手段構建公共指標數據層,提高公共指標的複用性,減小重複加工。其主要功能以下。
組合相關和類似數據:採用明細寬表,複用關聯計算,減小數據掃描。
公共指標統一加工:基於OneData體系構建命名規範、口徑一致和算法統一的統計指標,爲上層數據產品、應用和服務提供公共指標;創建邏輯彙總寬表。
創建一致性維度:創建一致的數據分析維表,下降數據計算口徑、算法不統一的風險。
應用數據層(ADS):存放數據產品個性化的統計指標數據,根據CDM層與ODS層加工生成。
個性化指標加工:不公用性、複雜性(指數型、比值型、排名型指標)。
基於應用的數據組裝:大寬表集市、橫錶轉縱表、趨勢指標串。
阿里巴巴經過構建全域的公共層數據,極大地控制了數據規模的增加趨勢,同時在總體的數據研發效率、成本節約、性能改進方面都有不錯的效果。
數據調用服務優先使用公共維度模型層(CDM)數據,當公共層沒有數據時,需評估是否須要建立公共層數據,當不須要建設公用的公共層時,方可直接使用操做數據層(ODS)數據。應用數據層(ADS)做爲產品特有的個性化數據通常不對外提供數據服務,可是ADS做爲被服務方也須要遵照這個約定。
基本原則:高內聚和低耦合——一個邏輯或者物理模型由哪些記錄和字段組成,應該遵循最基本的軟件設計方法論的高內聚和低耦合原則。主要從數據業務特性和訪問特性兩個角度來考慮:將業務相近或者相關、粒度相同的數據設計爲一個邏輯或者物理模型;將高几率同時訪問的數據放一塊兒,將低機率同時訪問的數據分開存儲;
核心模型與擴展模型分離——創建核心模型與擴展模型體系,核心模型包括的字段支持經常使用的核心業務,擴展模型包括的字段支持個性化或少許應用的須要,不能讓擴展模型的字段過分侵入核心模型,以避免破壞核心模型的架構簡潔性與可維護性。
公共處理邏輯下沉及單一——越是底層公用的處理邏輯越應該在數據調度依賴的底層進行封裝與實現,不要讓公用的處理邏輯暴露給應用層實現,不要讓公共邏輯多處同時存在。
成本與性能平衡——適當的數據冗餘可換取查詢和刷新性能,不宜過分冗餘與數據複製。
數據可回滾——處理邏輯不變,在不一樣時間屢次運行數據結果肯定不變。
一致性——具備相同含義的字段在不一樣表中的命名必須相同,必須使用規範定義中的名稱。
命名清晰、可理解——表命名需清晰、一致,表名需易於消費者理解和使用。
如何從具體的需求或項目轉換爲可實施的解決方案,如何進行需求分析、架構設計、詳細模型設計等,則是模型實施過程當中討論的內容。下節會簡單介紹業界經常使用的模型實施過程,重點講解阿里巴巴OneData模型設計理論及實施過程。注:本書中出現的部分專有名詞、專業術語、產品名稱、軟件項目名稱、工具名稱等,是淘寶(中國)軟件有限公司內部項目的慣用詞語,如與第三方名稱雷同,實屬巧合。
原文連接 本文爲阿里雲原創內容,未經容許不得轉載。