Designing Data-Intensive Applications
Martin Kleppmann
O’Reilly Media,
March 2017.
The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Data is at the center of many challenges in system design today. Difficult issues need to be figured
out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we
have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or
batch processors, and message brokers. What are the right choices for your application? How do you
make sense of all these buzzwords?
In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse
landscape by examining the pros and cons of various technologies for processing and storing data.
Software keeps changing, but the fundamental principles remain the same. With this book, software
engineers and architects will learn how to apply those ideas in practice, and how to make full use
of data in modern applications.
- Peer under the hood of the systems you already use, and learn how to use and operate them more effectively
- Make informed decisions by identifying the strengths and weaknesses of different tools
- Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity
- Understand the distributed systems research upon which modern databases are built
- Peek behind the scenes of major online services, and learn from their architectures
614 pages. ISBN 978-1-4493-7332-0 (paperback), 978-1-4919-0308-7 (ebook).
Available in all good bookshops; see dataintensive.net for links.
Praise for DDIA
“This book is awesome. It bridges the huge gap between distributed systems theory and practical
engineering. I wish it had existed a decade ago, so I could have read it then and saved myself all
the mistakes along the way.”
— Jay Kreps, Creator of Apache Kafka and CEO of Confluent
“This book should be required reading for software engineers. Designing Data-Intensive
Applications is a rare resource that connects theory and practice to help developers make smart
decisions as they design and implement data infrastructure and systems.”
— Kevin Scott, Chief Technology Officer at Microsoft