Design and Implement Data Storage¶
Overview¶
This domain covers designing data storage structures, partition strategies, and serving layers for analytics solutions. It represents 15-20% of the exam and focuses on foundational data architecture decisions that impact performance, cost, and maintainability.
Key Topics¶
Data Storage Structure Design¶
- Azure Data Lake solution design
- File type recommendations for storage
- File type recommendations for analytical queries
- Efficient querying design
- Data pruning design
- Folder structure for data transformation levels
- Distribution strategy design
- Data archiving solution design
Partition Strategy Design¶
- Partition strategy for files
- Partition strategy for analytical workloads
- Partition strategy for efficiency and performance
- Partition strategy for Azure Synapse Analytics
- Partitioning needs in Azure Data Lake Storage Gen2
Serving Layer Design¶
- Star schema design
- Slowly changing dimensions (SCD) implementation
- Dimensional hierarchy design
- Temporal data solution design
- Incremental loading design
- Analytical stores design
- Metastores in Azure Synapse Analytics and Databricks
Services Reference¶
Core Services¶
- Azure Data Lake Storage Gen2
- Azure Synapse Analytics (SQL Pools, Spark Pools)
- Azure Databricks
- Azure Blob Storage
- Parquet, Delta Lake, ORC file formats
Supporting Services¶
- Azure Storage Explorer
- Azure Data Factory
- PolyBase
- Azure Purview (for data governance)
Best Practices¶
Data Lake Organization¶
- Implement medallion architecture (bronze, silver, gold layers)
- Use hierarchical namespace for efficient operations
- Organize data by domain, then by entity
- Include metadata in folder structure (year/month/day for time-series)
- Separate raw, processed, and curated data
File Format Selection¶
- Use Parquet for analytical workloads (columnar, compressed)
- Use Delta Lake for ACID transactions and time travel
- Use ORC for highly compressed storage
- Avoid CSV/JSON for large analytical datasets
- Consider Avro for schema evolution scenarios
Partitioning Strategies¶
- Partition by date for time-series data (most common)
- Avoid over-partitioning (too many small files)
- Aim for partition sizes of 256MB to 1GB
- Consider query patterns when designing partitions
- Use partitioning to enable partition pruning
Data Warehouse Design¶
- Use star schema for simplicity and performance
- Implement SCD Type 2 for historical tracking
- Denormalize for query performance
- Use surrogate keys for dimension tables
- Design fact tables with appropriate grain
Common Scenarios¶
Data Lake Architecture¶
- Raw data ingestion (bronze layer)
- Data cleansing and transformation (silver layer)
- Business-ready aggregated data (gold layer)
- Multi-zone data lake with access controls
- Data lifecycle management and archival
Partitioning Patterns¶
- Date-based partitioning for event logs
- Geographic partitioning for regional data
- Customer-based partitioning for multi-tenant systems
- Hash partitioning for even distribution
- Hybrid partitioning strategies
Dimensional Modeling¶
- Customer dimension with SCD Type 2
- Date dimension with calendar hierarchies
- Product dimension with categories
- Sales fact table with grain at transaction level
- Accumulating snapshot fact tables
Performance Optimization¶
- Partition pruning for query performance
- File compaction for small file problems
- Distribution keys for parallel processing
- Materialized views for common queries
- Table statistics for query optimization
Study Tips¶
- Understand medallion architecture and its benefits
- Practice designing star schemas for different business scenarios
- Learn the three types of slowly changing dimensions (SCD Type 1, 2, 3)
- Hands-on experience with Parquet and Delta Lake formats
- Study partition size recommendations and impacts
- Practice folder structure design for Data Lake Gen2
- Understand distribution strategies in Synapse dedicated SQL pools
- Learn when to use clustered columnstore vs heap vs B-tree indexes
- Study temporal table patterns for historical data
- Practice incremental load patterns and change data capture