NoSQL is an umbrella term for data stores whose primary model is not the conventional relational table-and-join model. The label includes key-value, document, wide-column, graph, search, and time-series systems, but their capabilities overlap: some enforce schemas, support transactions, or provide join-like operators.

Reach for a specialized store when a measured workload is dominated by an access pattern it serves better, such as point reads by key, aggregate-shaped documents, relationship traversal, text search, or high-rate time-series ingestion. Keep a relational database as the baseline when constraints, multi-entity transactions, and ad-hoc joins are central. The hard part is choosing a concrete engine and modeling its consistency, partitioning, and query boundaries—not choosing a label.

flowchart TD
  A[Start from required queries and invariants] --> B{Constraints and multi-entity transactions dominate}
  B -->|Yes| C[Relational baseline]
  B -->|No or complementary workload| D{Dominant access pattern}
  D -->|Point lookup| E[Key-value]
  D -->|Aggregate document| F[Document]
  D -->|Wide partition or high-rate series| G[Wide-column or time-series]
  D -->|Relationship traversal| H[Graph]
  D -->|Text relevance| I[Search index]

How It Works

NoSQL is not one model. Common families optimize different operators and storage layouts, and one product can expose several models. Pick an engine from the reads, writes, invariants, and failure behavior you need, then model data around those operations.

Distributed NoSQL systems make different CAP theorem choices. Cassandra commonly keeps serving through a partition with tunable consistency, while systems such as MongoDB replica sets or strongly consistent key-value services may reject operations that cannot reach the required authority. Relational systems can also be distributed, and NoSQL systems can offer strong or transactional operations within documented scopes. Query-first denormalization is common because co-locating a read shape avoids remote joins, but it creates duplicate state and write-side repair work.

Tradeoffs

DimensionCommon relational defaultCommon NoSQL patterns
ConsistencyACID transactions across rows and tables within the engine’s scopeEngine-specific: strong, causal, eventual, or tunable; transaction scope varies
SchemaDatabase-enforced table and constraint schemaFlexible, application-enforced, or database-enforced depending on engine
RelationshipsGeneral joins and foreign keys are normalEmbedded, denormalized, traversed, or joined where the engine supports it
ScalingScale-up, replicas, partitioning, or distributed SQLSome engines are built around partitioned scale-out; others are single-node or leader-bound
Strong fitIntegrity-heavy transactions and evolving query combinationsStable specialized access patterns whose measured benefit pays the modeling cost

Questions

References

5 items under this folder.