Learning Diary: Designing Data Intensive Applications by Martin Kleppmann
I tend to read a technical book twice before I can convince myself that I've actually read the book. The first time is typically during my commute to work, and the second time is when I'm home and try to take notes from the book.
This post is to share the notes I've taken while reading Martin Kleppmann's book: Designing Data-Intensive Applications. This was inspired by Jasdev's attempt to learn in public and I hope that you can learn a thing or two from my notes.
A few disclaimers:
- This is not meant to be a substitute for the book, and you will rob yourself of a lot of useful knowledge if you use these notes as a replacement for the book. If any of the topics covered interest you, buy the book! If you can't afford to buy the book, send me an email and I'll gift it to you.
- The first seven chapter notes I'll share were written without a public audience in mind. I had no intention of sharing these notes at the beginning. As such, you might find some mistakes. I've tried to get rid of those, but it's possible I missed some. If you find any that you want to correct, please reach out via email too.
- Lastly, these posts will differ from the more expository deep-dive posts like this one that I'll also post on this blog. If you manage to gain from my learning diary, that's great! If you come across a topic that you want to learn more about, you can leverage the numerous resources online about that topic, or reach out to me to write about it.
Part One - Foundations of Data Systems
- Chapter 1 - Reliable, Scalable and Maintainable Applications.
- Chapter 2 - Data Models and Query Languages.
- Chapter 3 - Storage and Retrieval.
- Chapter 4 - Encoding and Evolution.
Part Two - Distributed Data
- Chapter 5 - Replication
- Chapter 6 - Partitioning
- Chapter 7 - Transactions
- Chapter 8 - The Trouble with Distributed Systems
- Chapter 9 - Consistency and Consensus (Part One)
- Chapter 9 - Consistency and Consensus (Part Two)