AnkündigungWir stellen MongoDB 8.0 vor, das schnellste MongoDB aller Zeiten! Mehr erfahren >
AnkündigungVoyage AI und MongoDB unterstützen ab sofort gemeinsam genauere und vertrauenswürdigere KI-Anwendungen auf Atlas. Mehr erfahren >

Was ist NoSQL?

NoSQL-Cluster kostenlos einrichten
NoSQL-Datenbank mit Atlas ausprobieren

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?

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:

 

name id email dobcity
Foo bar12345 foo@bar.com Some city
Carn Yale34521bar@foo.com 12-05-1972

 

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:

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.

FAQ

Dieser Artikel wurde von Lauren Schaefer, MongoDB Developer Advocate, verfasst.

Erfahren Sie mehr über die wichtigsten Unterschiede zwischen NoSQL- und SQL-Datenbanken.

Verwandte NoSQL-Ressourcen

Weitere Informationen

Profitieren Sie noch heute von Atlas

Sie sind in Sekundenschnelle startbereit. Unsere kostenlosen Cluster bieten über 512 MB Speicherplatz, sodass Sie die Möglichkeiten unserer Plattform anhand von Beispieldaten kennenlernen können.
Kostenlos testenKontakt zum Vertrieb
IHR EINSTIEG MIT FOLGENDEN VORTEILEN:
  • Mehr als 125 Regionen weltweit
  • Beispieldatensätze
  • Lückenlose Authentifizierung
  • Lückenlose Verschlüsselung
  • Kommandozeilen-Tools