👈

Designing Data-Intensive Applications

Author: Martin Kleppmann

Last Accessed on Kindle: Feb 22 2024

Ref: Amazon Link

In this book, we focus on three concerns that are important in most software systems:

To this end, we will pay particular attention to three design principles for software systems:

If the data in your application has a document-like structure (i.e., a tree of one-to-many relationships, where typically the entire tree is loaded at once), then it’s probably a good idea to use a document model.

If your application does use many-to-many relationships, the document model becomes less appealing.

For highly interconnected data, the document model is awkward, the relational model is acceptable, and graph models (see “Graph-Like Data Models”) are the most natural.

Your application has mostly one-to-many relationships (tree-structured data) or no relationships between records, the document model is appropriate. But what if many-to-many relationships are very common in your data? The relational model can handle simple cases of many-to-many relationships, but as the connections within your data become more complex, it becomes more natural to start modeling your data as a graph.

Idea of evolvability: we should aim to build systems that make it easy to adapt to change (see