Was ist NoSQL?
Leistungsfähige, nicht-relationale Datenbanken mit flexiblen Datenmodellen
Was sind NoSQL-Datenbanken?
NoSQL-Datenbanken sind speziell für bestimmte Datenmodelle entwickelt worden und verfügen über flexible Schemata zur Erstellung moderner Anwendungen. NoSQL-Datenbanken sind weithin bekannt für ihre einfache Entwicklung, Funktionalität und Skalierbarkeit. Auf dieser Seite finden Sie Ressourcen, die Ihnen ein besseres Verständnis von NoSQL-Datenbanken vermitteln und Ihnen den Einstieg erleichtern.
Wie funktioniert eine (nicht-relationale) NoSQL-Datenbank?
NoSQL-Datenbanken verwenden verschiedene Datenmodelle für den Zugriff auf und die Verwaltung von Daten. Diese Typen von Datenbanken sind speziell für Anwendungen optimiert, die große Datenmengen, geringe Latenz sowie flexible Datenmodelle erfordern. Dies erreicht man durch die Lockerung der Beschränkungen zur Datendurchgängigkeit von anderen Datenbanken.
Nachfolgend ein Beispiel zur Modellierung des Schemas für eine einfache Buchdatenbank:
- In einer relationalen Datenbank wird ein Buchdatensatz oft zerlegt (oder „normalisiert“) und in separaten Tabellen gespeichert. Beziehungen werden durch Primär- und Fremdschlüsselbeschränkungen definiert. In diesem Beispiel hat die Tabelle Bücher Spalten für ISBN, Buchtitel und Ausgabenummer, die Tabelle Autoren Spalten für Autoren-ID und Autorenname und die Tabelle Autoren-ISBN schließlich Spalten für Autoren-ID und ISBN. Das relationale Modell ist so konzipiert, dass die Datenbank die referentielle Integrität zwischen den Tabellen in der Datenbank erzwingen kann. Sie ist normalisiert, um die Redundanz zu reduzieren, und generell für die Speicherung optimiert.
- In einer NoSQL-Datenbank wird ein Buchdatensatz normalerweise als JSON-Dokument gespeichert. Für jedes Buch werden die Elemente ISBN, Buchtitel, Ausgabenummer, Autorenname und Autoren-ID als Attribute in einem einzigen Dokument gespeichert. In diesem Modell sind die Daten für eine intuitive Entwicklung und horizontale Skalierbarkeit optimiert.
Warum sollten Sie eine NoSQL-Datenbank verwenden?
NoSQL-Datenbanken eignen sich hervorragend für viele moderne Anwendungen wie Mobile, Web und Gaming, die flexible, skalierbare, hochleistungsfähige und hochfunktionale Datenbanken benötigen, um ein großartiges Benutzererlebnis zu bieten.
- Flexibilität: NoSQL-Datenbanken bieten in der Regel flexible Schemata, die eine schnellere und iterativere Entwicklung ermöglichen. Das flexible Datenmodell macht NoSQL-Datenbanken ideal für halbstrukturierte und unstrukturierte Daten.
- Skalierbarkeit: NoSQL-Datenbanken sind in der Regel so konzipiert, dass sie durch die Verwendung von verteilten Hardware-Clustern skaliert werden können, anstatt durch Hinzufügen teurer und robuster Server. Einige Cloud-Provider wickeln diese Vorgänge hinter den Kulissen als vollständig gemanagten Service ab.
- Leistungsstark: NoSQL-Datenbanken sind für bestimmte Datenmodelle und Zugriffsmuster optimiert, die eine höhere Leistung ermöglichen, als wenn Sie versuchen, ähnliche Funktionen mit relationalen Datenbanken zu erzielen.
- Hochfunktionell: NoSQL-Datenbanken bieten hochfunktionelle APIs und Datentypen, die speziell für jedes ihrer jeweiligen Datenmodelle entwickelt wurden.
Arten von NoSQL-Datenbanken

Schlüsselwert: Schlüsselwertdatenbanken sind hoch partitionierbar und erlauben eine horizontale Skalierung auf Skalen, die andere Arten von Datenbanken nicht erreichen können. Anwendungsfälle wie Gaming, Werbung und IoT eignen sich besonders gut für das Schlüsselwertdatenmodell. Amazon DynamoDB wurde entwickelt, um eine konsistente einstellige Millisekunden-Latenzzeit für jede Größenordnung von Workloads bereitzustellen. Diese konsistente Leistung spielt eine entscheidende Rolle dabei, warum die Storys-Funktion von Snapchat, die die größte Workload durch Schreibvorgänge im Snapchat-Speicher darstellt, auf DynamoDB umgestellt wurde.

