Data warehouse vs data lake: what's the difference, really?
Schema-on-write or schema-on-read, structured or raw, BI or ML — a clear, detailed comparison and how to choose.
Orbyte · June 4, 2026 · 9 min read
Schema-on-write or schema-on-read, structured or raw, BI or ML — a clear, detailed comparison and how to choose.
Orbyte · June 4, 2026 · 9 min read
"Warehouse" and "lake" both store a lot of data, so they're often confused. The real difference is when and how you impose structure — and that single choice ripples through cost, flexibility and who can use the data.
A data warehouse stores structured, cleaned data modelled for analysis. You decide the schema before loading — "schema-on-write" — so by the time data lands, it's already shaped into tables of facts and dimensions. The ideas trace back to the 1990s work of Bill Inmon and Ralph Kimball. The payoff: fast, reliable SQL and BI dashboards that everyone reads the same way. The cost: getting data in takes upfront modelling, and it suits structured data far more than images, logs or free text.
A data lake stores raw data of any type — structured, semi-structured or unstructured — in cheap object storage, as it arrives. You impose structure only when you read it — "schema-on-read". The term was coined around 2010 by James Dixon. Lakes are flexible and inexpensive, and ideal for data science and machine learning that want the raw signal. The risk: without governance a lake becomes a "data swamp" — everything is in there, but nobody can trust or find anything.

Newer "lakehouse" architectures (popularised by Databricks) try to get both: the cheap, open storage of a lake with the tables, transactions and performance of a warehouse, using formats like Delta Lake, Apache Iceberg or Hudi. For many teams it's a genuine middle path — but it's an architecture to adopt deliberately, not a buzzword to chase.
Sources & further reading
Stay in orbit
Occasional engineering notes on what we build and how. No spam — unsubscribe anytime.