With Early Release ebooks, you get books in their earliest form—the author's raw and unedited content as he or she writes—so you can take advantage of these technologies long before the official release of these titles. You'll also receive updates when significant changes are made, new chapters as they're written, and the final ebook bundle.
Data is at the center of many great challenges in system design. There are so many tools to choose from: databases, NoSQL datastores, stream and batch processors, caches, indexes, message brokers, and so on. Moreover, there are so many issues to consider: scalability, consistency, reliability, efficiency, maintainability. How do you make the right choices for your application? How do you make sense of all the buzzwords?
Designing Data-Intensive Applications is a comprehensive guide to the landscape of systems for storing and processing data. In this book, Martin Kleppmann covers a wide range of popular technologies, comparing their pros and cons. Although software keeps changing, the fundamental ideas behind it stay the same. Through this book, you’ll understand those principles, how they apply in practice, and how make full use of data in your applications.
With this book, you will:
- Look under the hood of the systems you already use, so that you can use them more effectively and diagnose any issues
- Know the strengths and weaknesses of different tools, letting you make informed decisions
- Learn to 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 experience