Lakehouse vs warehouse vs data lake

What is the actual difference between a data lake, a data warehouse, and a lakehouse?

A data lake gives you cheap storage without guarantees, a warehouse gives you guarantees without engine choice, and a lakehouse adds the guarantees to the lake so you keep both.

Data lakeData warehouseOpen lakehouse
Where data lives Files in your object storageInside the warehouse, proprietary internal formatFiles in your object storage
ACID transactions NoYesYes, via the table format
Schema enforcement On read, if at allOn write, strictOn write, via the table format
Engine choice Any engine that reads filesThe warehouse engineAny engine implementing the format
Concurrent writers Unsafe, silent corruptionSafeSafe, snapshot isolation
Time travel and rollback NoVaries, often limited retentionYes, snapshot based
Storage cost LowestHighestLowest, same as a lake
Cost of leaving Near zeroHigh, requires export and conversionNear zero
Typical failure mode Becomes a data swampBecomes a bottleneck and a billUnder-maintained tables and small files

Choosing

  • You need cheap retention and will process with your own code A lake is sufficient, and you accept no guarantees
  • You have one team, one engine, and value operational simplicity above all A warehouse is the least work, and you accept the lock-in
  • Several engines or teams need the same governed data A lakehouse, because engine choice is the whole point
  • You already have a lake with correctness problems A lakehouse, since a table format retrofits over data you already have

Caveats

  • Warehouses increasingly read and write open table formats, which narrows this gap considerably. The distinction is becoming about where the data lives by default rather than what the system can technically read.
  • A lakehouse moves work rather than removing it. Compaction, snapshot expiry, and file sizing are your responsibility in a way they are not in a managed warehouse.

Related reference entries