Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for y
If you are after the obscure details of a particular product, or some tutorials and "how-to"s, go elsewhere. But if you want to unde ...more
I learned a lot about replication, partitioning, linearizability, locking, write skew, phantoms, transactions, event logs, and more. I'm ...more
Plus, it's definitely one of the best technical books I've read in years - but still, it doesn't mean you should run straight away to your bookshop - read up to the end of the review first.
I'll risk the statement that this book's content will not be 100% directly applicable to your work, BUT it will make you a better engineer in general. It's like with reading books about Haskell - most likely you'll never use this language for any pra ...more
Recommendations are well-reasoned, citations are helpful and are leading me to do a lot more reading.
Thank you for finding and sharing this one, @Chet. I think this will be a book we assign as a primer for working at Goodreads going forward. At least some of the (later) chapte ...more
I’m still not quite sure who the intended audience of this book is, but it’s definitely not me. The intro chapter discusses the example of Twitter’s fan-out writes and how they balanced typical users with celebrities who have millions of followers. Because of that intro, I expected a series of architecture patterns and ...more
Definitely a book I see myself reaching for as a reference or me ...more
If you know a lot about serialization: JSON, Avro, Google Protocol Buffers, MessagePack, you name it; db data structures: WAL, B+Tree, LSM, you name it; distributed systems: consensus (Paxos, Raft), messaging (at-least-once, at-most, idempotence), partitioning, you won't gain a lot.
If you read tens of whitepapers, read _internals_ books, you won't gain a lot.
If you run Jepsen tests on your own product, you won't gain a lot.
But if yo ...more
In part II, the boo ...more
Going in, I thought I would be reading something like the classic System Design prep Github repos with a lot of information told very quickly. You should know that this is purely about the data part: Kleppmann goes in depth on databases, message brokers, batch processing from the perspective of how the pieces of data are affected. There is less on pure infrastruc ...more
What I liked about it: The amount of information and the wast contexts that it covers: important concepts likes response time percentiles, linearisability, serializability and etc. explained; deep dive into database theory, different ...more
What is the meaning of Data-Intensive?
We call an application data-intensive if data is its primary challenge- the quality of data, the complexity of data, or the speed at which it is changing.
Who should read this book?
I think that all developers must read this book. If you develop applications that have some kind of server/ backend for storing or processing data, and your application use the internet, then this book is for you.
Why should you, as ...more
The book is split into 3 parts. Each one of them is incredibly packed with information.
1. Foundations of System Data
Here Mr Kleppmann describes basics of how databases, indices and different encodings work. This chapter is essential to understand the next parts of the book. Even though it might sound like an appetizer you can already find here plenty of meat about schema (a ...more
Part I of the book covers the fundamentals (e.g. how to handle data on a single machine). Part II covers Distributed data: how to handle it and issues you'll fa ...more
I have written a summary of all the chapters on my blog: https://henrikwarne.com/2019/07/27/bo... ...more
But what makes it so great, an inquisitive mind might ask? There wasn't a lot of practical value in it, at least not of the kind that would be instantly ap ...more
|Streaming Annotat...: 2020 March/April: Designing Data-Intensive Applications||1||26||Apr 03, 2020 06:22AM|
|Seven things to consider- create an app like Uber||1||7||Jan 23, 2020 11:13AM|
|Futurice: Recommendation: Designing Data-Intensive Applications||1||56||Jul 06, 2017 04:41AM|
Goodreads is hiring!
Learn more »