← Books

Designing Data-Intensive Applications

· Martin Kleppmann · ★★★★★ · 1 min read

The book I recommend most often, and the one I’ve reread most.

It doesn’t teach you a technology — it teaches you the trade-offs underneath all of them, so that when a new database shows up you already know which four questions to ask it. Replication strategy, partitioning scheme, consistency model, failure behaviour.

What changed how I work

Chapter 5 (Replication). Understanding replication lag as a correctness problem rather than a performance one. Read-your-own-writes isn’t a nice-to-have; it’s the difference between a working feature and a bug report.

Chapter 7 (Transactions). The isolation level section is the clearest explanation of write skew I’ve read. I’ve since found two real bugs in our code that were exactly this — a check-then-act under READ COMMITTED.

Chapter 9 (Consistency and Consensus). Slow going, worth it. It’s where “just use a distributed lock” stops sounding like a solution.

Caveats

The stream-processing chapters have aged the fastest — the ecosystem moved. The fundamentals haven’t moved at all.

Read it slowly. A chapter a week, with the references, is better than a rushed pass.