Book
Designing Data-Intensive Applications
Martin Kleppmann
Summary
Martin Kleppmann's Designing Data-Intensive Applications maps the tradeoffs behind storing, querying, and moving data at scale: data models and query languages, storage engines, replication, partitioning, transactions, and the harder problems of consistency and consensus in distributed systems. It closes with batch and stream processing, tying operational and analytical data paths together. Widely used as a reference for engineers designing systems that must scale reliably, it favors first-principles explanations over any single technology stack, so the concepts hold even as the underlying tools change.
Target Readers
- Backend and infrastructure engineers choosing between consistency models, replication strategies, or partitioning schemes for a system in production
- Engineers preparing for system design interviews who want the reasoning behind tradeoffs, not just a list of technologies
- Developers moving from single-database applications to distributed data systems and encountering consistency or partitioning problems for the first time
Tags
Colophon
- Publisher
- オライリー・ジャパン
- ISBN
- 978-4873118703
- Published
- Jul 2019
- List price
- ¥5,060incl. taxMay differ from the actual selling price on Amazon
Get this book
* The link above is an advertisement via Amazon Associates.Related Books
Prerequisites
- Prerequisite
Database Internals
Alex Petrov
Reason: Only after understanding single-node storage-engine internals do discussions of consistency, replication, and partitioning across multiple nodes become grounded. Kleppmann's 'Designing Data-Intensive Applications' is the capstone that systematizes the principles of distributed data systems, placing internals knowledge as a required prerequisite.
- Recommended
Designing Distributed Systems
Patterns and Paradigms for Scalable, Reliable Services
Brendan Burns
Reason: After learning structural 'patterns' of distributed systems from Burns's book, advance to the hard part beyond them—data consistency and fault tolerance. Kleppmann's 'Designing Data-Intensive Applications' digs theoretically into replication, distributed transactions, and consensus, providing the data-layer principles that underpin distributed patterns.
- Recommended
Building Microservices
Sam Newman
Reason: Once you split services, the next hard problem becomes the distribution, consistency, and reliability of data. DDIA systematically provides the foundational theory and trade-offs of distributed data systems—replication, partitioning, and transactions.
- Recommended
Software Architecture: The Hard Parts
Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
Reason: When the hard parts of distributed architecture force decisions about decomposing data, you descend to the underlying theory of distributed data. The principles of consistency, replication, and storage engines become the grounds for your design decisions.
Next Books
- Recommended
Building Applications with AI Agents
Michael Albada
Reason: Having grasped the theory of consistency, reliability, and scale in large-scale data systems, you see it as the foundation for putting AI agents into production. Practical AI Agent Development bridges the robustness principles learned in data-intensive systems to designing agent state management and tool integration.
Sources
- Related
Database Reliability Engineering
Laine Campbell, Charity Majors
Reason: After understanding the theoretical trade-offs of distributed systems in Kleppmann's 'Designing Data-Intensive Applications', step into the reality of keeping them running. Based on Google's SRE principles, 'Database Reliability Engineering' (by Laine Campbell and Charity Majors) provides concrete practices for operating distributed data infrastructure reliably in production.