Designing Data-Intensive Applications
by Martin Kleppmann
This book is a masterpiece. It connects the dots between different data systems and explains the trade-offs in distributed systems design with incredible clarity. A must-read for any backend engineer.
It also inspired me to build my own database engine. Especially the chapter about storage and retrieval was very insightful and served as a good foundation in building a miniature database engine. It explained in such a simple way how the design of underliying data structures in database systems affect the performance of the system. From key value files to B-Trees and finally to distributed systems, nothing was left unmentioned.
While Designing Data-Intensive Applications is a masterpiece, it is not a Database Design book. It is a book about distributed systems and the trade-offs in distributed systems design. If you want to become a well rounded systems engineer, this book is definitely a must-read. Looking forward to read the new edition of this book coming out in spring 2026.