Quick reference. See Databases for detail.
NoSQL
- Favours availability and partition tolerance (CAP — usually AP)
- Easier to scale horizontally
- Eventual consistency in many cases
- Flexible schema — good when structure is unknown or evolves
- Access pattern driven design
SQL
- ACID transactions
- Strong consistency
- Harder to scale horizontally; possible via sharding/partitioning
- Tabular, normalised data with joins
- Good when the data model is well understood up front
When choosing
- Is the schema and access pattern known?
- Scale and latency requirements?
- Need for joins, transactions, or strong consistency?
See also: System Design