Lakehouse vs warehouse
Last reviewed: 2026-06-28 — see the freshness policy.
Learning objectives
After this chapter you will be able to:
- Distinguish data lake, data warehouse, and lakehouse — and when each fits HLS.
- Apply the medallion (bronze/silver/gold) pattern to clinical and claims data.
- Choose a modeling style (normalized, dimensional, OMOP) for the gold layer.
Three architectures, one decision
HLS data platforms sit on a spectrum. The choice drives cost, governance, and what analytics are possible.
| Data warehouse | Data lake | Lakehouse | |
|---|---|---|---|
| Stores | Structured, modeled tables | Raw files (any format) | Raw files + ACID tables |
| Schema | On write (rigid) | On read (flexible) | Both |
| Strength | Fast SQL/BI on clean data | Cheap storage of everything | Both, in one place |
| HLS fit | Claims/financial reporting | Genomics, imaging, raw FHIR | RWD, OMOP, ML on mixed data |
| Examples | Snowflake, Redshift, BigQuery | S3/ADLS/GCS | Databricks (Delta), Snowflake (Iceberg) |
The lakehouse has become the default for HLS because the domain mixes petabyte-scale raw data (genomics, DICOM, raw FHIR bundles) with the need for governed, query-ready models (OMOP) — and you do not want to copy data between a separate lake and warehouse. See Databricks and Snowflake for the platform options.
The medallion pattern
The dominant lakehouse layout refines data in stages, so raw data stays auditable and each layer has a clear contract:
flowchart LR
subgraph Bronze["Bronze — raw, immutable"]
B["FHIR bundles, HL7v2,<br/>claims (X12), lab feeds, DICOM refs"]
end
subgraph Silver["Silver — cleaned, conformed"]
S["Parsed, validated, deduplicated,<br/>terminology-mapped"]
end
subgraph Gold["Gold — analytics-ready"]
G["OMOP CDM / dimensional marts /<br/>feature tables"]
end
B --> S --> G
G --> BI["BI"] & ML["ML"] & RWE["RWE"]
- Bronze keeps raw data exactly as received — your audit trail and your "re-do" insurance (21 CFR Part 11 integrity, HIPAA traceability).
- Silver conforms and validates: parse FHIR/HL7v2, dedupe patients, map source codes to standard vocabularies (see Clinical terminologies).
- Gold is what analysts and models consume — modeled for the question.
Modeling the gold layer
The gold layer's model depends on the use case:
- OMOP CDM — for observational research, RWE, and cross-institution analytics. The standard choice for clinical RWD. See OMOP on the cloud.
- Dimensional (star schema) — for BI and operational reporting (facts = encounters/claims, dimensions = patient/provider/date). Familiar to warehouse teams.
- Feature tables — denormalized, ML-ready tables for model training.
- FHIR-shaped — keep resources close to FHIR for app-facing serving.
You often build more than one gold model from the same silver layer — OMOP for research, a star schema for finance — which is exactly what the lakehouse enables without recopying raw data.
Choosing for an HLS workload
- Mostly structured claims + BI, SQL team, minimal ops → warehouse-style (Snowflake).
- Mixed raw + modeled, genomics/imaging, ML-heavy → lakehouse (Databricks Delta or Snowflake + Iceberg).
- Pure object storage of raw genomics/DICOM with occasional batch → a lake tier under either.
For most modern HLS data platforms the answer is a lakehouse with a medallion layout and an OMOP (or OMOP + dimensional) gold layer.
See Building a health data lake & lakehouse for the practical build guide — per-modality ingestion patterns, file formats, and a concrete build sequence.
Lab
hls-lakehouse-rwd builds exactly this: bronze → silver → OMOP gold on Databricks and Snowflake.
Check yourself
- Why does the lakehouse suit HLS better than a pure warehouse or pure lake?
- What belongs in bronze vs silver vs gold, and why keep bronze immutable?
- When would you build two different gold models from the same silver layer?