Chapter 06: Lakehouse Architecture
In the previous chapter, we learned how to design optimized physical data models in BigQuery, implement partitioning and clustering strategies, and apply best practices for performance and cost efficiency.
In this chapter, we will explore Lakehouse Architecture, understand how it combines the best of data lakes and data warehouses, and learn how to implement modern analytics patterns on Google Cloud.
Using our Digital Banking Platform case study, we will design a lakehouse architecture that supports both batch and real-time analytics at enterprise scale.
🎯 Learning Objectives
By the end of this chapter, you will be able to:
- Understand what Lakehouse architecture is and why it matters
- Explain the differences between data lakes, warehouses, and lakehouses
- Identify the key components of a lakehouse
- Understand the benefits of open table formats (Delta Lake, Iceberg, Hudi)
- Implement lakehouse patterns on Google Cloud
- Design a banking lakehouse architecture
- Understand data governance in a lakehouse
- Apply best practices for lakehouse implementation
What is a Lakehouse?
A Lakehouse is a modern data architecture that combines the best features of data lakes and data warehouses.
Lakehouse = Data Lake (Flexibility) + Data Warehouse (Performance)
Think of a lakehouse as:
- Store all data types (structured, semi-structured, unstructured)
- Support ACID transactions
- Enable high-performance analytics
- Provide governance and security
- Support BI and AI/ML workloads
- Lower total cost of ownership
Real-World Banking Example
A bank needs to support multiple data workloads:
Current Challenges:
- Data lake stores raw data but lacks performance
- Data warehouse is fast but expensive for all data
- Data silos between teams
- Duplicate data storage
- Complex ETL pipelines
Lakehouse Solution:
- Raw data in data lake (Cloud Storage)
- Processed data with ACID (Delta Lake)
- Analytics in BigQuery
- Single source of truth
- Unified governance
- Lower costs
Evolution of Data Architecture
Phase 1: Data Warehouse Era
Characteristics:
- Structured data only
- High performance
- Expensive storage
- Limited data types
- Batch processing
- Proprietary formats
Tools: Teradata, Oracle, SQL Server
Phase 2: Data Lake Era
Characteristics:
- All data types
- Low cost storage
- Poor performance
- No ACID transactions
- Schema-on-read
- Open formats (Parquet, ORC)
Tools: Hadoop, HDFS, Spark, Cloud Storage
Phase 3: Lakehouse Era
Characteristics:
- All data types
- ACID transactions
- High performance
- Data governance
- Open table formats
- Unified platform
Tools: Delta Lake, Iceberg, Hudi, BigQuery

Prompt: Create a comprehensive Lakehouse architecture diagram showing the evolution and components. Use a 4-layer structure with purple gradient theme:
Top Layer: Data Sources - Purple #F3E5F5
- OLTP Systems (Cloud SQL, Spanner), IoT Devices, SaaS Apps, Social Media, Logs, External Data
- Show various data source types with icons
Layer 2: Data Ingestion - Purple #E1BEE7
- Batch: Dataflow, Dataproc, Transfer Service
- Streaming: Pub/Sub, Dataflow Streaming, Kafka
- CDC: Debezium, Datastream
- Show different ingestion methods
Layer 3: Lakehouse Storage (Core) - Purple #CE93D8
- Raw Zone (Bronze) - Cloud Storage
- Processed Zone (Silver) - Delta Lake / Iceberg / Hudi
- Curated Zone (Gold) - BigQuery
- Show three zones with flow arrows
Layer 4: Data Consumption (Bottom) - Purple #AB47BC
- BI/Analytics: Looker, Looker Studio, Tableau
- Data Science: Vertex AI, Notebooks
- Applications: Real-time APIs, Microservices
- Show various consumption methods
At bottom: Key takeaway: "Lakehouse combines the flexibility of data lakes with the performance of data warehouses." Footer tags: Lakehouse, Unified, Scalable, Modern. Enterprise-style clean layout with rounded corners and consistent iconography.
Open Table Formats
Delta Lake
Description: Open format built on Parquet
Created by: Databricks
Key Features:
- ACID transactions
- Time travel
- Schema enforcement
- Unified batch/streaming
- Cloud-native
Banking Use Case:
- Transaction data processing
- Incremental updates
- Historical analysis
Apache Iceberg
Description: High-performance table format
Created by: Netflix, Apple, etc.
Key Features:
- ACID transactions
- Snapshot isolation
- Schema evolution
- Partition evolution
- Multiple engines support
Banking Use Case:
- Large-scale analytics
- Multi-engine access
- Regulatory reporting
Apache Hudi
Description: Upsert and incremental processing
Created by: Uber
Key Features:
- Upserts and deletes
- Incremental processing
- Time travel
- Change data capture
- Streaming ready
Banking Use Case:
- CDC pipelines
- Real-time analytics
- Data synchronization
Open Table Formats Comparison

