====== LU03b - Relational oder NoSQL? ====== ===== Lernziele ===== * Ich kann erklären, wie NoSQL-Datenbanken Daten ablegen und worin der Unterschied zu Tabellen besteht. * Ich kann für eine gegebene Anforderung begründen, ob eher eine relationale oder eine NoSQL-Datenbank passt. ===== Es gibt nicht nur Tabellen ===== Auf der vorherigen Seite haben Sie gesehen, wie relationale Datenbanken Daten in Tabellen organisieren. Es gibt aber auch Datenbanken, die ganz anders vorgehen. **NoSQL** steht heute meist für //"Not only SQL"//. Es geht also nicht darum, SQL abzulehnen, sondern um Datenbanken, die Daten **anders als in Tabellen** ablegen. Sie werden vor allem eingesetzt, wenn Daten **wenig oder gar nicht strukturiert** sind oder wenn **sehr grosse Datenmengen sehr schnell** gespeichert werden müssen. ===== Wie sieht das aus? ===== Eine Dokumenten-Datenbank (z.B. MongoDB) speichert jeden Datensatz als eigenes **Dokument** – meist im JSON-Format: { "name": "Hanna", "email": "h.m@muster.com", "bestellungen": ["toothbrush"], "newsletter": true } **Der entscheidende Unterschied:** Ein anderes Dokument in derselben Datenbank darf ganz andere Felder haben – eines mit Telefonnummer, eines ohne. In einer relationalen Tabelle müssen dagegen **alle Zeilen dieselben Spalten** besitzen. Bekannte NoSQL-Systeme sind **MongoDB**, **Redis** und **Apache Cassandra**. ===== Wann welche Datenbank? ===== ^ Kriterium ^ Relationale Datenbank ^ NoSQL-Datenbank ^ | Struktur | feste Tabellen mit gleichen Spalten | flexible Dokumente | | Stärke | Genauigkeit, Beziehungen zwischen Daten | Geschwindigkeit, grosse Datenmengen | | Typischer Einsatz | Webshop, Online-Banking, Buchungen | Sensordaten, Logs, Social-Media-Feeds | | Abfragesprache | SQL | herstellerabhängig | Kurz gesagt: Überall dort, wo es auf **Genauigkeit und Nachvollziehbarkeit** ankommt – also bei Bestellungen, Zahlungen oder Buchungen –, sind relationale Datenbanken nach wie vor die erste Wahl. Genau deshalb arbeiten wir in diesem Modul damit. ===== Video ===== {{youtube>E9AgJnsEvG4?}}\\ //Dieses Video vergleicht relationale und nicht-relationale Datenbanken.//((IBM Technology: Relational vs. Non-Relational Databases))\\ //Nutzen Sie die automatische Untertitel-Übersetzung von YouTube, wenn die englische Sprache Verständnisschwierigkeiten bereitet.// ===== Quellen ===== * [[http://www.datenbanken-verstehen.de|Datenbanken verstehen]] ---- {{tag>M290-LU03}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Guido Koch