Designing Data-Intensive Applications
You rarely find a book on a technical subject that is a nearly perfect combination of solid theory and hard-won practical experience about designing data-intensive applications.
Publisher's Abstract
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.
Why You Should Read This
You rarely find a book on a technical subject that is a nearly perfect combination of solid theory and hard-won practical experience. This book is one of them, and it is highly relevant for the daily job of many of us: Building data-intensive business information systems.
Starting from a clear definition of fundamental concepts like Reliability, Scalability and Maintainability, the book gives a much needed overview of different architectural styles and tradeoffs for building data-intensive systems with modern technologies.
Many new tools for data storage and processing have emerged in recent years. They are optimized for a variety of different use cases, and they no longer neatly fit into traditional categories. For example, there are datastores that are also used as message queues (Redis), and there are message queues with database-like durability guarantees (Apache Kafka). The boundaries between the categories are becoming blurred.
Secondly, increasingly many applications now have such demanding or wide-ranging requirements that a single tool can no longer meet all of its data processing and storage needs. Instead, the work is broken down into tasks that can be performed efficiently on a single tool, and those different tools are stitched together using application code.
This is not a small book, it has 616 pages. There is a German translation available, but we did not check its quality, since we were disappointed with many translations of technical books in the past.
- Published: March 2017
- Authors: Dr. Martin Kleppmann (University of Cambridge, UK)
- Details: Read it at O'Reilly