Designing Data Intensive Applications - Martin Kleppmann

Note

This is the definitive system design interview book.

Chapter 1 - Reliable, Scalable, and Maintainable Applications

Chapter 2 - Data Models and Query Languages

Chapter 3 - Storage and Retrieval

Chapter 4 - Encoding and Evolution

Chapter 5 - Replication

Chapter 6 - Partitioning

Chapter 7 - Transactions

Chapter 8 - The Trouble with Distributed Systems

Chapter 9 - Consistency and Consensus

Chapter 10 - Batch Processing

Chapter 11 - Stream Processing

Chapter 12 - The Future of Data Systems