Book review: Designing Data-Intensive Applications, by Martin Kleppmann

by Harry, 2020-05-12

I bought this book on the strength of its reviews, and I am very happy to add my own to the long list of five-stars.

The book’s aim is to help people to choose the right database technology for their problem. It does so by explaining, at quite a decent level of detail:

  • How various databases, algorithms and data structures work.
  • What guarantees they can give and what they cannot.
  • Examples of edge cases and unexpected behaviours.

It certainly has the potential to be unbelievably dry. But there are two things, I think, that mean it actually turns out to be quite a page-turner The first is if the reader is actually interested in the subject matter. I certainly was; it filled a lot of gaps in my knowledge. But the second is the quality of the writing. Somehow Kleppmann manages to give the whole thing the feeling of the old “but wait, there’s more!” comedy sketch trope.

Each chapter starts with a problem (eg “how do we manage concurrent access to the database?” and then presents some seemingly straightforward solutions (“transactions!”), then it goes on to explain them in detail, and along the way we learn all sorts of horrible gotchas, and new, thornier, more subtle problems that have been thrown up. And that leads us on to the next chapter, like an unbelievably nerdy cliffhanger. I couldn’t put it down.

It’s really well balanced between academic and practical engineering concerns, it’s extensively footnoted, it’s really well explained with good examples, and it ends on a thoughtful, philosophical note. If any of this sounds appealing at all, go read it no!

Plus he’s quite a fan of the event-driven approach ;-)