資料倉庫學習筆記(一)
阿新 • • 發佈:2020-06-24
美團OneData數倉
source: tech.meituan.com/2019/10/17/…
Terms
OneData: 阿里巴巴提出的數倉建設標準
摘要
美團基於OneData思想和現有業務架構情況,提出了新的標準和目標:
統一出口:
- 交付標準化
- 資料資產管理:統一維度,指標元資料出口等
基於此,實現了分層模型:
正常開發應遵循ODS-DWD—DWT-DWA-APP的流程,同時根據架構做出 開發規範:
- 正常流向:ODS>DWD->DWT->DWA->APP,當出現ODS >DWD->DWA->APP這種關係時,說明主題域未覆蓋全。應將DWD資料落到DWT中,對於使用頻度非常低的表允許DWD->DWA。 儘量避免出現DWA寬表中使用DWD又使用(該DWD所歸屬主題域)DWT的表。
- 同一主題域內對於DWT生成DWT的表,原則上要儘量避免,否則會影響ETL的效率。
- DWT、DWA和APP中禁止直接使用ODS的表,
- ODS的表只能被DWD引用。
- 禁止出現反向依賴,例如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