| Feature | Delta Lake | Apache Iceberg | Apache Hudi |
|---|---|---|---|
| ACID Transactions | ✅ | ✅ | ✅ |
| Time Travel | ✅ | ✅ | ✅ |
| Schema Evolution | ✅ | ✅ | ✅ |
| Partition Evolution | Limited | ✅ | ✅ |
| Upsert Support | ✅ | ✅ | ✅ |
| Streaming | ✅ | ✅ | ✅ |
| Spark Integration | ✅ | ✅ | ✅ |
| Flink Integration | Limited | ✅ | ✅ |
| Presto/Trino | ✅ | ✅ | ✅ |
| Cloud Storage | ✅ | ✅ | ✅ |
| Governance | ✅ | ✅ | ✅ |
Lakehouse Components on Google Cloud
Storage Layer
Cloud Storage (GCS)
- Data lake foundation
- Unlimited storage
- Multiple storage classes
- Lifecycle management
BigQuery Storage
- Columnar format (Capacitor)
- Managed tables
- External tables
- Automatic optimization
Processing Layer
Cloud Dataflow
- Unified batch/stream
- Apache Beam
- Serverless
- Exactly-once processing
Cloud Dataproc
- Managed Spark/Hadoop
- Open source ecosystem
- Delta Lake/Iceberg support
- Flexible clusters
Catalog Layer
Data Catalog
- Metadata management
- Data discovery
- Data lineage
- Data governance
Hive Metastore
- Open source catalog
- Table definitions
- Partition metadata
Medallion Architecture Pattern
The Medallion architecture organizes data into three layers:
Bronze Layer (Raw Data)
Purpose: Store raw data as ingested
Format: Parquet, Avro, JSON
Characteristics:
- Immutable
- Original format
- No transformations
- Full history
Banking Example:
- Raw transaction logs
- Customer data dumps
- External data feeds
Silver Layer (Cleaned Data)
Purpose: Cleansed and validated data
Format: Delta Lake, Iceberg
Characteristics:
- Validated data
- Standardized formats
- Deduplicated
- Data quality checks
Banking Example:
- Cleaned transactions
- Standardized customer records
- Validated account data
Gold Layer (Curated Data)
Purpose: Business-ready aggregated data
Format: BigQuery tables
Characteristics:
- Aggregated data
- Business definitions
- Performance optimized
- Ready for analytics
Banking Example:
- Customer 360 tables
- Transaction summaries
- Risk metrics
- Financial reports

