Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Rate it:
Open Preview
3%
Flag icon
Reliability means making systems work correctly, even when faults occur.
3%
Flag icon
Scalability means having strategies for keeping performance good, even when load increases. In order to discuss scalability, we first need ways of describing load and performance quantitatively.
5%
Flag icon
It’s possible to reduce the need for joins by denormalizing, but then the application code needs to do additional work to keep the denormalized data consistent. Joins can be emulated in application code by making multiple requests to the database, but that also moves complexity into the application and is usually slower than a join performed by specialized code inside the database. In such cases, using a document model can lead to significantly more complex application code and worse performance
31%
Flag icon
In the CAP theorem (see Chapter 9), the word consistency is used to mean linearizability (see “Linearizability”). In the context of ACID, consistency refers to an application-specific notion of the database being in a “good state.”
62%
Flag icon
A complex system that works is invariably found to have evolved from a simple system that works. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. John Gall, Systemantics (1975)