Designing Data-Intensive Application

Book by Martin Kleppmann

Martin Kleppmann Researcher

Data is at the heart of many system design challenges today. Difficult issues like scalability, consistency, reliability, efficiency, and maintainability need to be addressed. We also have an overwhelming variety of tools, including relational databases, NoSQL data stores, stream or batch processors, and message brokers.

What are the right decisions for your application? How do you understand all of these buzzwords?

Designing Data-Intensive Applications PDF

In this practical and comprehensive guide, author Martin Kleppmann will help you find your way around this diverse landscape by examining the advantages and disadvantages of various technologies for processing and storing data. Software is constantly changing, but the basic principles remain the same. With this book, software engineers and architects learn how to put these ideas into practice and how to make optimal use of data in modern applications.

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

If you are developing applications that have some server / back-end to store or process data, and your applications use the Internet (such as web applications, mobile applications or sensors connected to the Internet), then this book is for you.

This book is aimed at software engineers, software architects and technical managers who love programming. This is especially true if you need to make decisions about the architecture of the systems you are working on, for example, if you need to choose the tools to solve a certain problem and figure out how to best apply them. But even if you don't have the option to choose tools, this book will help you better understand your strengths and weaknesses.

You must have some experience in building web applications or network services, and you must be familiar with relational databases and SQL. Any non-relational databases and other data-related tools you know are good, but not mandatory.

A general understanding of common network protocols such as TCP and HTTP is useful. Your choice of programming language or framework is irrelevant to this book.