Skip to content

DDIA: Designing Data-Intensive Applications

Descriptions

  • Source: Martin Kleppmann (University of Cambridge)
  • Prerequisites: Database fundamentals, networking fundamentals, OS fundamentals
  • Difficulty: 🌟🌟🌟🌟
  • Class Hour: 80+

Designing Data-Intensive Applications (DDIA) by Martin Kleppmann is considered the "bible" of backend development by countless engineers.

The book's theme: how to design and build large-scale, reliable, scalable data systems. It's not a tutorial for any single technology — it builds comprehensive understanding of distributed data systems.

Resources

Core Content

Part 1: Foundations of Data Systems

  • Data models and query languages
  • Storage and retrieval (B+ trees, LSM trees, column stores)
  • Encoding and evolution (JSON, Protobuf, Avro, Thrift)

Part 2: Distributed Data

  • Replication (primary-replica, multi-leader, leaderless)
  • Partitioning (hash, range)
  • Distributed transactions and consensus (2PC, Paxos, Raft)

Part 3: Derived Data

  • Batch processing (MapReduce, Spark)
  • Stream processing (Kafka, Flink)
  • The future of data systems

Self-Study Tips

Build foundations first. The book assumes knowledge of basic databases and networking.

Read by topic, not sequentially. Choose chapters based on your needs.

Do the review questions. Each chapter has questions to test your understanding.

Notes

DDIA is essential reading for backend engineers. Without understanding it, you can only call APIs; with it, you can design systems.

It's also a reference for system design interviews at many major companies.