![[Pasted image 20231208073651.png]] _Photo by [Tom Hermans](https://unsplash.com/@tomhermans?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit) / [Unsplash](https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit)_ I needed to look up how different database transaction isolation levels work and the types of concurrency errors that can occur at weaker isolation levels. So in the usual fashion, when I need this kind of information, I dig out my trusty copy [Designing Data-Intensive Applications by Martin Kleppmann](https://dataintensive.net/?ref=garrensmith.com) and flip to chapter 7. ![[Pasted image 20231208073721.png]] It had an excellent explanation of transactions, snapshot isolation and different concurrency bugs that can occur.  Each time I read it, I learn something new. This book has been sitting on my desk for the last week and I wanted to write a short ode to it. I've read and enjoyed a fair amount of technical books. But I hardly ever refer back to them once I've read them and I never buy them in actual paper form. I normally purchase the kindle version and read it on my iPad. But Designing Data-Intensive Applications is different. First off, I own two copies. I bought the ebook and loved it so much that I bought a physical copy. Second, it was a book that really helped shape my career over the last few years. I spent a few years working at Cloudant where I got the opportunity to work on the Apache CouchDB dashboard. I knew some of the basics around distributed databases but very little about how they work internally and what it means when a system is distributed. This book was a great intro and starting point to developing a greater understanding of databases and distributed systems. It explained database concepts in a really easily digestible way and helped me understand the concepts at a theoretical level and also understand the consequences of every distributed and database design decision. The book gave me the confidence to start working on CouchDB itself, I could start to think in terms of the design principles of distributed systems. Since then I've written a lot of code for CouchDB and later the CouchDB on FoundationDB project. I used a lot of the principles around storage, data encoding, querying and transactions that are taught in this book. I read the book in 2017 and it is still very relevant today, it has sold over 100 000 copies and is one of the most popular books for O'Reilly publishers. For a peak about the curtains on writing the book, Martin gives an excellent overview of the [success of his book](https://martin.kleppmann.com/2020/09/29/is-book-writing-worth-it.html?ref=garrensmith.com) and if it is worth writing a book. Hopefully, by now it's obvious, I love this book. It's worth reading. You can pick any chapter and read it stand-alone or read the book from beginning to end. There is value on every page.