Was ist NoSQL?
NoSQL-Datenbanken (auch bekannt als „Not only SQL“) speichern Daten anders als relationale Tabellen. Es gibt verschiedene Typen von NoSQL-Datenbanken, die sich nach ihrem Datenmodell unterscheiden. Die wichtigsten Typen sind Dokument, Schlüssel-Wert, spaltenübergreifend und Graph. Sie bieten flexible Schemata und lassen sich bei großen Mengen an Big Data und hoher Benutzerlast problemlos skalieren.
In diesem Artikel erfahren Sie, was eine NoSQL-Datenbank ist, warum (und wann!) Sie eine verwenden sollten und wie Sie loslegen.
Inhaltsverzeichnis
- Was ist eine NoSQL-Datenbank?
- Arten von NoSQL-Datenbanken
- Kurze Geschichte der NoSQL-Datenbanken
- NoSQL-Datenbankfunktionen
- Beispiel: Relational Datenbank vs. NoSQL-Datenbank
- Unterschiede zwischen relationalen Datenbankmanagementsystemen (RDBMS) und NoSQL-Datenbanken
- NoSQL-Anwendungsfälle
- Wann sollte NoSQL verwendet werden?
- NoSQL-Datenbank – Fehleinschätzungen
- NoSQL-Abfragen – Tutorial
- Fazit
- FAQ
Was ist eine NoSQL-Datenbank?
Wenn der Begriff „NoSQL-Datenbank“ verwendet wird, bezieht er sich normalerweise auf jede nicht-relationale Datenbank. Einige sagen, der Begriff „NoSQL“ stehe für „Nicht-SQL“, während andere sagen, er stehe für „Nicht nur SQL“. So oder so sind sich die meisten einig, dass NoSQL-Datenbanken Daten auf natürlichere und flexiblere Weise speichern. NoSQL ist im Gegensatz zu SQL ein Ansatz zur Datenbankverwaltung, während SQL lediglich eine Abfragesprache ist, ähnlich den Abfragesprachen von NoSQL-Datenbanken.
Datenbanktypen – NoSQL
Im Laufe der Zeit haben sich vier Haupttypen von NoSQL-Datenbanken herausgebildet: Dokumentendatenbanken, Schlüsselwertdatenbanken, spaltenorientierte Datenbanken und Graphdatenbanken. Heutzutage erfreuen sich auch Multi-Modell-Datenbanken zunehmender Beliebtheit.
Dokumentenorientierte Datenbanken
Eine dokumentenorientierte Datenbank speichert Daten in Dokumenten, die JSON-Objekten (JavaScript Object Notation) ähneln. Jedes Dokument enthält Paare von Feldern und Werten. Die Werte können typischerweise unterschiedlicher Art sein und zum Beispiel Zeichenfolgen, Zahlen, Boolesche Werte, Arrays oder sogar andere Objekte umfassen. Eine Dokumentdatenbank bietet ein flexibles Datenmodell, das sich sehr gut für halbstrukturierte und typischerweise unstrukturierte Datensätze eignet. Sie unterstützen auch verschachtelte Strukturen, so dass sich komplexe Beziehungen oder hierarchische Daten leicht darstellen lassen.
Beispiele für Dokumentendatenbanken sind MongoDB und Couchbase. Ein typisches Dokument sieht folgendermaßen aus:
Schlüssel-Wert-Datenbanken
Ein Schlüssel-Wert-Speicher ist eine einfachere Art von Datenbank, bei der jedes Element Schlüssel und Werte enthält. Jeder Schlüssel ist einzigartig und mit einem einzelnen Wert verknüpft. Sie werden für die Zwischenspeicherung und die Sitzungsverwaltung verwendet und bieten eine hohe Leistung beim Lesen und Schreiben, da sie dazu neigen, Dinge im Speicher zu speichern. Beispiele sind Amazon DynamoDB und Redis. Nachfolgend wird eine vereinfachte Darstellung der in einer Schlüsselwertdatenbank gespeicherten Daten gezeigt:
Spaltenorientierte Datenbanken
Spaltenorientierte Speichersysteme speichern Daten in Tabellen, Zeilen und dynamischen Spalten. Die Daten werden in Tabellen gespeichert. Im Gegensatz zu herkömmlichen SQL-Datenbanken sind spaltenorientierte Datenbanken jedoch flexibel, da unterschiedliche Zeilen unterschiedliche Spaltensätze haben können. Diese Datenbanken können Spaltenkomprimierungstechniken einsetzen, um den Speicherplatz zu reduzieren und die Leistung zu verbessern. Die breiten Zeilen und Spalten ermöglichen ein effizientes Abrufen spärlicher und breiter Daten. Einige Beispiele für spaltenorientierte Datenbanken sind Apache Cassandra und HBase. Ein typisches Beispiel für die Speicherung von Daten in einer breiten Spalte ist folgendes:
Graphdatenbanken
Eine Graphdatenbank speichert Daten in Form von Knoten und Kanten. Knoten speichern normalerweise Informationen über Personen, Orte und Dinge (wie Substantive), während Kanten Informationen über die Beziehungen zwischen den Knoten speichern. Sie eignen sich gut für stark vernetzte Daten, bei denen die Zusammenhänge oder Muster zunächst vielleicht nicht ganz so offensichtlich sind. Beispiele für Graphdatenbanken sind Neo4J und Amazon Neptune. MongoDB bietet außerdem Graph-Traversierungsfunktionen mithilfe der $graphLookup-Stufe der Aggregations-Pipeline. Nachfolgend finden Sie ein Beispiel für die Speicherung von Daten:
Multi-Modell-Datenbanken
Multi-Modell-Datenbanken unterstützen mehr als einen Typ von NoSQL-Datenmodellen, sodass die Entwickler je nach den Anforderungen ihrer Anwendung wählen können. Diese Datenbanken verfügen über eine einheitliche Datenbank-Engine, die mehrere Datenmodelle innerhalb einer Datenbankinstanz verarbeiten kann. Beispiele sind CosmosDB und ArangoDB.
Kurzer Vergleich der Datenbanktypen – NoSQL
Jede der NoSQL-Datenbanken bietet unterschiedliche Funktionen. Beispielsweise könnten Graphdatenbanken besser für die Analyse komplexer Beziehungen und Muster zwischen Entitäten geeignet sein, während Dokumentdatenbanken eine flexiblere und natürlichere Möglichkeit bieten, große Datenmengen ähnlicher Typen wie Dokumente zu speichern und abzurufen. Die Wahl der Datenbank hängt von dem Anwendungsfall ab, den Sie entwickeln möchten.
In diesem Artikel erfahren Sie mehr: Die verschiedenen Arten von NoSQL-Datenbanken verstehen.
Kurze Geschichte der NoSQL-Datenbanken
NoSQL-Datenbanken entstanden in den späten 2000er Jahren, als die Speicherkosten drastisch sanken. Vorbei sind die Zeiten, in denen man ein komplexes, schwer zu verwaltendes Datenmodell erstellen musste, um Datenduplikate zu vermeiden. NoSQL-Datenbanken, die für die Produktivität von Entwicklern optimiert sind.
Während die Speicherkosten rapide sanken, stieg die Datenmenge, die Anwendungen speichern und abfragen mussten. Diese Daten gibt es in allen Formen und Größen – strukturiert, halbstrukturiert und unstrukturiert – und es wurde nahezu unmöglich, das Schema im Voraus zu definieren. NoSQL-Datenbanken ermöglichen Entwicklern die Speicherung riesiger Mengen unstrukturierter Daten und bieten ihnen somit ein hohes Maß an Flexibilität.
In den frühen 2000er Jahren untersuchte ein von Google zu Bigtable, der spaltenorientierten Datenbank, veröffentlichter Artikel die vielfältigen Möglichkeiten eines verteilten Speichersystems. 2009 erlebten NoSQL-Datenbanken einen enormen Aufschwung, wobei zwei wichtige dokumentenorientierte Datenbanken, MongoDB und CouchDB, ins Spiel kamen.
In den 2010er Jahren kamen verschiedene Arten von NoSQL-Datenbanken auf den Markt, und die Akzeptanz von NoSQL vergrößerte sich, da Unternehmen immer datenorientierter wurden.
Darüber hinaus wurde das Agile Manifest immer beliebter, und Softwareingenieure überdachten die Art und Weise, wie sie Software entwickelten. Sie mussten sich schnell an sich ändernde Anforderungen anpassen, schnell iterieren und Änderungen an ihrem gesamten Software-Stack vornehmen – bis hin zur Datenbank. NoSQL-Datenbanken boten ihnen diese Flexibilität.
Cloud Computing wurde ebenfalls immer beliebter, und Entwickler begannen, öffentliche Clouds zum Hosten ihrer Anwendungen und Daten zu verwenden. Sie wollten die Möglichkeit haben, Daten auf mehrere Server und Regionen zu verteilen, um ihre Anwendungen widerstandsfähig zu machen, horizontal statt vertikal zu skalieren und ihre Daten intelligent geografisch zu platzieren. Einige NoSQL-Datenbanken, wie MongoDB Atlas, bieten diese Funktionen.
Aufgrund des exponentiellen Wachstums der Digitalisierung sammeln Unternehmen heute so viele unstrukturierte Daten wie möglich. Damit Unternehmen in der Lage sind, umsetzbare Echtzeit-Erkenntnisse aus solchen Big Data zu analysieren und abzuleiten, benötigen sie moderne Lösungen, die über einfache Speicherung hinausgehen. Unternehmen benötigen eine Plattform, die Daten einfach skalieren, transformieren und visualisieren kann, Dashboards, Berichte und Diagramme erstellt und mit KI- und Business-Intelligence-Tools zusammenarbeitet, um ihre Geschäftsproduktivität zu steigern. Aufgrund ihres flexiblen und verteilten Charakters sind NoSQL-Datenbanken (z. B. MongoDB) für diese Aufgaben hervorragend geeignet.
NoSQL-Datenbankfunktionen
NoSQL-Datenbanken sind flexible, skalierbare und verteilte Datenbanken. Verschiedene Arten von NoSQL-Datenbanken haben ihre eigenen einzigartigen Funktionen.
Im Wesentlichen verfügen NoSQL-Datenbanken über folgende Funktionen:
- Verteiltes Rechnen
- Skalierung
- Flexible Schemata und reichhaltige Abfragesprache
- Benutzerfreundlichkeit für Entwickler
- Partitionstoleranz
- Hohe Verfügbarkeit
BASE-Konformität
NoSQL-Datenbanken sind BASE-konform, d. h. sie bieten basic availability, soft State und eventual consistency (grundlegende Verfügbarkeit, Soft State und Konsistenz). Die Basisverfügbarkeit bezieht sich auf die Fähigkeit des Systems, einen teilweisen Ausfall (z. B. den Ausfall eines Knotens) zu tolerieren. Soft State bedeutet, dass das System vorübergehende Inkonsistenzen zulässt, bevor es schließlich im Laufe der Zeit automatisch Konsistenz erreicht. Die BASE-Konsistenz sorgt für hohe Verfügbarkeit, schnellere Datenverarbeitung, Skalierbarkeit und Flexibilität. MongoDB kann jedoch auch so konfiguriert werden, dass es ACID-Konformität für mehrere Dokumente gewährleistet.
Erfahren Sie mehr über die Vorteile von NoSQL-Datenbanken.
Beispiel: Relational Datenbank vs. NoSQL-Datenbank
Betrachten wir als Beispiel die Speicherung von Informationen über einen Benutzer und seine Hobbys. Wir müssen den Vornamen, Nachnamen, die Handynummer, die Stadt und die Hobbys eines Benutzers speichern.
In einem relationalen Datenbankmanagementsystem (RDBMS) würden wir wahrscheinlich zwei Tabellen erstellen: eine für Benutzer und eine für Hobbys.
Um alle Informationen über einen Benutzer und seine Hobbys abzurufen, müssen die Informationen aus den Tabellen „Benutzer“ und „Hobbys“ miteinander verknüpft werden.
Das Datenmodell, das wir für eine NoSQL-Datenbank entwerfen, hängt von der Art der NoSQL-Datenbank ab, die wir auswählen. Betrachten wir, wie man die gleichen Informationen über einen Benutzer und seine Hobbys in einer Dokumentendatenbank wie MongoDB speichern kann.
Um alle Informationen über einen Benutzer und seine Hobbys abzurufen, kann ein einzelnes Dokument aus der Datenbank abgerufen werden. Es sind keine Verknüpfungen erforderlich, was zu schnelleren Abfragen führt.
Eine detailliertere Version dieses Datenmodellierungsbeispiels finden Sie unter Mapping Terms and Concepts From SQL to MongoDB [Übertragung von Begriffen und Konzepten von SQL auf MongoDB].
Unterschiede zwischen relationalen Datenbankmanagementsystemen (RDBMS) und NoSQL-Datenbanken
Es gibt eine Reihe von Unterschieden zwischen relationalen Datenbankmanagementsystemen und nicht-relationalen Datenbanken. Einer der Hauptunterschiede ist die Art und Weise, wie Daten in der Datenbank modelliert werden. Nachfolgend sind einige wesentliche Unterschiede der einzelnen Funktionen aufgeführt:
Datenmodellierung
NoSQL: Datenmodelle variieren je nach Art der verwendeten NoSQL-Datenbank – beispielsweise Schlüsselwert, Dokument, Graph und Wide-Column – wodurch das Modell für semistrukturierte und unstrukturierte Daten geeignet ist.
RDBMS: RDBMS verwenden eine tabellarische Datenstruktur, bei der Daten als Satz von Zeilen und Spalten dargestellt werden, sodass das Modell für strukturierte Daten geeignet ist.
Schema
NoSQL: Es bietet ein flexibles Schema, bei dem jeder Satz von Dokumenten/Zeilen-Spalten-/Schlüssel-Wert-Paaren unterschiedliche Datentypen enthalten kann. Aufgrund der Flexibilität ist es einfacher, das Schema bei Bedarf zu ändern.
RDBMS: Dies ist ein festes Schema, bei dem jede Zeile die gleichen vordefinierten Spaltentypen enthalten sollte. Es ist schwierig, das Schema zu ändern, sobald die Daten gespeichert sind.
Abfragesprache
NoSQL: Das variiert je nach Art der verwendeten NoSQL-Datenbank. MongoDB verwendet beispielsweise MQL und Neo4J verwendet Cypher.
RDBMS: Dieses verwendet eine strukturierte Abfragesprache (SQL).
Skalierbarkeit
NoSQL: NoSQL ist für vertikale und horizontale Skalierung ausgelegt.
RDBMS: RDBMS ist für die vertikale Skalierung konzipiert. Es kann jedoch eingeschränkte Funktionen für die horizontale Skalierung erweitern.
Datenbeziehungen
NoSQL: Beziehungen können verschachtelt, explizit oder implizit sein.
RDBMS: Beziehungen werden durch Fremdschlüssel definiert und über Joins abgerufen.
Transaktionstyp
NoSQL: Transaktionen sind entweder ACID- oder BASE-konform.
RDBMS: Transaktionen sind ACID-konsistent.
Leistung
NoSQL: NoSQL eignet sich für Echtzeitverarbeitung, Big-Data-Analysen und verteilte Umgebungen.
RDBMS: RDBMS eignet sich für leseintensive Workloads und Transaktionsworkloads.
Datenkonsistenz
NoSQL: Dies bietet in den meisten Fällen letztendliche Konsistenz.
RDBMS: Dies bietet eine hohe Datenkonsistenz.
Verteiltes Rechnen
NoSQL: Einer der Hauptgründe für die Einführung von NoSQL war das verteilte Rechnen. NoSQL-Datenbanken unterstützen verteilte Datenspeicherung sowie vertikale und horizontale Skalierung durch Sharding, Replikation und Clustering.
RDBMS: RDBMS unterstützt verteiltes Rechnen durch Clustering und Replikation. Es ist jedoch weniger skalierbar und flexibel, da es traditionell nicht für die Unterstützung verteilter Architekturen konzipiert ist.
Fehlertoleranz
NoSQL: NoSQL verfügt über eine integrierte Fehlertoleranz und eine hohe Verfügbarkeit aufgrund der Datenreplikation.
RDBMS: RDBMS verwendet Replikations-, Sicherungs- und Wiederherstellungsmechanismen. Da sie jedoch für diese konzipiert sind, müssen während der Anwendungsentwicklung möglicherweise zusätzliche Maßnahmen wie Disaster-Recovery-Mechanismen implementiert werden.
Datenpartitionierung
NoSQL: Dies erfolgt durch Sharding und Replikation.
RDBMS: Unterstützt tabellenbasierte Partitionierung und Partitionsbereinigung.
Erfahren Sie hier mehr über Datenpartitionierung.
Daten-zu-Objekt-Zuordnung
NoSQL: NoSQL speichert die Daten auf verschiedene Arten – zum Beispiel als JSON-Dokumente, spaltenorientierte Datenbanken oder als Schlüssel-Wert-Paare. Es bietet Abstraktion über die ODM-Frameworks (Object-Data Mapping), um objektorientiert mit NoSQL-Daten zu arbeiten.
RDBMS: RDBMS stützt sich mehr auf die Zuordnung von Daten zu Objekten, sodass eine nahtlose Integration zwischen den Datenbankspalten und dem objektorientierten Anwendungscode gewährleistet ist.
Um mehr über die Unterschiede zwischen relationalen Datenbanken und NoSQL-Datenbanken zu erfahren, lesen Sie NoSQL vs SQL Databases [NoSQL- im Vergleich zu SQL-Datenbanken].
NoSQL-Anwendungsfälle
NoSQL-Datenbanksysteme werden in nahezu allen Branchen für Echtzeitanalysen, Content Management, IoT-Anwendungen, Empfehlungssysteme, Betrugserkennung, Produktkatalogmanagement und vieles mehr verwendet. Die Anwendungsfälle reichen von äußerst kritischen Bereichen (z. B. Speicherung von Finanzdaten und Gesundheitsakten) bis hin zu eher unterhaltsamen und weniger wichtigen Bereichen (z. B. Speicherung von IoT-Messwerten aus einer intelligenten Katzentoilette).
Wann sollte NoSQL verwendet werden?
Bei der Entscheidung, welche Datenbank verwendet werden soll, finden Entscheidungsträger in der Regel einen oder mehrere der folgenden Faktoren, die sie dazu veranlassen, sich für eine NoSQL-Datenbank zu entscheiden:
- Schnelle agile Entwicklung
- Speicherung von strukturierten und semistrukturierten Daten
- Enorme Datenmengen
- Anforderungen an eine Scale-Out-Architektur
- Moderne Anwendungsparadigmen wie Microservices und Echtzeit-Streaming
Weitere Informationen zu den oben genannten Gründen finden Sie unter Wann Sie eine NoSQL-Datenbank verwenden sollten und Beispiele für NoSQL-Datenbanken.
NoSQL-Datenbanken – Fehleinschätzungen
Im Laufe der Jahre haben sich in der Entwickler-Community viele Fehleinschätzungen über NoSQL-Datenbanken verbreitet. In diesem Abschnitt werden wir zwei der häufigsten Fehleinschätzungen erörtern.
Fehleinschätzung: Beziehungsdaten eignen sich am besten für relationale Datenbanken
Ein weit verbreiteter Irrglaube ist, dass NoSQL-Datenbanken oder nicht-relational database Beziehungsdaten nicht gut speichern. NoSQL-Datenbanken können Beziehungsdaten speichern – sie speichern sie nur anders als relationale Datenbanken.
Im Vergleich zu relationalen Datenbanken empfinden viele die Modellierung von Beziehungsdaten in NoSQL-Datenbanken als einfacher, da verwandte Daten nicht auf verschiedene Tabellen aufgeteilt werden müssen. NoSQL-Datenmodelle ermöglichen die Verschachtelung verwandter Daten in einer einzigen Datenstruktur.
Fehleinschätzung: NoSQL-Datenbank unterstützt keine ACID-Transaktionen
Ein weiterer weit verbreiteter Irrglaube ist, dass NoSQL-Datenbanken keine ACID-Transaktionen unterstützen. Einige NoSQL-Datenbanken, wie MongoDB, unterstützen tatsächlich ACID-Transaktionen.
Beachten Sie, dass die Art und Weise, wie Daten in NoSQL-Datenbanken modelliert werden, in vielen Anwendungsfällen die Notwendigkeit von Transaktionen mit mehreren Datensätzen überflüssig macht. Denken Sie an das anfängliche Beispiel, in dem wir Informationen über einen Benutzer und seine Hobbys sowohl in einem relationalen Modell als auch in einer dokumentenorientierten Datenbank gespeichert haben. Um sicherzustellen, dass Informationen über einen Benutzer und seine Hobbys zusammen in einer relationalen Datenbank aktualisiert werden, müssten wir eine Transaktion verwenden, um Datensätze in zwei Tabellen zu aktualisieren. Um dasselbe in einem Dokumentenspeicher zu tun, könnten wir ein einzelnes Dokument aktualisieren – eine Transaktion mit mehreren Datensätzen ist nicht erforderlich.
Um mehr über gängige Missverständnisse zu erfahren, lesen Sie Alles, was Sie über MongoDB wissen, ist falsch [Alles, was Sie über MongoDB wissen, ist falsch].
NoSQL-Abfragen – Tutorial
Sie könnten mit MongoDB beginnen, der laut DB-Engines weltweit beliebtesten NoSQL-Datenbank. Der einfachste Weg, um mit MongoDB zu beginnen, ist die Nutzung von Atlas. Atlas ist der vollständig verwaltete Datenbankservice von MongoDB. Atlas bietet ein dauerhaft kostenloses Kontingent, mit dem Sie herumprobieren können. Schau dir das MongoDB Atlas-Tutorial an, um loszulegen.
Sie können weiterhin mit Ihren Daten interagieren, indem Sie den Atlas Data Explorer verwenden, um neue Dokumente einzufügen, bestehende Dokumente zu bearbeiten und Dokumente zu löschen.
Wenn Sie bereit sind, komplexere Abfragen auszuprobieren, die Ihre Daten aggregieren, erstellen Sie eine Aggregations-Pipeline. Das Aggregationsframework ist ein unglaublich leistungsfähiges Tool zur Analyse Ihrer Daten. Um mehr zu erfahren, nehmen Sie am kostenlosen Kurs der MongoDB University [M121 The MongoDB Aggregation Framework] teil.
Wenn Sie Ihre Daten visualisieren möchten, schauen Sie sich MongoDB Charts an. Mithilfe von Diagrammen können Sie Dashboards erstellen, die mit Visualisierungen Ihrer Daten gefüllt sind.
Fazit
NoSQL-Datenbanken bieten eine Vielzahl von Vorteilen, darunter flexible Datenmodelle, horizontale Skalierung, blitzschnelle Abfragen und einfache Bedienung für Entwickler. Es gibt verschiedene Typen von NoSQL-Datenbanken, darunter Dokumentdatenbank, Schlüssel-Wert-Datenbank, spaltenorientierte Datenbank, Graphdatenbank und Multi-Modell-Datenbank.
MongoDB ist die weltweit beliebteste NoSQL-Datenbank. Erfahren Sie mehr über MongoDB Atlas und testen Sie die kostenlose Version.
Möchten Sie jetzt, wo Sie ein eigenes Atlas-Konto haben, mehr erfahren? Besuchen Sie die MongoDB University, wo Sie kostenlose Online-Schulungen von MongoDB-Ingenieuren erhalten und eine MongoDB-Zertifizierung erwerben können. Die [Schnellstartanleitungen] sind ein weiterer guter Ausgangspunkt; sie werden Ihnen helfen, schnell mit Ihrer bevorzugten Programmiersprache loszulegen.