Skip to main content

About the book

“Designing Data-Intensive Applications” by Martin Kleppmann is the definitive guide to building modern data systems. This book has become essential reading for software engineers, architects, and anyone working with large-scale data.

Book structure

The book is organized into three parts that progressively build your understanding of data systems:

Foundations of data systems

The first four chapters establish the fundamental concepts you need to understand any data system:
1

Reliability, scalability, and maintainability

Foundation chapter covering the three fundamental concerns in software systems: fault tolerance, handling growth, and long-term system health.
2

Data models and query languages

Explore relational, document, and graph databases, along with their query languages and trade-offs.
3

Storage and retrieval

Deep dive into database internals: hash indexes, SSTables, LSM-trees, B-trees, and OLTP vs. OLAP storage.
4

Encoding and evolution

Learn about data encoding formats (JSON, Protocol Buffers, Avro), schema evolution, and compatibility.

How to use these notes

These notes are designed to complement your reading of the book, not replace it. Here’s how to get the most value:

Read alongside the book

Use these notes as a companion while reading each chapter to reinforce concepts with additional examples and diagrams.

Quick reference

Return to these notes when you need to recall key concepts or patterns while working on real systems.

Visual learning

Study the Mermaid diagrams to visualize complex concepts like replication topologies and data flow.

Sequential reading

Work through the chapters in order, as later chapters build on concepts introduced earlier.
Each chapter includes practical insights and real-world examples that extend beyond the book’s content, helping you apply these principles to production systems.

What makes this book special

“Designing Data-Intensive Applications” stands out because it focuses on principles rather than specific technologies:
  • Technology-agnostic: Learn fundamental concepts that apply across databases and frameworks
  • Comprehensive scope: Covers everything from single-machine databases to distributed systems
  • Practical focus: Emphasizes real-world trade-offs and design decisions
  • Timeless principles: Core concepts remain relevant as technologies evolve
This book requires a solid understanding of basic programming and database concepts. If you’re new to databases, consider starting with introductory material first.

Getting the book

You can purchase “Designing Data-Intensive Applications” from:
  • O’Reilly Media
  • Major book retailers (Amazon, bookstores, etc.)
  • Digital formats (Kindle, PDF, ePub)

Start your journey

Begin with Chapter 1

Start learning about reliable, scalable, and maintainable applications

Build docs developers (and LLMs) love