← All Concepts
Databases
SQL vs NoSQL Databases
Understanding when to choose relational (SQL) vs non-relational (NoSQL) databases based on data model and access patterns.
**SQL databases** (PostgreSQL, MySQL): Structured data, ACID transactions, joins, schema enforcement.
**NoSQL types:**
- **Document** (MongoDB, DynamoDB): JSON-like documents, flexible schema
- **Key-Value** (Redis, DynamoDB): Simple get/put, highest throughput
- **Wide-Column** (Cassandra, HBase): Column families, great for time-series
- **Graph** (Neo4j, Neptune): Relationships between entities
**Choose SQL when:**
- Data has clear relationships (joins needed)
- ACID transactions are critical (financial data)
- Schema is well-defined and stable
- Complex queries (aggregations, reporting)
**Choose NoSQL when:**
- Flexible/evolving schema
- Massive scale with simple access patterns
- High write throughput needed
- Data is denormalized or hierarchical
**Hybrid approach:** Use both. SQL for transactional data, NoSQL for high-volume reads, search index for queries.
Common Use Cases
- User profiles → Document DB (flexible attributes)
- Financial transactions → SQL (ACID)
- Session storage → Key-Value (fast, simple)
- Social connections → Graph DB (relationship traversal)
Advantages
- +SQL: strong consistency, powerful queries, mature tooling
- +NoSQL: horizontal scaling, flexible schema, high throughput
- +Hybrid approach leverages strengths of both
- +Each NoSQL type optimized for specific access patterns
Disadvantages
- -SQL: harder to scale horizontally, rigid schema
- -NoSQL: limited joins, eventual consistency, less mature tooling
- -Hybrid: operational complexity of managing multiple systems
- -Wrong choice leads to fighting the database instead of using it