- 1 Section
- 10 Lessons
- unbegrenzt
- NoSQL – MongoDB, Redis & Grundlagen10
Wann SQL, wann NoSQL?
Acht Lektionen Theorie liegen hinter dir – jetzt die wichtigste Frage der gesamten Datenbank-Welt: Wann nehme ich was? Diese Lektion ist eine pragmatische Entscheidungshilfe. Sie kombiniert das Wissen aus den vorigen Lektionen zu einem Werkzeugkasten für reale Architektur-Entscheidungen.
Vorab das wichtigste Pragma: es gibt keine pauschal richtige Antwort. „SQL ist besser" oder „NoSQL ist moderner" sind beide falsch. Die Frage ist immer: welches Werkzeug passt zu welchem Problem? Wer das Werkzeug vor dem Problem wählt, hat den ersten Fehler schon gemacht.
1) Die fünf Schlüsselfragen
Wenn du vor der Wahl stehst, gibt es fünf Fragen, deren Antworten dich meistens schon zur Lösung führen. In der Reihenfolge ihrer Wichtigkeit:
- Wie sind die Daten strukturiert? Streng tabellarisch mit festen Spalten, oder variabel mit unterschiedlichen Feldern pro Datensatz?
- Wie wichtig sind Transaktionen? Brauchst du harte ACID-Garantien (z.B. Geldbeträge) oder reicht eventually consistent?
- Wie groß ist die Datenmenge / wie hoch ist die Last? Passt es auf einen großen Server, oder muss horizontal über viele Knoten skaliert werden?
- Welche Abfragen sind typisch? Komplexe JOINs und Aggregationen, oder einfache Lookups nach Schlüssel?
- Welche Tools und welches Know-how hat das Team? Auch der „menschliche Faktor" zählt.
Diese fünf Fragen lassen sich zu einem Entscheidungsbaum verdichten. Klick dich durch:
2) Der Entscheidungsbaum
3) Vergleichs-Matrix nach Kriterien
Wenn du eine bestimmte Anforderung hast, zeigt dir diese Tabelle, was jeweils besser ist. Eine Eigenschaft bedeutet nicht automatisch „immer gewinnen" – sie zeigt die Tendenz:
4) Polyglot Persistence – beide nutzen
Die wichtigste Erkenntnis dieser Lektion: in nicht-trivialen Architekturen ist „SQL vs. NoSQL" oft die falsche Frage. Die richtige Frage ist „welche Daten in welche DB?". Das nennt man Polyglot Persistence – mehrere Datenspeicher parallel, jeden für das was er kann. Eine typische Architektur eines mittelgroßen Online-Shops sieht z.B. so aus:
5) Typische Fehlentscheidungen
Bevor wir zu konkreten Szenarien kommen, ein paar verbreitete Fallen, die immer wieder Geld und Nerven kosten:
- NoSQL wählen, weil es „skaliert". Skalierung ist erst relevant, wenn man eine wahrnehmbare Last hat. Bis dahin ist eine relationale DB einfacher zu betreiben. Wer eine kleine Anwendung „cloud-native auf NoSQL" baut, schafft Komplexität ohne Nutzen.
- NoSQL wählen, weil das Schema „flexibel" sein soll. Oft heißt das nur, dass das Datenmodell unklar ist. Lieber das Modell sauber durchdenken und auf SQL setzen – sonst landet die Komplexität nur in der Anwendung statt im Schema.
- SQL wählen, ohne über Skalierung nachzudenken. Manche Use Cases (z.B. IoT mit Milliarden Datenpunkten pro Tag) sind mit einer einzelnen SQL-DB nicht handhabbar. Hier ist NoSQL keine Option, sondern Pflicht.
- „Wir nehmen NoSQL und denken später über JOINs nach": wenn die Anwendung später Reports braucht, ist das Daten-Design oft so, dass
$lookup-Ketten oder Datenduplizierung nötig sind. Vorher überlegen! - Cache und primäre DB verwechseln: Redis hält Daten im RAM. Wenn die nicht zusätzlich woanders persistiert werden, gehen sie bei einem Crash verloren. Das ist okay für Cache und Session – nicht für Geschäftsdaten.
6) Mythen aufgeräumt
Drei hartnäckige Aussagen, die oft falsch sind:
7) Konkrete Empfehlungen nach Anwendungstyp
Hier eine pragmatische Empfehlung für die häufigsten Anwendungs-Typen, die in der Praxis vorkommen:
- Business-Anwendung mit klassischen Daten (CRM, ERP, Buchhaltung, klassisches Backend): SQL (PostgreSQL, MySQL). Optional Redis für Cache und Sessions.
- Web-/Mobile-App mit User-generated Content (CMS, Social, Foren): SQL als primäre DB, MongoDB für variable Content-Typen, Redis für Performance.
- Online-Shop: SQL für Bestellungen/Buchhaltung, MongoDB optional für Produktkatalog, Redis für Cache und Warenkorb, optional Elasticsearch für Suche.
- IoT-/Telemetrie-Daten (Sensoren, Logs, Metriken): spezialisierte Time-Series-DB (InfluxDB, TimescaleDB) oder Wide-Column (Cassandra).
- Soziales Netzwerk: Mix aus SQL für Profile/Bestellungen, Graph-DB für Beziehungen, Redis für Feeds.
- Real-Time-Analyse / Dashboards: Redis für aktuelle Werte, evtl. ClickHouse oder Druid für Aggregate.
- Caching/Sessions/Counter: immer Redis.
Eine fundamental wichtige Empfehlung: fang einfach an. Eine relationale DB plus Redis als Cache reicht für 95% aller Web-Anwendungen unter 100.000 Usern. Komplexere Architekturen sind eine Antwort auf konkrete Probleme – nicht der Standard-Start.
8) IHK-Aufgaben zu diesem Thema
In der Prüfung sind drei Fragetypen typisch, in denen die SQL-NoSQL-Entscheidung vorkommt:
- Szenario-Analyse: „Welche Datenbank würden Sie für [Use Case] wählen und warum?" – immer mit Begründung antworten. Stichworte: Datenstruktur, Konsistenz-Anforderungen, Skalierung.
- Vor-/Nachteile aufzählen: „Nennen Sie drei Vorteile von NoSQL gegenüber SQL und drei Nachteile." – die Matrix aus Abschnitt 3 liefert die Antworten.
- Architektur entwerfen: „Skizzieren Sie eine Architektur, die [Anforderungen] erfüllt." – Polyglot Persistence erwähnen, konkrete Tools nennen.
Sprachliche Klassiker, die du in einer Klausur einbauen kannst und die Punkte bringen: Polyglot Persistence, horizontale vs. vertikale Skalierung, Schema-Flexibilität, eventually consistent, ACID vs. BASE, Trade-off zwischen Konsistenz und Verfügbarkeit. Diese Begriffe in einer Antwort fachlich richtig einzusetzen, ist oft die Differenz zwischen befriedigend und gut.
Zusammenfassung
Die SQL-vs.-NoSQL-Entscheidung ist keine Glaubensfrage, sondern eine Use-Case-Analyse. Fünf Schlüsselfragen: Datenstruktur, ACID-Bedarf, Datenmenge/Last, Abfragetypen, Team-Know-how. Stärken von SQL: feste Schemas, harte ACID-Garantien, komplexe JOINs und Reports, Standards/Tooling, breite Verfügbarkeit von Know-how. Stärken von NoSQL: Schema-Flexibilität, horizontale Skalierung, Sub-Millisekunden-Latenz (Redis), spezialisierte Datenmodelle (Dokument, Graph). Pragmatisches Pattern: Polyglot Persistence – mehrere DBs kombinieren, jede für das was sie kann. Typisches Setup: SQL für Kerngeschäft + Redis für Cache/Sessions + ggf. MongoDB/Elasticsearch/Neo4j für spezielle Anforderungen. Häufige Fehler: NoSQL wegen „Hype" wählen, Schema-Flexibilität als Modellierungs-Ersatz missverstehen, Cache mit primärer DB verwechseln. Standardempfehlung: fang einfach an mit SQL + Redis, ergänze gezielt wenn konkrete Probleme auftauchen. Vorbereitung auf die IHK-Aufgaben in der nächsten und letzten Lektion.
