Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems 1st Edition
Purchase options and add-ons
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
- ISBN-101449373321
- ISBN-13978-1449373320
- Edition1st
- PublisherO'Reilly Media
- Publication dateMay 2, 2017
- LanguageEnglish
- Dimensions7 x 1.25 x 9.5 inches
- Print length614 pages
There is a newer edition of this item:
$57.39
(6)
This title will be released on March 24, 2026.
Frequently bought together

What other items do customers buy after viewing this item?
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable SystemsPaperbackFREE Shipping by AmazonThis title will be released on March 24, 2026.
System Design Interview – An insider's guidePaperbackFREE Shipping by AmazonGet it as soon as Wednesday, Mar 25
System Design Interview – An Insider's Guide: Volume 2PaperbackFREE Shipping by AmazonGet it as soon as Wednesday, Mar 25
AI Engineering: Building Applications with Foundation ModelsPaperbackFREE Shipping by AmazonGet it as soon as Wednesday, Mar 25
A Philosophy of Software Design, 2nd EditionPaperbackFREE Shipping on orders over $35 shipped by AmazonGet it as soon as Wednesday, Mar 25
Fundamentals of Data Engineering: Plan and Build Robust Data SystemsPaperbackFREE Shipping by AmazonGet it as soon as Wednesday, Mar 25
Customers also bought or read
- System Design Interview – An insider's guide#1 Best SellerCloud Computing
Paperback$39.99$39.99FREE delivery Wed, Mar 25 - System Design Interview – An Insider's Guide: Volume 2#1 Best SellerComputer Systems Analysis & Design
Paperback$40.00$40.00FREE delivery Wed, Mar 25 - Database Internals: A Deep Dive into How Distributed Data Systems Work
Paperback$36.33$36.33FREE delivery Wed, Mar 25 - Fundamentals of Data Engineering: Plan and Build Robust Data Systems
Paperback$43.99$43.99FREE delivery Wed, Mar 25 - The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition)#1 Best SellerSoftware Testing
Hardcover$45.63$45.63FREE delivery Wed, Mar 25 - Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
Paperback$43.99$43.99FREE delivery Wed, Mar 25 - Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
Paperback$40.15$40.15FREE delivery Wed, Mar 25 - Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications
Paperback$40.00$40.00FREE delivery Wed, Mar 25 - Design Patterns: Elements of Reusable Object-Oriented Software#1 Best SellerObject-Oriented Design
Hardcover$29.09$29.09Delivery Apr 6 - 9 - Building Microservices: Designing Fine-Grained Systems
Paperback$44.49$44.49FREE delivery Wed, Mar 25 - Operating Systems: Three Easy Pieces#1 Best SellerComputer Operating Systems Theory
Paperback$28.27$28.27Delivery Wed, Mar 25 - Site Reliability Engineering: How Google Runs Production Systems
Paperback$25.67$25.67Delivery Apr 5 - 9 - Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)
Paperback$59.94$59.94FREE delivery Wed, Mar 25 - The Staff Engineer's Path: A Guide for Individual Contributors Navigating Growth and Change
Paperback$26.39$26.39Delivery Wed, Mar 25 - The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling#1 Best SellerDatabase Storage & Design
Paperback$35.79$35.79FREE delivery Wed, Mar 25 - Understanding Distributed Systems, Second Edition: What every developer should know about large distributed applications
Paperback$35.00$35.00FREE delivery Wed, Mar 25 - Release It!: Design and Deploy Production-Ready Software
Paperback$40.36$40.36FREE delivery Wed, Mar 25 - Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition
Paperback$43.99$43.99FREE delivery Wed, Mar 25 - Systems Performance (Addison-Wesley Professional Computing Series)#1 Best SellerComputer Performance Optimization
Paperback$68.59$68.59FREE delivery Wed, Mar 25 - Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing
Paperback$48.89$48.89FREE delivery Wed, Mar 25 - Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Systems Using Kubernetes
Paperback$45.76$45.76FREE delivery Wed, Mar 25 - Data Pipelines Pocket Reference: Moving and Processing Data for Analytics
Paperback$16.93$16.93Delivery Wed, Mar 25 - Fluent Python: Clear, Concise, and Effective Programming
Paperback$43.99$43.99FREE delivery Wed, Mar 25 - The Algorithm Design Manual (Texts in Computer Science)
Hardcover$47.84$47.84FREE delivery Wed, Mar 25 - Crafting Interpreters#1 Best SellerSoftware Programming Compilers
Paperback$43.56$43.56FREE delivery Wed, Mar 25 - Kafka: The Definitive Guide: Real-Time Data and Stream Processing at Scale
Paperback$43.99$43.99FREE delivery Wed, Mar 25 - Patterns of Enterprise Application Architecture#1 Best SellerComputer Hardware Design
Hardcover$58.34$58.34FREE delivery Apr 4 - 10
From the brand
-
Databases, data science & more
-
Data Science
-
Data Visualization
-
Databases
-
Streaming
-
Sharing the knowledge of experts
O'Reilly's mission is to change the world by sharing the knowledge of innovators. For over 40 years, we've inspired companies and individuals to do new things (and do them better) by providing the skills and understanding that are necessary for success.
Our customers are hungry to build the innovations that propel the world forward. And we help them do just that.
From the Publisher
Who Should Read This Book?
If you develop applications that have some kind of server/backend for storing or processing data, and your applications use the internet (e.g., web applications, mobile apps, or internet-connected sensors), then this book is for you.
This book is for software engineers, software architects, and technical managers who love to code. It is especially relevant if you need to make decisions about the architecture of the systems you work on—for example, if you need to choose tools for solving a given problem and figure out how best to apply them. But even if you have no choice over your tools, this book will help you better understand their strengths and weaknesses.
You should have some experience building web-based applications or network services, and you should be familiar with relational databases and SQL. Any non-relational databases and other data-related tools you know are nice, but not required.
A general understanding of common network protocols like TCP and HTTP is helpful. Your choice of programming language or framework makes no difference for this book.
If any of the following are true for you, you’ll find this book valuable:
- You want to learn how to make data systems scalable, for example, to support web or mobile apps with millions of users.
- You need to make applications highly available (minimizing downtime) and operationally robust.
- You are looking for ways of making systems easier to maintain in the long run, even as they grow and as requirements and technologies change.
- You have a natural curiosity for the way things work and want to know what goes on inside major websites and online services. This book breaks down the internals of various databases and data processing systems, and it’s great fun to explore the bright thinking that went into their design.
Sometimes, when discussing scalable data systems, people make comments along the lines of, 'You’re not Google or Amazon. Stop worrying about scale and just use a relational database'. There is truth in that statement: building for scale that you don’t need is wasted effort and may lock you into an inflexible design. In effect, it is a form of premature optimization. However, it’s also important to choose the right tool for the job, and different technologies each have their own strengths and weaknesses. As we shall see, relational databases are important but not the final word on dealing with data.
Scope of This Book
This book does not attempt to give detailed instructions on how to install or use specific software packages or APIs, since there is already plenty of documentation for those things. Instead we discuss the various principles and trade-offs that are fundamental to data systems, and we explore the different design decisions taken by different products.
We look primarily at the architecture of data systems and the ways they are integrated into data-intensive applications. This book doesn’t have space to cover deployment, operations, security, management, and other areas—those are complex and important topics, and we wouldn’t do them justice by making them superficial side notes in this book. They deserve books of their own.
Many of the technologies described in this book fall within the realm of the Big Data buzzword. However, the term 'Big Data' is so overused and underdefined that it is not useful in a serious engineering discussion. This book uses less ambiguous terms, such as single-node versus distributed systems, or online/interactive versus offline/batch processing systems.
This book has a bias toward free and open source software (FOSS), because reading, modifying, and executing source code is a great way to understand how something works in detail. Open platforms also reduce the risk of vendor lock-in. However, where appropriate, we also discuss proprietary software (closed-source software, software as a service, or companies’ in-house software that is only described in literature but not released publicly).
Editorial Reviews
About the Author
Martin is a researcher in distributed systems at the University of Cambridge. Previously he was a software engineer and entrepreneur at Internet companies including LinkedIn and Rapportive, where he worked on large-scale data infrastructure. In the process he learned a few things the hard way, and he hopes this book will save you from repeating the same mistakes.
Martin is a regular conference speaker, blogger, and open source contributor. He believes that profound technical ideas should be accessible to everyone, and that deeper understanding will help us develop better software.
Product details
- Publisher : O'Reilly Media
- Publication date : May 2, 2017
- Edition : 1st
- Language : English
- Print length : 614 pages
- ISBN-10 : 1449373321
- ISBN-13 : 978-1449373320
- Item Weight : 2.1 pounds
- Dimensions : 7 x 1.25 x 9.5 inches
- Best Sellers Rank: #5,033 in Books (See Top 100 in Books)
- #1 in MySQL Guides
- #2 in Data Modeling & Design (Books)
- #5 in Computer Software (Books)
- Customer Reviews:
About the author

