More on this book
Community
Kindle Notes & Highlights
Read between
December 29, 2018 - July 12, 2020
Reliability means making systems work correctly, even when faults occur.
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.
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
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.”
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)