Note: This diagram is part of Chapter 07 (Medallion Architecture) but is referenced here for completeness.
Prompt: Create a Medallion Architecture diagram showing the Bronze, Silver, and Gold layers with flow between them. Use a 3-layer vertical structure with purple gradient theme:
Layer 1: Bronze (Raw Data) - Top - Purple #E1BEE7
- Title: "Bronze Layer - Raw Data"
- Source: Ingestion
- Storage: Cloud Storage (Parquet/Avro/JSON)
- Process: Raw Ingestion
- Banking Example: "Raw Transaction Logs"
- Icon: 📥 Raw data icon
Layer 2: Silver (Cleaned Data) - Middle - Purple #CE93D8
- Title: "Silver Layer - Cleaned Data"
- Source: Bronze Layer
- Storage: Delta Lake / Iceberg / Hudi
- Process: Validate, Cleanse, Standardize
- Banking Example: "Cleaned Transactions"
- Icon: 🔄 Clean data icon
Layer 3: Gold (Curated Data) - Bottom - Purple #AB47BC
- Title: "Gold Layer - Curated Data"
- Source: Silver Layer
- Storage: BigQuery
- Process: Aggregate, Model, Optimize
- Banking Example: "Customer 360, Risk Metrics"
- Icon: 📊 Curated data icon
Use downward arrows between layers showing data progression. Include key takeaway at bottom: "Medallion architecture provides a clear data progression from raw to business-ready." Footer tags: Bronze, Silver, Gold, Medallion. Enterprise-style clean layout with rounded corners and consistent iconography.
Banking Lakehouse Implementation
Example: Transaction Lakehouse
-- Bronze Layer: Raw transaction data
CREATE EXTERNAL TABLE banking.bronze_transactions
OPTIONS (
format = 'PARQUET',
uris = ['gs://banking-lake/bronze/transactions/*']
);
-- Silver Layer: Cleaned transaction data
CREATE OR REPLACE TABLE banking.silver_transactions
PARTITION BY DATE(transaction_date)
CLUSTER BY customer_id
AS
SELECT
transaction_id,
customer_id,
account_id,
transaction_date,
transaction_amount,
merchant_category,
-- Clean and standardize
CASE
WHEN transaction_amount < 0 THEN ABS(transaction_amount)
ELSE transaction_amount
END AS cleaned_amount,
-- Data quality checks
CASE
WHEN merchant_category IN ('RETAIL', 'ONLINE', 'BANKING')
THEN merchant_category
ELSE 'OTHER'
END AS merchant_type
FROM banking.bronze_transactions
WHERE transaction_date IS NOT NULL
AND customer_id IS NOT NULL
AND transaction_amount IS NOT NULL;
-- Gold Layer: Curated transaction analytics
CREATE OR REPLACE TABLE banking.gold_daily_transactions_summary
PARTITION BY date
CLUSTER BY customer_id
AS
SELECT
DATE(transaction_date) AS date,
customer_id,
COUNT(*) AS transaction_count,
SUM(transaction_amount) AS total_amount,
AVG(transaction_amount) AS avg_amount,
COUNT(DISTINCT merchant_category) AS distinct_merchants,
SUM(CASE WHEN transaction_amount > 1000 THEN 1 ELSE 0 END) AS large_transactions
FROM banking.silver_transactions
GROUP BY DATE(transaction_date), customer_id;
Lakehouse Governance
Data Quality
-- Data quality checks in silver layer
CREATE OR REPLACE TABLE banking.silver_transactions_qc
AS
SELECT
*,
-- Data quality metrics
CASE
WHEN transaction_amount <= 0 THEN 'INVALID_AMOUNT'
WHEN transaction_date > CURRENT_DATE() THEN 'FUTURE_DATE'
WHEN customer_id IS NULL THEN 'NULL_CUSTOMER'
ELSE 'VALID'
END AS data_quality_status
FROM banking.bronze_transactions;
Data Lineage
Data Lineage Flow:
External Sources
↓
Bronze Layer (Raw Data)
↓
Data Quality Checks
↓
Silver Layer (Cleaned Data)
↓
Transformation/Aggregation
↓
Gold Layer (Curated Data)
↓
Analytics/Consumption
Data Security
-- Implement row-level security
CREATE ROW ACCESS POLICY customer_data_filter
ON banking.gold_customer_360
GRANT TO ('group:analytics_team')
FILTER USING (
customer_id IN (
SELECT customer_id
FROM banking.customer_access
WHERE analyst_email = SESSION_USER()
)
);
Lakehouse Best Practices
| # | Best Practice |
|---|---|
| 1 | Start with business use cases, not technology |
| 2 | Implement medallion architecture for data progression |
| 3 | Use open table formats for flexibility |
| 4 | Implement data quality checks in silver layer |
| 5 | Maintain data lineage and governance |
| 6 | Use appropriate storage classes |
| 7 | Implement data lifecycle management |
| 8 | Automate data pipeline monitoring |
| 9 | Implement data security and access controls |
| 10 | Document architecture and data flows |
Common Mistakes
| # | Common Mistake | Better Approach |
|---|---|---|
| 1 | Treating lakehouse as simple data lake | Implement governance and performance |
| 2 | Not using medallion architecture | Organize data in layers |
| 3 | Ignoring data quality | Build quality checks |
| 4 | No governance strategy | Implement from day one |
| 5 | Using proprietary formats | Use open table formats |
| 6 | Not monitoring costs | Monitor and optimize |
| 7 | No data lineage | Implement lineage tracking |
| 8 | Ignoring security | Implement access controls |
| 9 | Over-complicating architecture | Start simple, evolve |
| 10 | No documentation | Document design decisions |
Interview Questions
-
What is a Lakehouse architecture?
-
How does a Lakehouse differ from a data lake?
-
How does a Lakehouse differ from a data warehouse?
-
What are open table formats and why are they important?
-
Compare Delta Lake, Apache Iceberg, and Apache Hudi.
-
What is the medallion architecture?
-
How does Google Cloud support Lakehouse architecture?
-
What are the benefits of a Lakehouse over traditional architectures?
-
How do you implement data governance in a Lakehouse?
-
What is the role of BigQuery in a Lakehouse?
-
How do you handle CDC in a Lakehouse?
-
What are the best practices for Lakehouse implementation?
Practice Exercises
-
Design a lakehouse architecture for a banking platform.
-
Create bronze, silver, and gold tables for transaction data.
-
Implement data quality checks in the silver layer.
-
Set up a data pipeline from bronze to silver to gold.
-
Implement data lineage tracking.
-
Create a data catalog for the lakehouse.
-
Implement row-level security on gold tables.
-
Design a data lifecycle management strategy.
-
Implement CDC from OLTP to lakehouse.
-
Create analytics dashboards from gold layer data.
Key Takeaways
| # | Takeaway |
|---|---|
| 1 | Lakehouse combines data lake flexibility with warehouse performance |
| 2 | Open table formats enable interoperability |
| 3 | Medallion architecture organizes data progression |
| 4 | Governance and quality are essential |
| 5 | Google Cloud provides comprehensive lakehouse capabilities |
| 6 | Lakehouse supports all data types and workloads |
| 7 | Cost efficiency is a key benefit |
| 8 | Start simple and evolve with business needs |
Chapter Summary
In this chapter, you learned:
- ✅ What Lakehouse architecture is and why it matters
- ✅ Differences between data lakes, warehouses, and lakehouses
- ✅ Open table formats (Delta Lake, Iceberg, Hudi)
- ✅ Google Cloud lakehouse components
- ✅ Medallion architecture (Bronze, Silver, Gold)
- ✅ Banking lakehouse implementation
- ✅ Governance and data quality
- ✅ Best practices and common mistakes
You now understand how to design and implement modern lakehouse architectures on Google Cloud.
Next Chapter
👉 Next Chapter: Medallion Architecture