Agent context
TYPE=personal_wiki_chapter PATH=/de/system-design.html SECTION=concepts TOPIC=data_engineering EDIT=/var/www/html/de/system-design.html
Core concepts
System design
Sources: DDIA Ch. 1, 7–9, 12 · Kimball (warehouse architecture)
Start with requirements (DDIA)
- Data volume, growth rate, retention
- Latency needs (batch OK vs real-time)
- Consistency vs availability trade-offs
- Who consumes the data (BI, ML, ops, external API)
Reliability, scalability, maintainability
- Fault tolerance — replicas, retries, idempotent writes, dead-letter queues
- Scalability — partition by key; avoid single hot spot; measure tail latency not just averages
- Evolvability — schema evolution (Avro/Protobuf), backward-compatible changes, versioned pipelines
Transactions & consistency (DDIA Ch. 7–9)
- ACID — atomicity, consistency, isolation, durability (OLTP systems)
- Linearizability — strongest consistency; expensive in distributed systems
- Eventual consistency — replicas converge; common in distributed stores
- Most data pipelines aim for at-least-once + idempotency rather than perfect distributed transactions
Design framework
- Sources → ingestion → storage → processing → serving
- Draw data lineage — where does each field originate?
- Identify failure modes — what happens if a stage retries or runs twice?
- Name trade-offs explicitly — cost, complexity, latency, correctness
Kimball warehouse architecture
- Staging area → ETL/conform → dimensional presentation (star schemas)
- Separate marts per department possible, but share conformed dimensions via the bus
- Data quality and audit dimensions track lineage and load metadata