Martin Kleppmann is a researcher in distributed systems and security at the University of Cambridge, and author of Designing Data-Intensive Applications (O'Reilly Media, 2017). Previously he was a software engineer and entrepreneur at Internet companies including LinkedIn and Rapportive, where he worked on large-scale data infrastructure. He is now working on TRVE DATA, a project that aims to bring end-to-end encryption and decentralisation to a wide range of applications.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Generated from the text of customer reviewsSelect to learn more
Reviews with images
Designing Data-Intensive Applications
Top reviews from the United States
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on June 1, 2020Format: PaperbackVerified PurchaseDesigning Data-Intensive Applications really exceeded my expectations. Even if you are experienced in this area this book will re-enforce things you know (or sort of know) and bring to light new ways of thinking about solving distributed systems and data problems. It will give you a solid understanding of how to choose the right tech for different use cases.
The book really pulls you in with an intro that is more high level, but mentions problems and solutions that really anyone who has worked on these types of applications have either encountered or heard mention of. The promise it makes is to take these issues such as scalability, maintainability and durability and explain how to decide on the right solutions to these issues for the problems you are solving. It does an amazing job of that throughout the book.
This book covers a lot, but at the same time it knows exactly when to go deep on a subject. Right when it seems like it may be going too deep on things like how different types of databases are implemented (SSTables, B-trees, etc.) or on comparing different consensus algorithms, it is quick to point out how and why those things are important to practical real-world problems and how understanding those things is actually vital to the success of a system.
Along those same lines it is excellent at circling back to concepts introduced at prior points in the book. For example the book goes into how log based storage is used for some databases as their core way of storing data and for durability in other cases. Later in the book when getting into different message/eventing systems such as Kafka and ActiveMQ things swing back to how these systems utilize log based storage in similar ways. Even if you have prior knowledge or even have worked with these technologies, how and why they work and the pros and cons of each become crystal clear and really solidified. Same can be said of it's great explanations of things like ZooKeeper and why specific solutions like Kafka make use of it.
This book is also amazing at shedding light on the fact that so little of what is out there is totally new, it attempts to go back as far as it can at times on where a certain technology's ideas originated (back to the 1800s at some points!). Bringing in this history really gives a lot of context around the original problems that were being solved, which in turn helps understanding pros and cons. One example is the way it goes through the history of batch processing systems and HDFS. The author starts with MapReduce and relating it to tech that was developed decades before. This really clarifies how we got from batch processing systems on proprietary hardware to things like MapReduce on commodity hardware thanks in part to HDFS, eventually to stream based processing. It also does great at explaining the pros and cons of each and when one might choose one technology over the other.
That's really the theme of this book, teaching the reader how to compare and contrast different technologies for solving distributed systems and data problems. It teaches you to read between the lines on how certain technologies work so that you can identify the pros and cons early and without needing them to be spelled out by the authors of those technologies. When thinking about databases it teaches you to really consider the durability/scalability model and how things are no where near black and white between "consistent" vs "eventually consistent", these is a ton of nuance there and it goes deep on things like single vs multi leader vs leaderless, linearizability, total order broadcast, and different consensus algorithms.
I could go on forever about this book. To name a few other things it touches on to get a good idea of the breadth here: networking (and networking faults), OLAP, OLTP, 2 phase locking, graph databases, 2 phase commit, data encoding, general fault tolerance, compatibility, message passing, everything I mentioned above, and the list goes on and on and on. I recommend anyone who does any kind of work with these systems takes the time to read this book. All 600ish pages are worth reading, and it's presented in an excellent, engaging way with real world practical examples for everything.
- Reviewed in the United States on September 17, 2025Format: PaperbackVerified PurchaseIn today’s world, many of us have been tasked with building reliable, scalable services. Yet, more often than not, we rely on existing abstractions without fully understanding how the underlying systems work. Need a scalable database? Use MongoDB. Need a streaming service? Kafka is your go-to. While these tools get the job done, they often serve as crutches that prevent us from delving into the complexities of distributed systems. This book, Designing Data-Intensive Applications, is an eye-opener for anyone who has ever wondered about the internals of these services. It takes a deep dive into key concepts like consistency, exploring the critical differences between strong and weak consistency, and the trade-offs that come with each approach. For example, when a master node fails, how does a new master get elected? The book explains this process in depth, shedding light on the mechanics of fault tolerance. The book also provides clarity on how databases store and retrieve data efficiently. If you’ve ever come across PostgreSQL’s documentation and wondered, "What exactly is a B-tree?", this book will make it crystal clear.
It also goes into the common gotchas when working with transactions. You might think that using transactions makes you safe from concurrency issues, but that’s not always the case. The book explains why this happens and offers practical advice on how to avoid race conditions.
What this book isn’t: If you’re a practitioner building distributed systems from scratch and looking for in-depth explanations of algorithms like Raft, Paxos, or other low-level details, this book might not be what you’re looking for. It serves more as a high-level introduction to distributed systems rather than a deep dive into the specifics of consensus algorithms. For those looking for more detailed, foundational material on distributed systems, I’d recommend checking out Tanenbaum’s Distributed Systems.
- Reviewed in the United States on June 3, 2025This book dives deep into its subject with clear structure and thoughtful explanations. The concepts are well-articulated and build on each other logically. However, to truly appreciate the depth and get the most out of it, I recommend reading it with some prior experience or familiarity with the topic. Overall, a highly valuable and rewarding read.
Top reviews from other countries
Nikola ZifraReviewed in the United Arab Emirates on September 18, 20243.0 out of 5 stars Lacks details
Format: PaperbackVerified PurchaseThis book provides a high level overview but unfortunatly lacks quite a bit of detail
Joachim O.Reviewed in the United Kingdom on November 17, 20245.0 out of 5 stars Great in-depth analysis of data architectures
This book covers pretty much all topics which are relevant to managing databases or designing data models in more than 800 pages. It also provides detailed information about the inner workings of databases to the degree that you might be able to implement your own simple database.
The book is very well didactically structured which is no surprise given that the author is a professor at Cambridge. For example, it explains batch processing algorithms (e.g. Map Reduce) and uses this as basis to delve into data streaming. Strong emphasis is laid on the problems with regards to distributed computing (replication, partitioning, node failures, etc.) and the discussion of the compromises one must make.
Overall, an easy recommendation for anyone is interested in data architectures and the inner workings of databases which are the backbone of pretty much any application in today’s world.
VladyslavReviewed in Poland on February 7, 20265.0 out of 5 stars Great book if you want to get into systems design
Format: PaperbackVerified PurchaseThe book's topics vary in complexity, and everyone can find fascinating insights for themselves.
-
AndreaReviewed in Italy on June 9, 20225.0 out of 5 stars Uno dei più bei libri tecnici che abbia mai letto
Format: PaperbackVerified PurchaseSe siete IT appassionati del vostro lavoro e volete capire cosa c'è sotto le cose che usate quotidianamente, questo è un libro da non perdere. Non è un manuale, non è una guida né un tutorial, ma fa fede al sottotitolo: è un "viaggio" nello scibile sulla gestione computerizzata di dati, che aiuta a comprendere al di là del marketing gli strumenti che abbiamo a disposizione.
Il libro è densissimo (come dimostra un bell'indice analitico di 30 pagine su un totale di quasi 600), ricco di riferimenti (come dimostrano le folte bibliografie al termine di ogni capitolo, per lo più risorse online) ed è evidente il background accademico dell'autore. E' un libro che richiede tempo nella lettura e comprensione - se non si saltano i dettagli, si intende... ma nel caso lasciate perdere.
Una buona metà del libro riguarda la modifica concorrente di dati e i sistemi distribuiti, la parte più terrificante e affascinante, dove vengono minuziosamente spiegati i problemi che presentano e gli algoritmi che li risolvono (ad esclusione dei problemi "bizantini"). Ho trovato ..."confortante" l'analisi dell'acronimo ACID :)
Chiude con un'analisi di ciò che l'autore si aspetta per il futuro; molto interessante il concetto di "unbundling" dei database.
Amazon CustomerReviewed in Singapore on January 7, 20265.0 out of 5 stars Insightful read on data management
Format: PaperbackVerified PurchaseThe book provides solid insights into managing data, particularly at scale. It helped clarify concepts I'd been grappling with and offered practical perspectives that go beyond surface-level explanations. Would recommend for anyone looking to deepen their understanding of large-scale data systems.
The book provides solid insights into managing data, particularly at scale. It helped clarify concepts I'd been grappling with and offered practical perspectives that go beyond surface-level explanations. Would recommend for anyone looking to deepen their understanding of large-scale data systems.5.0 out of 5 stars
Amazon CustomerInsightful read on data management
Reviewed in Singapore on January 7, 2026
Images in this review











