Once, when I picked up a book from the local library, the librarian asked to tell her what I thought about the book when I would bring it back. Well, why not write a few lines about all the books I read so everybody could see what I thought about it? I'm often also happy to have friends recommend a certain book or tell me this and that is not really worth reading. I won't comment about the tons of books I have read so far, but about books I read from now on.
highly recommended | sehr empfohlen | |
good reading | gutes lesematerial | |
average | durchschnittlich | |
not too interesting | nicht allzu interessant | |
recommended not to read it | empfehlung das buch nicht zu lesen |
![]() |
|
---|---|
title | Designing Data-Intensive Applications |
author | Martin Kleppmann |
ISBN-10 | 1-449-37332-1 |
ISBN-13 | 978-1-449-37332-0 |
ASIN | |
rating | |
date | 2021-Jun-12 |
This is one of the best technical books I have ever read. Not only is it comprehensive and thorough, but also comprehensible. Martin Kleppmann has a knack for explaining things in a manner that is easy to understand and follow, even if their complexity is non-trivial.
Rather than telling you step-by-step how to design your data applications, it gives you a very good and broad idea about what to watch out for, where mistakes and difficulties are lurking and what options you have, what the advantages and disadvantages are of various options and approaches.
In the first part, the book briefly talks about reliability, scalability and maintainability, data models, different possibilities for storing and retrieving data, including encodings. And it does not forget about the fact, that you might want or need to adapt your data structures over time due to new requirements.
Sometimes you might need to distribute your data over several machines, be it to meet a higher load, for faster response time in different locations, because the whole dataset is too big for a single machine, for redundancy or simply because the whole set of data consists of various systems, each holding a different part of the data but all of them with the need to keep in sync. As soon as multiple systems are involved, things get way more complicated and fragile. That's what the second part is all about.
The last part is mainly about different ways to process data. Not every access to data is a query to a database. There are many other situations where you need to process data and possibly in a very different style.
At the end of each chapter, there are several pages of references for further information.
I'm convinced, if this book was required reading for every programmer and system administrator, we would see more quality in how applications and systems are designed.