## TL;DR
NoSQL databases use non-relational models optimized for specific data patterns and scalability. Four types: Key-Value (Redis, DynamoDB), Document (MongoDB, Couchbase), Column-Family (Cassandra, HBase), Graph (Neo4j, Amazon Neptune). Choose NoSQL for: flexible schema, horizontal scaling, specific data models (graphs, time-series).
## Core Explanation
Key-Value: simplest — `get/set` by key, ultra-fast, no query language. Document: JSON/BSON documents, query by content, flexible schema. Column-Family: columns grouped into families, optimized for writes, used in time-series/IoT. Graph: nodes + edges, optimized for relationship queries (friend-of-friend, recommendation). NewSQL (CockroachDB, Spanner): ACID + horizontal scaling — best of both worlds.
## Further Reading
- [NoSQL Distilled (Sadalage & Fowler)](undefined)