SQL for relational data and transactions, NoSQL for flexibility and horizontal scaling.
SQL¶
- ACID transactions
- Fixed schema
- JOIN operations
- Primarily vertical scaling
- PostgreSQL, MySQL, SQLite
NoSQL¶
- Various models (document, key-value, graph, columnar)
- Flexible schema
- Horizontal scaling
- Eventual consistency (typically)
- MongoDB, Redis, Cassandra, DynamoDB
CAP Theorem¶
A distributed system can guarantee at most 2 of 3: Consistency, Availability, Partition tolerance. SQL prefers CP, NoSQL often AP.
When to Use Which¶
- SQL — relational data, transactions, reporting, analytics
- Document (MongoDB) — flexible schemas, CMS, catalogs
- Key-Value (Redis) — cache, sessions, counters
- Wide-Column (Cassandra) — time series, write-heavy
- Graph (Neo4j) — social networks, knowledge graphs
SQL Is the Default¶
SQL for most use cases. NoSQL for specific workloads.
sqlnosqldatabáze