Where Data Lives: Warehouses, Lakes, and Lakehouses

"Just put it in a database" stops working the moment you're dealing with analytics at scale — because the database that runs your application is optimized for exactly the wrong thing. Analytical data needs different storage: systems built to scan and aggregate huge volumes, not to serve fast individual transactions. The landscape of analytical storage — data warehouses, data lakes, and the newer lakehouses — is where data engineering decisions about where data lives get made, and understanding the differences (starting with OLTP vs OLAP) is essential.

Where data is stored shapes what you can do with it. This post covers the analytical storage landscape: the crucial OLTP vs OLAP distinction (why analytical storage differs from application databases), data warehouses, data lakes, and the lakehouse that combines them. It builds on the pipelines post (pipelines load data into these stores) and sets up modeling (how data is organized within them). Choosing where data lives is a core data-engineering decision.

OLTP vs OLAP: two kinds of workload

The foundational distinction is between OLTP (transactional) and OLAP (analytical) workloads — they have opposite needs, requiring different storage:

The OLTP (transactional, application databases, fast small operations) vs OLAP (analytical, warehouses, big scans/aggregations) distinction is foundational: the two workloads have opposite needs, so analytics requires dedicated analytical storage, not the application database. This is the reason data engineering exists to move data into warehouses/lakes. Those analytical stores come in a few forms.

Data warehouses

A data warehouse is a storage system optimized for analytics (OLAP) — structured, organized data designed for fast analytical queries. It’s the classic analytical store:

Data warehouses are analytical (OLAP) stores of structured, modeled data optimized for fast analytical queries (schema-on-write — structure defined first), with modern cloud warehouses being cheap, scalable, and central to the modern stack. Warehouses excel at structured analytical data but handle varied/unstructured data poorly — which is where data lakes come in.

Data lakes

A data lake is a store for large amounts of raw data in any format — flexible, scalable, and schema-on-read. It complements the warehouse’s structure with flexibility:

Data lakes store vast raw data in any format, cheaply and flexibly (schema-on-read — structure applied at query time), complementing warehouses’ structure — great for varied data and ML but risking becoming a disorganized “data swamp” without governance. Warehouses (structured, query-ready) and lakes (flexible, raw) each have strengths and weaknesses — which the lakehouse tries to unite.

The lakehouse: combining both

The lakehouse is a newer architecture that combines the flexibility of a lake with the structure and query performance of a warehouse — aiming to get the best of both:

Where data lives — driven by the OLTP/OLAP split that separates analytical from application storage — comes down to data warehouses (structured, query-optimized, schema-on-write), data lakes (raw, flexible, schema-on-read, but swamp-prone), and lakehouses (combining lake flexibility with warehouse structure/performance). Choosing the right analytical storage is a core data-engineering decision. Next: data modeling — how data is organized within these stores for analytics.

Key takeaways

Further reading

Sources & References

Analytical warehouses
Raw flexible storage
Combining lake and warehouse