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 livesFiles in your object storageInside the warehouse, proprietary internal formatFiles in your object storage
ACID transactionsNoYesYes, via the table format
Schema enforcementOn read, if at allOn write, strictOn write, via the table format
Engine choiceAny engine that reads filesThe warehouse engineAny engine implementing the format
Concurrent writersUnsafe, silent corruptionSafeSafe, snapshot isolation
Time travel and rollbackNoVaries, often limited retentionYes, snapshot based
Storage costLowestHighestLowest, same as a lake
Cost of leavingNear zeroHigh, requires export and conversionNear zero
Typical failure modeBecomes a data swampBecomes a bottleneck and a billUnder-maintained tables and small files

Choosing

  • You need cheap retention and will process with your own codeA lake is sufficient, and you accept no guarantees
  • You have one team, one engine, and value operational simplicity above allA warehouse is the least work, and you accept the lock-in
  • Several engines or teams need the same governed dataA lakehouse, because engine choice is the whole point
  • You already have a lake with correctness problemsA 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