Why am I writing this reading note?
In my previous roles, I worked extensively with databases, but I never had the chance to study them systematically. Most of my knowledge came from hands-on experience with internal systems and best practices passed down by colleagues. While this approach helped me solve real-world problems, I often felt my understanding was incomplete—I could get things working, but I didn’t fully grasp the underlying principles.
Reading this book has helped bridge those gaps, giving me a deeper understanding of databases as stateful, programmable systems. My goal is to build a solid technical foundation that enables me to design more reliable applications. Beyond covering fundamental concepts, the book also revealed many unknowns, helping me make more informed decisions when choosing technologies.
For example, its discussion on the convergence of relational and document-based data models made me realize that choosing between SQL and NoSQL shouldn’t just be about scalability or transactions per second (TPS). Instead, the decision should be guided by the specific needs of the application. The book’s insights on replication, failure handling, and resilience strategies have given me practical tools for managing system failures—an essential skill for any engineer working with production systems.