Skip to content
PHP2Shell: The PHP Bug
Akshay Thakare

Medallion Architecture: Bronze, Silver, Gold

What belongs in each layer, which rules apply where, and how the medallion pattern maps to raw, curated and published zones.

DatabricksBeginner1 min readUpdated 11 Oct 2026

Three layers

LayerContainsRules
BronzeSource data as received, plus ingestion metadataAppend-only, minimal parsing, keep everything
SilverCleaned, typed, deduplicated, conformed entitiesEnforce schema and quality; one row per business key
GoldBusiness aggregates and dimensional modelsShaped for dashboards, ML features and APIs
Plain text.txt
bronze.orders_raw  →  silver.orders  →  gold.daily_sales_by_store

Why it works

  • Replay: Bronze keeps the original data, so Silver and Gold can be rebuilt after a bug fix.
  • Separation: Quality rules live in one place (Silver) instead of in every report.
  • Clear ownership: Data engineers own Bronze and Silver; analytics engineers often own Gold.

Typical Silver step (Delta)

Python.py
(spark.read.table("bronze.orders_raw")
   .filter("order_id IS NOT NULL")
   .withColumn("amount", F.col("amount").cast("decimal(18,2)"))
   .dropDuplicates(["order_id", "updated_at"])
   .write.mode("overwrite").saveAsTable("silver.orders"))

In production, Silver is usually updated incrementally with MERGE rather than overwritten.

Finished this note?

Share