SQL für relationale Daten und Transaktionen, NoSQL für Flexibilität und horizontale Skalierung.
SQL¶
- ACID-Transaktionen
- Festes Schema
- JOIN-Operationen
- Primär vertikale Skalierung
- PostgreSQL, MySQL, SQLite
NoSQL¶
- Verschiedene Modelle (Dokument, Key-Value, Graph, Spalten)
- Flexibles Schema
- Horizontale Skalierung
- Eventual Consistency (typisch)
- MongoDB, Redis, Cassandra, DynamoDB
CAP-Theorem¶
Ein verteiltes System kann maximal 2 von 3 garantieren: Consistency, Availability, Partition Tolerance. SQL bevorzugt CP, NoSQL oft AP.
Wann was verwenden¶
- SQL — relationale Daten, Transaktionen, Reporting, Analytics
- Dokument (MongoDB) — flexible Schemata, CMS, Kataloge
- Key-Value (Redis) — Cache, Sessions, Counter
- Wide-Column (Cassandra) — Zeitreihen, schreibintensiv
- Graph (Neo4j) — soziale Netzwerke, Knowledge Graphs
SQL ist der Standard¶
SQL für die meisten Anwendungsfälle. NoSQL für spezifische Workloads.
sqlnosqldatabáze