データ基盤
メダリオンアーキテクチャとは?ブロンズ・シルバー・ゴールドの役割
- メダリオンアーキテクチャ
- Databricks
- ブロンズ
- シルバー
- ゴールド
- レイクハウス
- データ品質
- Lakeflow
- エクスペクテーション
- ストリーミングテーブル
- マテリアライズドビュー
- Auto Loader
- Kimball
- ステージング領域
- データマート
- Microsoft Fabric
- プラチナ層
- 基本原則
- dbt
目次
業務のシステムから集めたデータは、そのままでは分析に使いにくい。項目の形式が途中で変わり、同じ注文が二度届き、ありえない値が混じる。とはいえ、届いた時点で整えて集計まで済ませてしまうと、後で整え方の誤りに気づいたときに、元のデータが残っておらず作り直せない。
そこで、データを層に分けて置き、層を進むごとに品質を上げる設計が、データ基盤の製品の文書で勧められている。その代表が、データをブロンズ・シルバー・ゴールドの三つの層に分けて置くメダリオンアーキテクチャである。
ただし、三つの層それぞれに何を置き、何をしてはいけないかは、名前だけからは分からない。この型がどこまで必須なのかや、どこから来たのかも、入門の解説ではあまり書かれない。本稿は、Databricks の文書とブログを中心に、Microsoft・AWS・dbt Labs の文書、Kimball Group の記事、名前の分かる実務者の論考を例に取る。
メダリオンアーキテクチャとは何で、ブロンズ・シルバー・ゴールドの各層は何を受け持ち、Databricks ではどう作り、どこまで従うべき型なのか。
メダリオンアーキテクチャは、データを品質の段階でブロンズ・シルバー・ゴールドの層に分ける設計の型で、各層は原本の保管、検証、業務向けの整形を受け持つが、Databricks 自身も必須とはせず、層の定義は製品ごとに違う。 ブロンズは届いたデータを型を緩めて残し、作り直しの元にする。シルバーは、各レコードを集計せずに表した検証済みの表を少なくとも一つ持つ。ゴールドは業務の目的ごとに、分析しやすい形に整える。Databricks では、取り込み、品質の検査、集計の維持をそれぞれ受け持つ仕組みで層を作れる。層で分ける考え自体は以前からあり、同じ色の名前でも製品によって意味が違うので、名前ではなく、各層が何を受け持つかで設計を判断する必要がある。
注文のデータを三つの層に分けて置く
※ この節の数値は説明のための仮定で、測定値ではありません。
ある通信販売の会社が、注文のシステムから毎日届く注文のファイル(JSON 形式)を分析に使うとする。1 件の注文は、たとえば次のような形をしている。
{"order_id": "A-1001", "item": "Tシャツ", "qty": 2, "amount": 2400, "ordered_at": "2026-10-01T10:15:00"}
まず、素朴なやり方を考える。届いたファイルを読み込むたびに、日別・商品別の売上を計算して表に足していく。この方法は手早いが、ある日、注文のシステムの不具合で同じ注文が二度送られていたと分かったとする。重複を除かずに足した売上は誤っているが、元の注文の行はもう残っていないので、正しい売上を計算し直す手段が無い。
メダリオンアーキテクチャでは、同じデータを三つの層に分けて置く。
- ブロンズの層には、届いたファイルの中身を、ほとんどの項目を文字列のまま、どのファイルから来たかを示す列を足して残す。ある日、注文のシステムが金額を「2,400円」という文字列で送り始めても、文字列として受け取るので、型の違いで取り込みが止まることはなく、データも失われない。
- シルバーの層では、ブロンズのデータを読み、型を数値や日時に直し、同じ注文番号の重複を除き、数量が 0 以下の行のような誤った行をはじく。金額を数値に直せない「2,400円」のような行は別の表に隔離しておき、変換の規則を直したあとでブロンズから作り直す。ここでも集計はせず、1 件の注文を 1 行として持つ。
- ゴールドの層では、シルバーの注文の行から、営業の部門向けに日別・商品別の売上の表を作り、経理の部門向けに、別のファイルで届く返品のデータも同じように層を通したうえで、返品を差し引いた月別の売上の表を作る。
重複の不具合に気づいたときは、シルバーの重複の除き方を直し、残しておいたブロンズのデータからシルバーとゴールドを作り直せばよい。
三つの層に分けたことで、次の三つができるようになる。
- ブロンズに原本を残しておくから、後で整え方の誤りに気づいても作り直せる。
- シルバーに集計しない行を残しておくから、目的の違う複数の集計を、同じ検証済みのデータから作れる。
- 分析者はシルバーとゴールドの表を使い、ブロンズに直接触れないので、届くデータの形式が変わっても、分析に使う表がすぐに壊れることはない。
メダリオンアーキテクチャとは:品質の段階を示す三つの層
Databricks の文書は、メダリオンアーキテクチャを、レイクハウスに置かれたデータの品質を示す一連の層と説明する1。レイクハウスは、データレイクの安い保存先の上で、データウェアハウスのような管理を行う基盤である。同じ文書は、ブロンズ(未加工)、シルバー(検証済み)、ゴールド(エンリッチ、つまり情報を付け加えたもの)という名前が、各層のデータの品質を表すと書く。同じ文書は、この型をマルチホップアーキテクチャ(データが複数の段を順に渡っていく構成)とも呼ぶ。レイクハウスの文書は、データが層を移るにつれて少しずつ整えられる設計の型が、よくメダリオンアーキテクチャと呼ばれると説明している2。
ここで注意したいのは、同じ文書が、メダリオンアーキテクチャに従うことは推奨されるベストプラクティスだが必須ではない、と明記していることである1。層の数も三つに決まってはおらず、設計の基本原則をまとめた Databricks の文書は三つの層を「よくある分け方」として挙げ3、レイクハウスの文書は、各層がさらに一つ以上の層を含みうると書く2。
Databricks は、自社の製品で基盤を作るときの判断の基準を、6つの基本原則にまとめた。その基本原則 1 は、データを階層化(またはマルチホップ)アーキテクチャでキュレーションすることを Databricks にとって重要なベストプラクティスとし、取り込みの層、キュレートされた層、最終の層を挙げている3。ただし、基本原則の文書には「メダリオン」という語は出てこない。本稿は、マルチホップという共通の語を手がかりに、メダリオンアーキテクチャを基本原則 1 の具体的な形と考える。
ブロンズ:届いたデータを原本のまま残す
ブロンズは、データが最初に着地する層である。Databricks の文書によれば、ブロンズは、分析者やデータサイエンティストが直接使うための層ではなく、シルバーの表を作る処理が読むための層である1。届いたデータを忠実に保ち、すべての履歴を残すことで、作り直しと監査を可能にする。
そのため Databricks は、予期しない形式の変化でデータが失われないよう、ほとんどの項目を文字列、VARIANT(形の決まっていないデータを入れる型)、またはバイナリとして持つことを勧めている1。一方で、データの出どころを示す列、たとえば元のファイルの名前を足すことは認めている。
シルバー:検証し、集計しない行を残す
シルバーは、データを検証し、整える層である。Databricks の文書は、取り込みからシルバーの表へ直接書き込むことを勧めない1。直接書き込むと、データの形式の変化や壊れた行のために処理が失敗するからである。シルバーでは、形式の強制、空の値の扱い、重複の除去、遅れて届いたデータの扱い、品質の検査、型の変換、結合といった作業を行う。
シルバーには、各レコードについて、検証済みで集計していない表現を少なくとも一つ必ず持つという決まりがある1。多くの処理が使う集計がシルバーに置かれることもあるが、集計は普通ゴールドに置く。同じ文書は、シルバーを、掘り下げた分析に要る詳細な情報を保った表として分析者が使う層と説明し、大量の履歴データは普通シルバーで参照してゴールドには持たないと書く1。2019 年の Databricks のブログも、一つのシルバーの表を複数のゴールドの表の共通の元にすれば、部門ごとに同じ処理を繰り返さずに済み、同じ指標を部門ごとに少しずつ違えて計算する混乱も避けられると書いている4。別の製品では、dbt の手引きが、早い段階で集計すると、後で必要になる元のデータに戻れなくなると説明している5。
ゴールド:業務の目的に合わせて形を整える
ゴールドは、報告や分析のためにデータを形づくる層である。Databricks の文書は、ゴールドでは次元モデル(売上のような数値の表を、日付や商品といった切り口の表と結びつける形)でデータを組み立てると書く1。ゴールドは業務の領域を表すので、人事、経理、IT のように、目的ごとに複数のゴールドの層を作る利用者もいる。Databricks のマーケティング用の用語集は、Kimball 流のスタースキーマ(数値の表を中心に、切り口の表を星形に並べる形)や、Inmon 流のデータマート(部門や用途ごとに切り出した小さなデータの集まり)がゴールドの層に当てはまると書く6。同じ用語集は、第三正規形(同じ情報を重複して持たないよう表を細かく分ける設計)に近いモデルはシルバーに当てはまるとも書いている。Kimball と Inmon は、データウェアハウスの作り方の二つの流派を代表する人物である。
Databricks で層を作る仕組み
Databricks で層を作るときに使う主な仕組みは、Lakeflow のパイプライン(旧称 Delta Live Tables)にまとまっている7。パイプラインでは、ストリーミングテーブルやマテリアライズドビューといった表を宣言的に(処理の手順ではなく、どんな表がほしいかを)書き、更新の順序や、直前の更新の後に増えた分だけを処理する差分の処理は、パイプラインが自動で受け持つ8。
取り込みには、Auto Loader が使える。Auto Loader は、クラウドのストレージに新しいファイルが届くと、それを差分だけ効率よく処理する9。JSON や CSV のように型の情報を持たない形式では、既定ですべての列を文字列として読む10。これはブロンズを文字列で持つという推奨と合う。
ストリーミングテーブルは、追記されていくデータの各行を一度だけ処理する表で、取り込みや差分の処理に向く。マテリアライズドビューは、元のデータの現在の状態に合うように結果を計算し直す表で、変換や集計に向く8。ただし、ストリーミングテーブルの結合は、結合相手の表が後で変わっても計算し直されない11。結合した結果を常に正しく保ちたいときは、マテリアライズドビューを使う。
品質の検査には、エクスペクテーションを使う。エクスペクテーションは、SQL の条件式で品質の制約を書き、パイプラインを流れるデータを検査する12。条件に合わない行の扱いは三つある。既定の警告では、その行もそのまま書き込む。削除では、その行を書き込む前に捨て、捨てた件数を記録する。失敗では、更新そのものを止め、手で直すまで再処理できない。誤った行を止めずに別の表に隔離する作り方もある。たとえば、数量が 0 以下の注文の行をはじく検査は、シルバーの表に付けるエクスペクテーションとして書ける。
メダリオンの文書の例は、層ごとに、Unity Catalog(Databricks でデータと権限を管理する仕組み)の別のスキーマ(表をまとめる入れ物)である ops.bronze、ops.silver、ops.gold を使っている1。同じ文書は、取り込みの例にストリーミングテーブルを、ゴールドの例にマテリアライズドビューを使っている。ただし、どの層にどの仕組みを使うかを規則として定めてはおらず、パイプラインの仕組みの文書も「メダリオン」や「ブロンズ」という語を使っていない。
費用については、Databricks の文書は、取り込みの頻度で費用を調整するよう書いている1。続けて取り込むと遅れは小さいが費用は高く、決めた時刻に取り込むと費用は低いが遅れは大きい。ただし、数値は示されていない。
層で分ける考えは新しくない
データを裏方の層と利用者に見せる層に分ける考えは、メダリオンアーキテクチャより前からある。Kimball は 2002 年の記事で、データウェアハウスにはまずステージング領域があり、そこで多くの元のシステムからのデータを取り込み、洗い、そろえ、結合してから、利用者に見せる提示の系に渡すと書いた13。そして、ステージング領域の最も重要な条件は、利用者が立ち入れないことだとし、レストランの厨房にたとえた。利用者を入れない点はブロンズと同じだが、データを洗って結合するところまで含む点では、ブロンズとシルバーの作業の両方に当たる。Kimball Group の 2004 年の記事は、Corporate Information Factory と呼ぶ方式では、元のデータを第三正規形の中央のデータウェアハウスに入れ、そこから部門ごとのデータマートを作ると説明している14。
データレイクにも同じ考えがある。AWS の手引きは、個人情報を含まないような機密性のないデータについて、データレイクに少なくとも三つの層、未加工の層、処理途中の層、用途ごとに集計した層を設けるよう勧めている15。個人情報のような機密のデータを扱う場合は、その手前に着地用の層を足し、隠す処理をしてから未加工の層に移すよう書いている。分析のための変換を書くツール dbt の手引きも、元の表と 1 対 1 で対応する staging、目的に応じて組み立てる intermediate、業務の対象をまとめる marts という層を勧め、staging で集計しないよう書いている5。ただし、Kimball のステージング領域は利用者の立ち入らない作業場であり、dbt の staging は軽く整えたモデルなので、同じ「ステージング」でも指す層は違う。
ブロンズ・シルバー・ゴールドという名前は、Databricks のブログで、2019 年 8 月には「マルチホップ」の構成の各層の名前として使われていた4。このブログは機械学習の学習や予測に使う表をゴールドと呼んだが、同じブログは、一つのシルバーの表から、供給網のダッシュボードや取締役会向けの指標のような、部門ごとに用途の違うゴールドの表を作る例も挙げている。「メダリオン」という語は、確認できた範囲では 2020 年 6 月の Databricks のブログが最も古い16。だれが名付けたかを示す一次資料は見つからなかった。
同じ色の名前でも、層の意味は製品ごとに違う
Microsoft Fabric の文書も、メダリオンアーキテクチャを使う。ただし、Fabric の文書はこれを推奨の設計とし、三つの層をブロンズ(生のデータ)、シルバー(エンリッチされたデータ)、ゴールド(キュレーションされたデータ)と定義する17。Databricks は層の名前の言い換えでゴールドを「エンリッチ」と呼ぶが、Fabric はシルバーを「エンリッチ」と呼ぶ。ブロンズについては、Fabric の文書は届いたとおりに保存し変更しないと要約する一方、元の形式のほかに Parquet や Delta Lake で持つことも勧めている17。Databricks も、ブロンズを元の形式のまま生の状態を保つ層とし、そのうえでほとんどの項目を文字列などの緩い型で持つよう勧めている1。ブロンズを元の形のまま残すことを基本にする点では、二つの文書はそろっている。
Databricks の中でも、説明はそろっていない。メダリオンの文書は、ゴールドを「エンリッチ」と言い換える一方、シルバーの説明でも、検証され、整えられ、情報を付け加えられた(enriched)データと書いている1。また、基本原則 1 は 2 番目の層に集計したデータも置くと書くのに対し3、メダリオンの文書は、集計をシルバーに置く場合も認めつつ、集計しない表現を必ず残し、集計は普通ゴールドに置くと書いており、説明の重点が違う1。そのため、「シルバーには何を置くか」といった問いには、色の名前ではなく、各層が何を受け持つかを決めてから答える必要がある。
批判と限界
メダリオンアーキテクチャには、名前の分かる実務者からの批判がある。Beach は 2025 年の記事で、メダリオンアーキテクチャの有無にかかわらずレイクハウスはうまく運用できるとし、この名前はマーケティングの言葉にすぎないと書いた18。彼によれば、ゴールドと呼ばれるものは、実際にはデータマートである。
Packkildurai は同じ年の記事で、メダリオンアーキテクチャがチームに共通の語彙を与えると評価する一方、ゴールドの変換を待つ遅れを許さない用途もあるとして、プラチナ層を加えることを提案した19。プラチナ層は、不正の即時の検出のような用途のために、ブロンズ、シルバー、ゴールドのどこからでもデータを読むことがある。また、業務の指標をシルバーで作ると、チームごとに指標の定義が割れると注意している。
データを製品として扱う設計を唱える Kumar らは、2025 年の記事で、メダリオンアーキテクチャは業務の領域や用途ではなく変換の段階だけでデータを分けており、データを製品ではなく流れ作業として扱うと批判した20。層ごとにデータの写しを持つので、保存の費用も増えると書いている。
これらはいずれも意見であり、測定ではない。arXiv と Crossref を検索した範囲では、メダリオンアーキテクチャを他の設計と比べて、費用やデータの品質への効果を測った論文は見当たらなかった(本文を取得できなかった会議論文が 1 本ある)。arXiv の論文の中には、メダリオンアーキテクチャを「データウェアハウスの標準」と呼ぶものもあるが21、査読を経ていない単著の論文で、この型の出どころとして挙げるのは Databricks のブログである。同じ論文は、シルバーの構造と設計には広く受け入れられた標準が無いとも書いている。
出典21件
-
Databricks「What is the medallion lakehouse architecture?」2026年10月8日取得. https://docs.databricks.com/aws/en/lakehouse/medallion — 各層の役割、推奨だが必須ではないこと、取り込み頻度と費用(日本語版「メダリオンレイクハウスアーキテクチャとは」)。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Databricks「What is a data lakehouse?」2026年10月8日取得. https://docs.databricks.com/aws/en/lakehouse/ — 層を移りながら整える型がメダリオンと呼ばれる。 ↩ ↩2
-
Databricks「Guiding principles」2026年10月8日取得. https://docs.databricks.com/aws/en/lakehouse-architecture/guiding-principles — 原則1の階層化(マルチホップ)と三つの層。「メダリオン」の語は無い。 ↩ ↩2 ↩3
-
Heintz, Lee「Productionizing Machine Learning with Delta Lake」Databricks Blog, 2019. https://www.databricks.com/blog/2019/08/14/productionizing-machine-learning-with-delta-lake.html — Bronze/Silver/Gold を multi-hop と呼んだ。 ↩ ↩2
-
dbt Labs「Staging: Preparing our atomic building blocks」2026年10月8日取得. https://docs.getdbt.com/best-practices/how-we-structure/2-staging — staging は元の表と1対1で、集計しない。 ↩ ↩2
-
Databricks「Medallion Architecture」用語集, 2022. https://www.databricks.com/glossary/medallion-architecture — ゴールドに Kimball 流のスタースキーマや Inmon 流のデータマートが当てはまる。 ↩
-
Databricks「What happened to Delta Live Tables (DLT)?」2026年10月7日取得. https://docs.databricks.com/aws/en/ldp/concepts/where-is-dlt — Delta Live Tables は Lakeflow のパイプラインに改められた。 ↩
-
Databricks「What are Lakeflow pipelines?」2026年10月8日取得. https://docs.databricks.com/aws/en/ldp/concepts — ストリーミングテーブルとマテリアライズドビューの違い。 ↩ ↩2
-
Databricks「What is Auto Loader?」2026年10月8日取得. https://docs.databricks.com/aws/en/ingestion/cloud-object-storage/auto-loader/ — 届いた新しいファイルを差分で処理する。 ↩
-
Databricks「Configure schema inference and evolution in Auto Loader」2026年10月8日取得. https://docs.databricks.com/aws/en/ingestion/cloud-object-storage/auto-loader/schema — 型を持たない形式は全列を文字列として読む。 ↩
-
Databricks「Streaming tables」2026年10月8日取得. https://docs.databricks.com/aws/en/ldp/streaming-tables — 結合は相手の表が変わっても再計算されない。 ↩
-
Databricks「Manage data quality with pipeline expectations」2026年10月8日取得. https://docs.databricks.com/aws/en/ldp/expectations — SQL の条件式による検査と、警告・削除・失敗の三つの扱い。 ↩
-
Kimball「Two Powerful Ideas」Kimball Group, 2002. https://www.kimballgroup.com/2002/09/two-powerful-ideas/ — ステージング領域の役割と、利用者が立ち入れない厨房のたとえ。 ↩
-
Ross「Differences of Opinion」Kimball Group, 2004. https://www.kimballgroup.com/2004/03/differences-of-opinion/ — Kimball 側から見た Corporate Information Factory の方式(中央の第三正規形からデータマートへ)。 ↩
-
AWS「Recommended data layers」Prescriptive Guidance, 2026年10月8日取得. https://docs.aws.amazon.com/prescriptive-guidance/latest/defining-bucket-names-data-lakes/data-layer-definitions.html — データレイクに最低三つの層。 ↩
-
Ng, Christine「Monitor Your Databricks Workspace with Audit Logs」Databricks Blog, 2020. https://www.databricks.com/blog/2020/06/02/monitor-your-databricks-workspace-with-audit-logs.html — 確認できた最古の “medallion”。 ↩
-
Microsoft「Implement Medallion Lakehouse Architecture in Fabric」2026. https://learn.microsoft.com/en-us/fabric/onelake/onelake-medallion-lakehouse-architecture — Fabric の推奨。シルバー=エンリッチ、ゴールド=キュレーション。ブロンズは変更しないと要約しつつ、Parquet や Delta Lake での保存も勧める。 ↩ ↩2
-
Beach「Medallion Architecture. Truth or Fiction?」Data Engineering Central, 2025. https://dataengineeringcentral.substack.com/p/medallion-architecture-truth-or-fiction — マーケティングの言葉だという意見。書き手は自身を長年のデータエンジニアと紹介している。 ↩
-
Packkildurai「Revisiting Medallion Architecture」Data Engineering Weekly, 2025. https://www.dataengineeringweekly.com/p/revisiting-medallion-architecture — 共通の語彙という評価と、プラチナ層の提案。書き手はニュースレター Data Engineering Weekly の著者。 ↩
-
Kumar, Jain, Ghosh「Data Products: A Case Against Medallion Architecture」Modern Data 101, 2025. https://moderndata101.substack.com/p/data-products-a-case-against-medallion — 変換の段階で分けることへの批判。媒体の紹介頁は、運営者の一部がデータ基盤 DataOS を作り、Kumar が CTO だと書く。 https://moderndata101.substack.com/about ↩
-
Salami「Hub Star Modeling 2.0 for Medallion Architecture」arXiv:2504.08788, 2025. https://arxiv.org/abs/2504.08788 — メダリオンを標準と呼ぶ査読前の論文。 ↩
この記事はAIが執筆しています。内容には誤りが含まれる可能性があります。ご注意ください。