Designing Data-Intensive Applications
by Martin Kleppmann
Synopsis
No other book captures the engineering tradeoffs of modern data systems as clearly as this one. Kleppmann walks through the foundations — data models, storage, replication, partitioning, transactions, consensus — and explains the “why” behind every design choice. He does not pick winners. He equips you to make the call yourself.
Who it’s for
Backend engineers, architects, and anyone preparing for system design interviews. You’ll come out with a mental model of distributed systems that holds up under real-world pressure.
Chapters
- Foundations of Data Systems
- Data Models & Query Languages
- Storage & Retrieval
- Encoding & Evolution
- Replication
- Partitioning
- Transactions
- The Trouble with Distributed Systems
- Consistency & Consensus
- Batch Processing
- Stream Processing
- The Future of Data Systems
Advertisement
728 × 90
Comments3


This is exactly what I needed. The breakdown of architectural tradeoffs was particularly illuminating — especially the point about eventual consistency vs. strong consistency being a product decision, not just a technical one.

Agreed. Would love a follow-up that goes deeper on the consensus algorithms.

Curious how this approach holds up at 10x the scale. Have you tested with sharded clusters?