01 / Reading Guide
Reading Guide
Citation
Kleppmann, M., & Riccomini, C. (2026). Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (2nd ed.). O'Reilly Media.
Chapter Summary
The second edition was published by O'Reilly in early 2026 and runs to roughly 670 pages. Martin Kleppmann, now an associate professor at the University of Cambridge working on local-first software and security protocols, is joined by Chris Riccomini as co-author. The edition builds on the first, whose popular nickname is the Wild Boar Book, and the authors describe it as integrating new technologies and emerging trends.
The publisher's description sets out the problem. Data sits at the center of many challenges in system design, and the issues that must be resolved include scalability, consistency, reliability, efficiency and maintainability. There is an overwhelming variety of systems, from relational databases and NoSQL datastores to data warehouses and data lakes, offered as cloud services, on-premises services or embedded databases. The book guides the reader through the decisions and trade-offs involved in building a modern data system. The summary below follows the topic areas the authors and publisher name and does not attribute content to particular chapters.
Requirements, Trade-offs and Fundamental Properties
The book's starting point is the set of properties a data system must have: reliability, scalability and maintainability, together with consistency and efficiency. It frames design as choosing among options under constraints, and it aims to help the reader decide which tools suit an application by identifying the strengths and weaknesses of each. The authors present this as an alternative to working from buzzwords.
How Data Systems Work Inside
A central promise is to look under the hood of systems that practitioners already use: how databases store and retrieve data, how they model it, and the core principles on which modern databases are built. The approach compares a broad variety of tools and approaches by their underlying ideas, and does not teach the configuration of any one product.
Distributed Data and Distributed Systems
The authors state that readers will understand the fundamentals of distributed systems. This is the area that covers keeping several copies of data, dividing data across machines, and the faults and consistency questions that come with both. The publisher adds that the book shows how major cloud services are designed for scalability, fault tolerance and consistency.
Data Processing and Applications
The book also reaches past single databases to the systems that process data at scale, a range the publisher's list of data warehouses, data lakes and cloud services points to, and which includes stream processing and the derivation of one dataset from another. The emphasis, as the authors put it on the book's site, is on ideas proven under intensive workloads at big companies and at startups, tied back to reality and not only to theory.
Key Concepts
Requirements and Trade-offs
- Reliability, scalability and maintainability: the properties the book's subtitle promises, against which design choices are judged.
- Consistency and efficiency: further issues the publisher names as needing resolution in system design.
Inside Data Systems
- Comparison of designs: the method of comparing the fundamental ideas behind a broad variety of systems, in preference to describing a single tool.
- Principles of modern databases: the underlying mechanisms the book sets out to explain.
Distributed Systems and Cloud Services
- Distributed systems fundamentals: the problems of running data systems across many machines.
- Cloud service design: how major cloud services achieve scalability, fault tolerance and consistency.
Critical Analysis
Strengths
- The authors' stated method is to compare many designs by their fundamental ideas, which gives readers lasting understanding rather than tool-specific recipes that age quickly.
- It aims to join theory and practice: academic ideas are always tied to what works under intensive workloads, a combination that endorsements by practitioners at Microsoft and Confluent, among others, single out.
- The second edition adds a co-author and, in the authors' words, integrates new technologies and emerging trends, so the material on cloud services is part of the main story.
- The scope, from relational databases to data lakes and cloud services, suits engineers who must choose among many options.
Limitations
- The book explains trade-offs and does not teach how to configure or operate any one product, so readers who need hands-on tool instruction will need other resources.
- Its length of about 670 pages and breadth make it demanding to read in full; it is better treated as a reference to return to.
- It is written for people with software development experience. Readers without working programming experience or an acquaintance with databases, networks and operating systems will find the pace fast.
- It is a practitioner-oriented book. Readers who need formal specification and proofs of distributed algorithms will find those in a graduate text instead.
Where It Fits in the Course
In the distributed systems group, this is the practitioner's guide to the data layer. Vitillo's Understanding Distributed Systems is a concise introduction for developers and is a good first read before it. Van Steen and Tanenbaum's Distributed Systems and Coulouris and colleagues' Distributed Systems: Concepts and Design are the full textbooks, covering architectures, communication, naming, coordination, replication and fault tolerance in a principles-first way. Cachin, Guerraoui and Rodrigues's Introduction to Reliable and Secure Distributed Programming is a graduate treatment of the abstractions and algorithms, with precise specifications. Pacheco's An Introduction to Parallel Programming addresses writing parallel programs, a different topic. Kleppmann and Riccomini fit between the introduction and the formal texts, focusing on how real storage and processing systems make their trade-offs.
How to Use This Book
The book is for software engineers, and for students who already program and have met databases, networks and operating systems, who want to reason about the design of production data systems.
A practical way to read it is by question. Start with the opening discussion of requirements and trade-offs, then choose the area your work needs: how a database stores and models data, how data is copied and divided across machines, or how data is processed and derived. Pair each area with the corresponding material in a principles textbook such as van Steen and Tanenbaum when you want formal definitions, and with Vitillo if you need a gentler first pass. Use the book in design reviews as a source of vocabulary for trade-offs. Make sure you are using the second edition: the first edition predates the new technologies and trends that the authors say the second integrates.
