Designing Data-Driven Applications Data is at the heart of many of the challenges we face when designing systems today. In addition to identifying difficult-to-solve issues such as scalability, consistency, reliability, efficiency, and maintainability, the variety of tools is overwhelming, including relational databases, NoSQL data stores, stream processors or batch processors, message brokers, Which choice is right for your application? How do you understand these buzzwords
Martin Kleefman examines the advantages and disadvantages of various techniques for processing and storing data in this practical, comprehensive guide. This book will be a good guide for you to navigate through the huge problem space. Software continues to change, but the underlying principles are the same. In this book, software engineers and architects learn how to apply this concept to practice and how to make the most of data in modern applications. Learn how to look inside the system and learn how to use and operate it more efficiently. Identify the strengths and weaknesses of various tools to make informed decisions. Consistency, scalability, fault tolerance , Learn tradeoffs about complexity Understand distributed systems research as a foundation modern databases Understand the backgrounds of key online services and learn service architecture
This book is a must-read for anyone working on modern, large-scale applications. It starts out diving into the finer points of database design and works its way up to a wide array of system design patterns, ranging from messaging to batch processing. There were dozens of points in the book when I thought to myself, gosh I wish I had known about this idea five or ten years ago - it's quite common in systems design to encounter the kinds of problems addressed in this book. The ability to pattern-match a problem "in the wild" to a common dilemma in systems design is absolutely indispensable. This book is quite long, but the insight it provides is well worth the time to read it quite carefully.