Summary
This book argues that understanding fundamental principles of data systems, rather than just buzzwords and specific tools, is crucial for designing scalable, reliable, and maintainable applications. It helps engineers and architects navigate the diverse landscape of relational databases, NoSQL datastores, stream processors, and message brokers by examining the trade-offs around consistency, scalability, fault tolerance, and complexity inherent in these technologies.
Readers will gain the ability to make informed decisions by identifying the strengths and weaknesses of different tools, understand the distributed systems research underlying modern databases, and learn from the architectures of major online services. The book aims to enable readers to operate and effectively use data-intensive systems by peering under their hoods and applying core ideas in practice.
Key concepts
- Scalability — The ability of a system to handle a growing amount of work.
- Consistency — Ensuring that data is the same across different parts of a system.
- Reliability — The ability of a system to perform its intended function correctly and consistently.
- Maintainability — The ease with which a system can be modified or repaired.
- Fault Tolerance — The ability of a system to continue operating despite the failure of some of its components.
From the book
Description: 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