1. 程式人生 > 程式設計 >資料倉庫學習筆記(一)

資料倉庫學習筆記(一)

美團OneData數倉

source: tech.meituan.com/2019/10/17/…

Terms

OneData: 阿里巴巴提出的數倉建設標準

摘要

美團基於OneData思想和現有業務架構情況,提出了新的標準和目標:

實現方法:統一歸口和出口 統一歸口:業務歸口統一、設計歸口統一和應用歸口統一,從底層保證了數倉建設的三特性和三效果
統一出口:

  1. 交付標準化
  2. 資料資產管理:統一維度,指標元資料出口等

基於此,實現了分層模型:

正常開發應遵循ODS-DWD—DWT-DWA-APP的流程,同時根據架構做出 開發規範:

  1. 正常流向:ODS>DWD->DWT->DWA->APP,當出現ODS >DWD->DWA->APP這種關係時,說明主題域未覆蓋全。應將DWD資料落到DWT中,對於使用頻度非常低的表允許DWD->DWA。 儘量避免出現DWA寬表中使用DWD又使用(該DWD所歸屬主題域)DWT的表。
  2. 同一主題域內對於DWT生成DWT的表,原則上要儘量避免,否則會影響ETL的效率。
  3. DWT、DWA和APP中禁止直接使用ODS的表,
  4. ODS的表只能被DWD引用。
  5. 禁止出現反向依賴,例如DWT的表依賴DWA的表。

美團資料治理平臺

source: tech.meituan.com/2018/12/27/…

建設目的

統一指標的定義、計算方法、資料來源
同時抽象出單一的功能 利於在管理層面對於資料/指標一致性的管理和介入

摘要

整體架構圖:

資料治理平臺架構:

資料平臺的管理流程

美團DB資料同步到數倉的架構與實踐

source: tech.meituan.com/2018/12/06/…

Terms

Binlog:Binlog是MySQL的二進位制日誌,記錄了MySQL中發生的所有資料變更,MySQL叢集自身的主從同步就是基於Binlog做的。

問題背景

業務資料從DB到數倉的方法,最直接的是批量取數並load,但隨著業務擴充套件,會遇到以下問題:

  • 效能瓶頸:隨著業務規模的增長,Select From MySQL -> Save to Localfile -> Load to Hive這種資料流花費的時間越來越長,無法滿足下游數倉生產的時間要求。
  • 直接從MySQL中Select大量資料,對MySQL的影響非常大,容易造成慢查詢,影響業務線上的正常服務。
  • 由於Hive本身的語法不支援更新、刪除等SQL原語,對於MySQL中發生Update/Delete的資料無法很好地進行支援。

解決方案

改為CDC+Merge的方案,即實時Binlog採集 + 離線處理Binlog還原業務資料。 原因是:

首先,Binlog是流式產生的,通過對Binlog的實時採集,把部分資料處理需求由每天一次的批處理分攤到實時流上。無論從效能上還是對MySQL的訪問壓力上,都會有明顯地改善。
第二,Binlog本身記錄了資料變更的型別(Insert/Update/Delete),通過一些語義方面的處理,完全能夠做到精準的資料還原。

Binlog離線採集架構圖

Merge 流程圖

涉及開源專案

阿里巴巴 Canal
LinkdeIn Camus