
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Complex 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. How do you make sense of all these buzzwords? What are the right choices for your application?
The software keeps changing, but the fundamental principles remain the same. 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. With this book, software engineers and architects will learn how to apply those ideas in practice and 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 to build a modern database
- Peek behind the scenes of primary online services, and learn from their architectures