本文屬于【Azure 架構師學習筆記】系列。
本文屬于【Azure Databricks】系列。
接上文 【Azure 架構師學習筆記】- Azure Databricks (11) – UC搭建
前言
使用ADB 或者數據湖,基本上繞不開一個架構“Medallion”, 它使得數據管理更為簡單有效。ADB 通過把數據分為“金”,“銀”,“銅” 三層來實現Medallion架構。同時搭配UC,使得medallion更加健壯,安全和合規。
除了Medallion, 還有一些概念如data warehouse, data lake, 和data lakehouse。
- Data lake: 是一個中央存儲庫,以原始格式存儲任意規模的結構化和非結構化數據。與傳統存儲相比,這樣可以減少很多前期轉換開銷。其核心優勢之一就是靈活性,另外還有對大量大數據處理工具的支持。
- Data lakehouse:跟data lake的名字非常相似,在data lake中的數據,在展現給最終用戶前,通常都需要進行處理。 但是data lake的目標是存儲,而非處理。data warehouse可以提供處理,但需要預先范式化、模式化再存儲,同時存儲的量一般有限。基于這兩種不足,最好的辦法就是優勢整合,保留data lake的強大存儲功能和data warehouse的數據處理功能,從而出現了data lakehouse。
- ETL/ELT:兩者區別在于先轉換然后存儲(TL)還是先存儲再轉換(LT)。ETL 往往需要先轉換成預定格式再存儲,隨著數據集成過程的量和速度要求,在大數據領域ETL非常容易出現性能瓶頸,且費用昂貴。而ELT如果搭配lakehouse,則可以很好地平衡性能與開銷。
問題
上面提到了lakehouse和ELT 的好處,但是這更多集中于收集和存儲,那么如何管理和組織數據呢?
傳統的數據倉庫環境,數據通過下圖的流程完整數據準備。
在datalake中,數據以原始格式存儲,但是實際上你需要對數據進行使用,而不是簡單存儲。這種幾乎隨意式的直接存儲很難馬上用于數據使用(主要是分析),因此還是需要進行清晰(clean),轉換(transform)。
由于量大,分析復雜,傳統的數據倉庫處理方式如果直接應用在data lake上,會導致如時間久,資源消耗大,數據組織困難導致結果不準確等情況。這時候Medallion 架構就應運而生。
它為湖倉一體化而定制。主要目標是在從源到最終使用的過程中逐步增加結構和數據質量。
ADB Medallion
下圖是來自于Databricks官網的架構圖,Medallion的核心在于3個層(layer):Bronze,Silver, Gold, 也就是銅、銀、金。 Medallion就是獎牌的意思。
Bronze (銅)
Bronze 層充當外部源系統的數據的初始登陸點。這層的數據反映了原始狀態的源系統結構,并帶有元數據信息,如加載日期/時間和進程 ID。這層的管理重點是變更數據捕獲,支持源數據的歷史存檔,維護數據血緣,還有審計跟蹤,并允許在必要時進行重新處理,而無需從源系統重新讀取。
Silver (銀)
下一層是 Silver 層。在這層中,來自 Bronze 層的數據經過一系列作,達到 一種叫做“Just-enough” 狀態。提供包含基本業務實體、概念和事務的 “企業視圖”。
Gold (金)
最后一層是 Gold 層。Gold 層中的數據通常被結構化到特定于主題領域的數據庫中,以供使用。此層專用于報告,并采用非規范化、讀取優化的數據模型,具有最少的聯接。它是應用數據轉換和質量規則的最終階段。
在這三層里面, 銅是原始存儲外加元數據信息,金是最終用于展示的數據集,跟傳統的數據倉庫類似。重點在于銀這一層。
這一層是轉換后的數據, 它存儲了不同源系統數據轉換成統一視圖后的結果。但是之所以叫做“Just-enough”,是因為它又并不完全轉換,而是最小轉換,包含:
- 數據清洗,是識別和糾正數據集中的錯誤、不一致和不準確之處以提高其分析和可靠性的過程。這是數據準備過程中的關鍵步驟,通常在數據分析或集成之前執行。涉及的一些常見任務包括:刪除重復項、更正拼寫錯誤、標準化數據格式(尤其是日期和地址)、處理缺失值等。
- 數據驗證:數據驗證是通過各種驗證技術確保數據準確、一致和可靠的過程。它通常包括根據已知的質量控制措施驗證數據、確認數據符合公司數據治理策略、通過交叉引用不同的數據源或應用業務規則和邏輯來解決不一致問題、標準化和規范化數據以及處理異常值。
- 數據合規:數據合規是指確保數據符合特定標準、格式或要求的過程。它涉及轉換和標準化數據,以使其與特定數據模型、架構或系統保持一致和兼容。
- 有目的地進行數據匹配:為了提供統一的企業視圖,來自不同來源的數據最終必須進行整合和集成。為了使數據可整合,您必須將來自不同來源的數據匯集在一起,識別和確定不同數據集或來源的記錄之間的關系,并將它們轉換為一致且連貫的格式。
通過這些處理之后, silver中的數據已經變得有意義且可用于后續整合。但是一般來說,數據后進一步處理就不需要在這一層進行了,否則會出現過度預處理,最終使其成為了gold層。
Medallion 是一個設計模式,而不是數據模型,也就是說它更多是一個指引,然后在特定環境中(這主要指云環境)按需實現。比如用ADB+ADLS 來實現。
小結
介紹了什么是Medallion之后,接下來將使用ADB 來實現它。