メダリオンアーキテクチャについて
Databricksやデータ分析基盤でよく耳にする「メダリオンアーキテクチャ」。
なぜ分けるのかが曖昧だったので勉強も兼ねて整理してみる。
メダリオンアーキテクチャとは?
メダリオンアーキテクチャ(Medallion Architecture)は、データの品質を段階的に向上させながら管理するための設計パターン。
生データをいきなり分析に利用するのではなく、
Raw Data → 整形済みデータ → 業務利用データ
という流れでデータを加工していく。
一般的には以下の3層で構成される。
1. Bronze(ブロンズ)
データをそのまま保存する層。
CSVやAPI、ログなど取得したデータを可能な限り加工せず保存する。
目的は「元データを残すこと」。
万が一加工処理に問題があっても、このデータから再作成できる。
例
- API取得データ
- CSVファイル
- ログデータ
- CDCデータ
2. Silver(シルバー)
分析で利用できる品質までデータを整える層。
ここではデータクレンジングや形式統一などを行う。
例
- NULL値の補正
- 重複データの削除
- データ型の統一
- テーブル同士の結合
多くの分析や機械学習では、このSilver層を利用することが多い。
「クレンジング」と一言で言っているが、マハラノビス距離/Zスコア/IQR法/LOF/k-NNなどなど
方法が様々なようなので、別記事でまとめる。
3. Gold(ゴールド)
業務で直接利用するデータを作る層。
BIツールやダッシュボード、レポートで参照されるデータを配置する。
例
- 月別売上
- KPI
- 顧客別売上
- 商品ランキング
利用者がSQLを書くことなく利用できる状態まで加工されていることが多い。
なぜ3層に分けるの?
一番の目的はデータ品質を段階的に向上させること。
例えばSilverで誤った変換をしてしまった場合でも、Bronzeには元データが残っているため再作成できる。
また、Silverを共通データとして利用することで、複数の分析やAIモデルで同じデータを再利用できる。
結果として
- データ品質の向上
- 保守性の向上
- デバッグのしやすさ
- データの再利用
といったメリットがある。
注意点
メダリオンアーキテクチャは設計パターンであり、物理構成を決めるものではない。
ただし、メダリオンを意識せずに漠然とデータを分けてしまうと
- どれが正式データかわからない
- 不要データが残る
- ガバナンスが低下する
といった問題も発生する。
そのため、各レイヤーや用途ごとの責務を明確にすることが重要になる。
まとめ
メダリオンアーキテクチャは、データ品質を段階的に向上させるための設計パターン。
- Bronze:生データを保持する
- Silver:分析しやすい形へ整形する
- Gold:業務利用向けに加工する
という役割を持つ。
「3層構成」そのものではなく、「データ品質を段階的に高める考え方」として理解するとイメージしやすいかも。
ただ、どうしてもSilverとGoldの境界があいまいな気がしてならない。。。
(GoldからGold作ったりとかはないのかなぁとか思ったり)
実データを見てみないとイメージが沸かない部分もあるので、
いつか公開されてる大量データからDatabricksの試用期間枠で実際に分けてみようと思う。