Dokument: In Anwendungscode werden Daten häufig als Objekt oder JSON-ähnliches Dokument dargestellt, weil dieses Datenmodell für Entwickler effizient zu nutzen und intuitiv zu bedienen ist. Mit Dokumentdatenbanken können Entwickler Daten einfacher in einer Datenbank speichern und abfragen, indem sie das gleiche Dokumentmodellformat wie in ihrem Anwendungscode verwenden. Aufgrund des flexiblen, semi-strukturierten und hierarchischen Aufbaus der Dokumente und Dokumentdatenbanken können sie entsprechend den Anforderungen der Anwendungen weiterentwickelt werden. Das Dokumentmodell eignet sich hervorragend für Kataloge, Benutzerprofile und Content Management-Systeme, bei denen jedes Dokument einzigartig ist und im Laufe der Zeit weiterentwickelt wird. Amazon DocumentDB (mit MongoDB-Kompatibilität) und MongoDB sind beliebte Dokumentdatenbanken, die leistungsstarke und intuitive APIs für eine flexible und iterative Entwicklung bieten.

Diagramm: Der Zweck einer Diagrammdatenbank ist es, das Erstellen und Ausführen von Anwendungen zu vereinfachen, die mit hochgradig vernetzten Datensätzen arbeiten. Typische Anwendungsfälle für eine Diagrammdatenbank sind soziale Netzwerke, Empfehlungsmaschinen, Betrugserkennung und Wissensdiagramme. Amazon Neptune ist ein vollständig verwalteter Diagrammdatenbankservice. Neptune unterstützt sowohl das Property Graph-Modell als auch das Resource Description Framework (RDF) und bietet die Wahl zwischen zwei Diagramm-APIs: TinkerPop und RDF/SPARQL. Beliebte Graph-Datenbanken sind Neo4j und Giraph.

In-Memory: Spiele- und Werbetechnikanwendungen verwenden z.B. Leaderboards, Sitzungsspeicher und Echtzeitanalysen, die Reaktionszeiten im Mikrosekundenbereich erfordern und jederzeit große Spitzen im Datenverkehr aufweisen können. Amazon MemoryDB für Redis ist ein Redis-kompatibler, langlebiger In-Memory-Datenbankservice, der Lese-Latenzzeiten im Mikrosekundenbereich, Schreib-Latenzzeiten im einstelligen Millisekundenbereich und Multi-AZ-Dauerhaftigkeit bietet. MemoryDB wurde speziell für ultraschnelle Leistung und Langlebigkeit entwickelt, damit Sie sie als primäre Datenbank für moderne Microservices-Anwendungen verwenden können. Amazon ElastiCache ist ein vollständig verwalteter In-Memory-Caching-Service, der sowohl mit Redis als auch mit Memcached kompatibel ist, für Arbeitslasten mit niedriger Latenz und hohem Durchsatz. Kunden wie Tinder, die von ihren Anwendungen Echtzeit-Reaktionen verlangen, setzen auf In-Memory-Datenspeicher statt auf plattenbasierte Datenspeicher. Amazon DynamoDB Accelerator (DAX) ist ein weiteres Beispiel für einen speziell entwickelten Datenspeicher. Mit DAX werden die Lesevorgänge in DynamoDB um eine Größenordnung schneller.

