在 DAY2 知識之章-理解資料本源 與 DAY6 知識之章-儲存的基石 Amazon S3 中,我們分別介紹了本系列所使用的資料檔案和 S3 的儲存機制。
本篇要進一步來說明如何在 AWS S3 上設計 Bronze → Silver → Gold 的完整流程。
在開始設計我們的 Data Lake 之前,我們要先來了解一下 Medallion 架構。
Medallion 架構 (Medallion Architecture) 是由 Databricks 推廣的一種 資料湖倉 (Lakehouse) 分層設計模式,核心理念是透過 多層精煉 (multi-hop refinement),讓資料的品質隨著層級逐步提升,最終能提供可靠的數據給分析、BI 和機器學習使用。
它通常分為三層:
根據以上的介紹我們初步理解了 Databricks 推廣的 Medallion 架構,請特別注意,Medallion 架構「不是」強制規範,而是一種分層模式,企業可依資料性質與應用需求,調整層數與命名方式。
接著就讓我們來看看 Anime Data Lake 該怎麼設計吧!
我們將參考 Medallion 架構設計,來規劃以下內容。
我們會建立兩個 Bronze folder:animes
與 ratings
,並依照日期自動分區。
s3://anime-lake/bronze/animes/year=YYYY/month=MM/day=DD/animes.csv
s3://anime-lake/bronze/ratings/year=YYYY/month=MM/day=DD/ratings.csv
s3://anime-lake/bronze/animes/animes_20250926.csv
s3://anime-lake/bronze/ratings/ratings_20250926.csv
s3://anime-lake/bronze/animes/year=2025/month=09/day=26/animes.csv
s3://anime-lake/bronze/ratings/year=2025/month=09/day=26/ratings.csv
在 Bronze → Silver 的轉換過程,我們有兩種設計模式可以選擇,取決於資料性質。
s3://anime-lake/silver/ratings/year=2025/month=09/day=26/ratings.parquet
animeID
作為主鍵,與 Silver 既有表格做 merge/upsert。animes
永遠是最新狀態。s3://anime-lake/silver/animes/animes.parquet
由於我們的資料可能是會被使用者做更新的,故我們選擇模式B Merge/Upsert 來處理 Silver 層的資料。
我們後續將使用 Glue Jobe (PySpark) 來進行建表和處理。
Silver 資料經過清洗後,就可以進一步轉換成 Gold 層,提供 BI 報表 / ML 模型訓練。
適合 Dashboard/報表,例如:
gold.top_animes
:最受歡迎動漫gold.anime_avg_rating
:動漫平均分數gold.genres_count
:什麼風格的動漫數量最多透過這樣的設計,我們在 AWS S3 Lakehouse + Medallion 架構中,實現了 可追溯、可清洗、可消費 的完整數據管道。
下篇我們將進入 「DAY13 雲端基礎章-Lambda、EventBridge 概念篇」,來簡單的介紹一下 Lambda + EventBridge 可以解決那些問題。
[1] Medallion 架構 (Medallion Architecture)
[2] Databricks