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