Suche: Viele Anwendungen bieten Protokolle, um Entwicklern bei der Behebung von Problemen zu helfen. Amazon OpenSearch Service wurde speziell für die Bereitstellung von Echtzeit-Visualisierungen und -Analytik von maschinell generierten Daten entwickelt, die durch Indizierung, Aggregation und Suche in semistrukturierten Protokollen und Metriken erstellt werden. Amazon OpenSearch Service ist außerdem eine leistungsstarke Suchmaschine für Anwendungsfälle im Bereich der Volltextsuche. Expedia verwendet mehr als 150 Domänen von Amazon OpenSearch Service, 30 TB Daten und 30 Milliarden Dokumente für eine Vielzahl von unternehmenskritischen Anwendungsfällen, die von der Betriebsüberwachung und Fehlerbehebung bis hin zur Nachverfolgung verteilter Anwendungsstapel und Preisoptimierung reichen.
SQL- (relational) vs. (nichtrelationale) NoSQL-Datenbanken
Jahrzehntelang war das relationale Datenmodell, das von relationalen Datenbanken wie Oracle, DB2, SQL Server, MySQL und PostgreSQL verwendet wurde, das vorherrschende Datenmodell in der Anwendungsentwicklung. Erst Mitte bis Ende der 2000er Jahre wurden andere Datenmodelle genutzt und setzten sich langsam durch. Um diese neuen Klassen von Datenbanken und Datenmodellen zu differenzieren und zu kategorisieren, wurde der Begriff „NoSQL“ geprägt. Oft wird der Begriff „NoSQL“ als Synonym für „nichtrelational“ verwendet.
Zwar gibt es viele verschiedene Arten von NoSQL-Datenbanken mit unterschiedlichen Funktionen, in der folgenden Tabelle werden jedoch nur einige der allgemeinen Unterschiede zwischen SQL- und NoSQL-Datenbanken aufgezeigt.
Relationale Datenbanken | NoSQL-Datenbanken | |
---|---|---|
Optimale Workloads |
Relationale Datenbanken sind für transaktionale und stark konsistente Online Transaction Processing(OLTP)-Anwendungen konzipiert und eignen sich gut für Online Analytical Processing (OLAP). | NoSQL-Datenbanken sind für eine Reihe von Datenzugriffsmustern konzipiert, die Anwendungen mit geringer Latenz enthalten. NoSQL-Suchdatenbanken sind für die Analyse von halbstrukturierten Daten konzipiert. |
Datenmodell | Beim relationalen Modell werden Daten in Tabellen normalisiert, die aus Zeilen und Spalten bestehen. Tabellen, Zeilen, Indizes, Beziehungen zwischen Tabellen und sonstige Datenbankelemente werden in einem Schema streng definiert. Die Datenbank erzwingt die referentielle Integrität bei Beziehungen zwischen Tabellen. |
NoSQL-Datenbanken bieten verschiedene Datenmodelle wie Schlüssel-Wert, Dokument und Diagramm, die auf Leistung und Skalierung optimiert sind. |
ACID-Eigenschaften | Relationale Datenbanken bieten Azomizität, Konsistenz, Isolation und Haltbarkeit (Atomicity, Consistency, Isolation and Durability – ACID):
|
NoSQL-Datenbanken gehen oft Kompromisse ein, indem sie einige der ACID-Eigenschaften von relationalen Datenbanken für ein flexibleres, horizontal skalierbares Datenmodell lockern. Dies macht NoSQL-Datenbanken zu einer ausgezeichneten Wahl für Anwendungsfälle mit hohem Durchsatz und geringer Latenz, die horizontal über die Grenzen einer einzelnen Instance hinaus skaliert werden müssen. |
Leistung | Die Leistung ist in der Regel vom Datenträger-Subsystem abhängig. Um die Spitzenleistung zu erzielen, ist oft eine Optimierung von Abfragen, Indizes und der Tabellenstruktur erforderlich. | Die Leistung wird grundsätzlich durch die Größe des zugrunde liegenden Hardware-Clusters, die Netzwerklatenz und die aufrufende Anwendung bestimmt. |
Skalierbarkeit | Relationale Datenbanken werden in der Regel skaliert, indem die Rechenleistung der Hardware erhöht oder durch das Hinzufügen von Repliken für Nur-Lese-Workloads erweitert wird. | NoSQL-Datenbanken sind für gewöhnlich partitionierbar, da Zugriffsmuster durch die Verwendung verteilter Architekturen skaliert werden können, um den Durchsatz zu erhöhen, der eine konsistente Leistung bei nahezu unbegrenzter Skalierbarkeit bietet. |
APIs | Anforderungen zum Speichern und Abrufen von Daten werden mithilfe von Abfragen übermittelt, die in einer strukturierten Abfragesprache (Structured Query Language, SQL) verfasst sind. Diese Abfragen werden von der relationalen Datenbank geparst und ausgeführt. | Mit objektbasierten APIs können Anwendungsentwickler Datenstrukturen ganz einfach speichern und abrufen. Anwendungen können Schlüsselwertpaare, Spaltensätze und halbstrukturierte Dokumente mit serialisierten Anwendungsobjekten und -attributen mithilfe von Partitionsschlüsseln abfragen. |
SQL vs. NoSQL-Terminologie
In der folgenden Tabelle wird die von ausgewählten NoSQL-Datenbanken verwendete Terminologie mit der von SQL-Datenbanken verglichen.
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
Tabelle | Sammlung | Tabelle | Tabelle | Daten-Bucket |
Zeile | Dokument | Element | Zeile | Dokument |
Spalte | Feld | Attribut | Spalte | Feld |
Primärschlüssel | Objekt-ID | Primärschlüssel |
Primärschlüssel | Dokument-ID |
Index | Index | Sekundärer Index | Index | Index |
Anzeigen | Anzeigen | Globaler sekundärer Index | Materialisierte Ansicht | Anzeigen |
Verschachtelte(s) Tabelle oder Objekt | Eingebettetes Dokument | Karte | Karte | Karte |
Array | Array | Liste | Liste | Liste |
Liste |
Liste |
Primärschlüssel |
Erste Schritte mit DynamoDB
Der Einstieg in DynamoDB ist ganz einfach. Auf der Webseite DynamoDB – Erste Schritte können Sie Ihre erste Tabelle mit nur wenigen Klicks erstellen. Sie können sich auch ein AWS-Whitepaper herunterladen, um bewährte Methoden für die Migration von Workloads von einem relationalen Datenbankmanagementsystem (RDBMS) nach DynamoDB kennenzulernen.