NoSQL
NoSQL is an umbrella term for databases that depart from the strict relational, SQL-based, table-and-row model. The category emerged in the late 2000s as web-scale applications needed horizontal scaling and flexible schemas that traditional relational systems struggled to provide. NoSQL is not a single technology but four broadly recognised families.
The four families
- Document. JSON-like documents with flexible schema. Examples: MongoDB, Couchbase, Firestore, DynamoDB (in document mode).
- Key-value. Pure key-to-value lookup, often in memory. Examples: Redis, Memcached, DynamoDB (in key-value mode), Riak.
- Column-family. Sparse, wide tables grouped into column families, optimised for write-heavy and analytical reads. Examples: Cassandra, ScyllaDB, HBase, Bigtable.
- Graph. Nodes and edges with first-class traversal queries. Examples: Neo4j, Amazon Neptune, ArangoDB, TigerGraph, Memgraph.
What NoSQL trades
- Often weaker consistency models (eventual or tunable) in exchange for horizontal scaling and availability.
- Often weaker joins and transactions in exchange for simpler scaling stories.
- Often more flexible schemas at the cost of stricter constraint enforcement.
Modern relational databases have absorbed many NoSQL features (JSON columns, horizontal scaling, multi-region), and many NoSQL systems have added transactions; the boundary is no longer sharp.
🔗
📖
Further Reading
The Cost of SQL Habits on MongoDB Infrastructure
The Cost of SQL Habits on MongoDB Infrastructure