•
the trade is a fixed relational schema with joins against a flexible one that pushes joins into the application
•
third normal form removes update anomalies by storing each fact once, at the cost of joins on every read
•
duplicating a fact buys read speed and pays for it with every write having to update several copies
•
validating at write time makes the reader's life predictable; deferring it makes ingestion cheap and every reader responsible
•
atomicity, consistency, isolation and durability are four separate promises, and systems relax them independently
•
a transaction applies wholly or not at all, so a partial failure leaves no half-written state behind
•
keeping several versions of a row lets a reader see a consistent snapshot without blocking a concurrent writer
•
the access pattern is a single known key, which is what makes the store trivially partitionable
•
a self-contained document suits data read as a unit, and makes cross-document queries the expensive case
•
a partition key plus a clustering key optimizes for wide rows read in ranges, not for ad-hoc queries
•
the fit is traversal depth: a query following many hops is where a graph engine beats repeated joins
•
append-mostly, time-ordered data with retention and downsampling built into the storage layer
•
a hash index answers equality only; a range scan needs an ordered structure
•
an index on (a, b, c) serves a leading prefix of those columns, not an arbitrary subset
•
when the index holds every column the query reads, the engine never touches the table itself
•
an index only pays off when it eliminates most rows; on a low-cardinality column a scan wins
•
a warehouse is modelled for wide analytical scans, not for the small transactional writes an application makes
•
transforming before loading protects the destination's schema; loading first moves the work to where the compute is
•
nearest-neighbour search trades exactness for latency, because an exact scan of high-dimensional vectors does not scale
•
vectors written by one model cannot be compared with vectors from another, so a re-embed is a migration