Was sind NoSQL-Datenbanken?

NoSQL-Datenbanken wurden speziell für bestimmte Datenmodelle entwickelt und speichern Daten in flexiblen Schemas, die sich leicht für moderne Anwendungen skalieren lassen. NoSQL-Datenbanken sind für ihre einfache Entwicklung, Funktionalität und Skalierbarkeit weithin bekannt. Auf dieser Seite finden Sie Ressourcen, die Ihnen ein besseres Verständnis von NoSQL-Datenbanken vermitteln und Ihnen den Einstieg erleichtern.

Diese Vorteile bieten NoSQL-Datenbanken

Moderne Anwendungen stehen vor mehreren Herausforderungen, die durch NoSQL-Datenbanken gelöst werden können. Anwendungen verarbeiten beispielsweise große Datenmengen aus unterschiedlichen Quellen wie sozialen Medien, intelligenten Sensoren und Datenbanken von Drittanbietern. All diese unterschiedlichen Daten passen nicht genau in das relationale Modell. Die Durchsetzung tabellarischer Strukturen kann zu Redundanz, Datenduplizierung und Leistungsproblemen im großen Maßstab führen.

NoSQL-Datenbanken sind speziell für bestimmte Datenmodelle entwickelt worden und verfügen über flexible Schemata zur Erstellung moderner Anwendungen. Sie sind weithin anerkannt für ihre einfache Entwicklung, Funktionalität und Leistung im großen Maßstab. Die Vorteile von NoSQL-Datenbanken sind unten aufgeführt.

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, im Gegensatz zu einer Skalierung durch das Hinzufügen teurer und robuster Server. Einige Cloud-Anbieter übernehmen diese Vorgänge im Hintergrund als vollständig verwaltete Dienstleistung.

Hohe Leistung

NoSQL-Datenbanken sind für bestimmte Datenmodelle und Zugriffsmuster optimiert. Diese ermöglichen eine höhere Leistung, als wenn Sie versuchen würden, ähnliche Funktionen mit relationalen Datenbanken zu erreichen.

Hochfunktionell

NoSQL-Datenbanken bieten hochfunktionelle APIs und Datentypen, die speziell für ihre jeweiligen Datenmodelle entwickelt wurden.

Was sind die Anwendungsfälle von NoSQL-Datenbanken

Sie können NoSQL-Datenbanken verwenden, um eine Vielzahl von hochleistungsfähigen mobilen, Internet der Dinge (IoT)-, Spiele- und Webanwendungen zu erstellen, die großartige Benutzererlebnisse in großem Umfang bieten. Das Spektrum der NoSQL-Datenbanken und ihre jeweiligen Anwendungsfälle sind breit gefächert. Obwohl es schwierig ist, eine repräsentative Auswahl an Anwendungsfällen zu präsentieren, stellen wir im Folgenden einige illustrative Beispiele als Denkanstöße zur Verfügung und ermutigen Sie, mehr über jede NoSQL-Datenbank und ihre jeweiligen Anwendungsfälle zu erfahren.

Datenverwaltung in Echtzeit

Mit NoSQL-Datenbanken können Sie Empfehlungen, Personalisierungen und eine verbesserte Benutzererfahrung in Echtzeit bereitstellen. Disney+ beispielsweise stellt seine umfangreiche digitale Inhaltsbibliothek mit Hilfe der NoSQL-Datenbanktechnologie für mehr als 150 Millionen Subscriber bereit. Sie kann skaliert werden und bietet beliebte Features wie Weiter ansehen, Watchlist und personalisierte Empfehlungen mit Amazon DynamoDB bereitstellen.

Cloud-Sicherheit

Sie können Graphdatenbanken verwenden, um schnell komplexe Beziehungen innerhalb Ihrer Daten zu erkennen. Zum Beispiel hat Wiz die Cloud-Sicherheit mithilfe von Amazon Neptune als Graphen neu erfunden. Wiz hilft seinen Kunden, ihre Sicherheitslage zu verbessern, indem es die kritischsten Risiken schnell identifiziert und beseitigt. Das Unternehmen verwendet ein in Amazon Neptune gespeichertes Graphenmodell, um die toxische Kombination von Risikofaktoren aufzudecken, die kritische Risiken darstellen. Die Wiz-Risiko-Engines durchlaufen den Graphen und stellen innerhalb von Sekunden eine Reihe von miteinander verbundenen Risikofaktoren in einem Sicherheitsgraphen zusammen.

Hochverfügbare Anwendungen

Verteilte NoSQL-Datenbanken eignen sich hervorragend für den Aufbau von Anwendungen mit hoher Verfügbarkeit und geringer Latenz für das Messaging, die sozialen Medien, Dateifreigaben und vieles mehr. Zum Beispiel hat Snapchat mehr als 290 Millionen Nutzer, die täglich Milliarden von Bildern und Videonachrichten senden. Snapshat nutzt NoSQL-Datenbanksysteme, um die mittlere Latenzzeit beim Versenden von Nachrichten um 20 % zu reduzieren.

Wie funktionieren NoSQL-Datenbanken

NoSQL-Datenbanken verwenden verschiedene Datenmodelle für den Zugriff auf und die Verwaltung von Daten. Diese Arten von Datenbanken sind speziell für Anwendungen optimiert, die flexible Datenmodelle, ein großes Datenvolumen und eine niedrige Latenzzeit erfordern. Dies wird durch Lockerung der Beschränkungen der Datenkonsistenz bei relationalen Datenbanken erreicht. Je nach Datenmodell gibt es Unterschiede bei der Implementierung. Viele NoSQL-Datenbanken verwenden jedoch Javascript Object Notation (JSON), ein offenes Datenaustauschformat, das Daten als eine Sammlung von Name-Wert-Paaren darstellt.

Beispiel für eine NoSQL-Datenbank

Betrachten Sie dieses Beispiel der Modellierung des Schemas für eine einfache Buchdatenbank:

  • In einer relationalen Datenbank wird ein Buchdatensatz oft zerlegt (oder „normalisiert“) und in separaten Tabellen gespeichert, und die Beziehungen werden durch Primär- und Fremdschlüsselbeschränkungen definiert. In diesem Beispiel hat die Tabelle Bücher Spalten für ISBN, Buchtitel und Auflagennummer, die Tabelle Autoren hat Spalten für AutorenID und Autorenname. Die Tabelle Autoren-ISBN verfügt über die Spalten Autoren-ID und ISBN. Das relationale Modell soll es der Datenbank ermöglichen, die referenzielle Integrität zwischen Tabellen in der Datenbank durchzusetzen, es zur Reduzierung der Redundanz zu normalisieren und im Allgemeinen für die Speicherung zu optimieren.
  • In einer NoSQL-Datenbank wird ein Bucheintrag normalerweise als Dokument gespeichert. Für jedes Buch werden der Artikel, die ISBN, der Buchtitel, die Auflagennummer, der Autorenname und die Autoren-ID als Attribute in einem einzigen Dokument gespeichert. In diesem Modell sind die Daten für eine intuitive Entwicklung und horizontale Skalierbarkeit optimiert.

SQL im Vergleich zu 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

Welche Arten von NoSQL-Datenbanken gibt es

Aufgrund der unterschiedlichen Art und Weise, wie sie schemalose Daten verwalten und speichern, gibt es mehrere verschiedene NoSQL-Datenbanksysteme. Im Folgenden erklären wir einige der gängigen Typen.

Schlüsselwertdatenbanken

Schlüsselwertdatenbanken sind hochgradig partitionierbar und ermöglichen eine horizontale Skalierung auf einem Niveau, das andere Arten von NoSQL-Datenbanken möglicherweise nicht erreichen. Eine Schlüsselwertdatenbank speichert Daten als eine Sammlung von Schlüsselwertpaaren, in denen ein Schlüssel als eindeutiger Identifikator dient. Schlüssel und Werte können alles sein, von einfachen Objekten bis hin zu komplexen zusammengesetzten Objekten. Anwendungsfälle wie Gaming, Werbung und IoT eignen sich besonders gut für das Schlüssel-Werte-Datenspeicherungsmodell. Amazon DynamoDB wurde entwickelt, um eine konsistente Leistung mit Latenzzeiten im einstelligen Millisekundenbereich für Workloads jeder Größenordnung bereitzustellen. 

Dokumentdatenbanken

Dokumentdatenbanken verfügen über das gleiche Dokumentmodellformat, das Entwickler in ihrem Anwendungscode verwenden. Sie speichern Daten als JSON-Objekte, die flexibel, halbstrukturiert und hierarchisch aufgebaut sind. Aufgrund des flexiblen, semi-strukturierten und hierarchischen Aufbaus der Dokumente und Dokumentdatenbanken können diese entsprechend den Anforderungen der Anwendungen weiterentwickelt werden. Das Dokumentdatenbankmodell eignet sich gut für Kataloge, Benutzerprofile und Content-Management-Systeme, bei denen jedes Dokument einzigartig ist und sich im Laufe der Zeit weiterentwickelt. Amazon DocumentDB (mit MongoDB-Kompatibilität) und MongoDB sind beliebte Dokumentdatenbanken, die leistungsstarke und intuitive APIs für eine flexible und iterative Entwicklung bieten.

Graphdatenbanken

Der Zweck einer Graphdatenbank besteht darin, das Entwickeln und Ausführen von Anwendungen zu vereinfachen, die mit hochgradig verbundenen Datensätzen arbeiten. Sie verwenden Knoten zur Speicherung von Dateneinheiten und Edges zur Speicherung von Beziehungen zwischen Einheiten. Ein Edge hat immer einen Startknoten, einen Endknoten, einen Typ und eine Richtung. Er kann Eltern-Kind-Beziehungen, Aktionen, Besitzverhältnisse und Ähnliches beschreiben. Die Anzahl und Art der Beziehungen in einem Knoten ist nicht beschränkt. Sie können eine Graphdatenbank verwenden, um Anwendungen zu erstellen und auszuführen, die mit stark verbundenen Datensätzen arbeiten. Typische Anwendungsfälle für eine Graphdatenbank sind Social Networking, Empfehlungsmodule, Betrugserkennung und Wissensdiagramme. Amazon Neptune ist ein vollständig verwalteter Graph-Datenbank-Service, der sowohl das Property-Graph-Modell als auch das Resource Description Framework (RDF) unterstützt. Es stehen zwei Graph-APIs zur Auswahl (TinkerPop und RDF/SPARQL).

In-Memory-Datenbanken

Während andere nicht-relationale Datenbanken Daten auf Festplatten oder SSDs speichern, sind In-Memory-Datenspeicher so konzipiert, dass kein Zugriff auf Festplatten erforderlich ist. Sie eignen sich ideal für Anwendungen, die Reaktionszeiten im Mikrosekundenbereich erfordern oder große Verkehrsspitzen aufweisen. Sie können sie in Gaming- und Ad-Tech-Anwendungen für Features wie Bestenlisten, Sitzungsspeicher und Echtzeitanalysen verwenden. 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. Amazon ElastiCache ist ein vollständig verwalteter In-Memory-Caching-Service, der sowohl mit Redis als auch mit Memcached kompatibel ist, um Workloads mit niedriger Latenz und hohem Durchsatz zu bewältigen. Amazon DynamoDB Accelerator (DAX) ist ein weiteres Beispiel für einen speziell entwickelten Datenspeicher, der DynamoDB-Lesevorgänge um eine Größenordnung beschleunigt.

Datenbanken durchsuchen

Eine Suchmaschinendatenbank ist eine Art nichtrelationaler Datenbank, die sich der Suche nach Dateninhalten widmet, z. B. nach Anwendungsausgabeprotokollen, die von Entwicklern zur Problembehandlung verwendet werden. Sie verwendet Indizes, um ähnliche Merkmale unter den Daten zu kategorisieren und die Suchfunktion zu vereinfachen. Suchmaschinendatenbanken sind für die Sortierung unstrukturierter Daten wie Images und Videos optimiert. 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.

Unterschiede zwischen NoSQL- und SQL-Datenbanken

Jahrzehntelang war das vorherrschende Datenmodell in der Anwendungsentwicklung das relationale Datenmodell, das Daten in Tabellen aus Zeilen und Spalten speicherte. Zum Erstellen und Bearbeiten dieser relationalen Tabellen wurde die Structured Query Language (SQL) verwendet. SQL-Datenbanken modellieren Datenbeziehungen als Tabellen. Die Zeilen in der Tabelle stehen für eine Sammlung zusammengehöriger Werte eines Objekts oder einer Entität. Jede Spalte in der Tabelle stellt ein Datenattribut dar, ein Feld (oder eine Tabellenzelle) speichert den tatsächlichen Wert des Attributs. Mit einem relationalen Datenbankmanagementsystem (RDBMS) können Sie auf die Daten auf viele verschiedene Arten zugreifen, ohne die Datenbanktabellen selbst zu reorganisieren.

Erst Mitte bis Ende der 2000er Jahre wurden andere flexible Datenmodelle in großem Umfang eingeführt und genutzt. Um diese neuen Klassen von Datenbanken und Datenmodellen zu differenzieren und zu kategorisieren, wurde der Begriff NoSQL geprägt. NoSQL steht nicht nur für SQL oder Nicht-SQL. Oft wird der Begriff NoSQL synonym mit dem Begriff nicht-relational verwendet. Die wichtigsten Unterschiede zwischen relationalen und nicht-relationalen Datenbanken sind in der folgenden Tabelle aufgeführt.

 

Relationale Datenbanken

NoSQL-Datenbanken

Optimale Workloads

 

 

Relationale Datenbankensind für transaktionale und stark konsistente Online-Transaktionsverarbeitungsanwendungen (OLTP) konzipiert. Sie eignen sich auch für das Online Analytical Processing (OLAP).   

NoSQL-Datenbanken sind für eine Reihe von Datenzugriffsmustern konzipiert, zu denen auch Anwendungen mit geringer Latenz gehören. 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 referenzielle Integrität in den Beziehungen zwischen den Tabellen.

NoSQL-Datenbanken bieten eine Vielzahl von Datenmodellen, wie z. B. Schlüsselwert, Dokument, Graph und Spalte, die für Leistung und Skalierung optimiert sind.

ACID-Eigenschaften

Relationale Datenbanken bieten die Eigenschaften Atomarität, Konsistenz, Isolation und Langlebigkeit (Atomicity, Consistency, Isolation and Durability - ACID):

  • Atomarität erfordert, dass eine Transaktion vollständig oder gar nicht ausgeführt wird.
  • Konsistenz bedeutet, dass die Daten dem Datenbankschema entsprechen müssen, wenn eine Transaktion abgeschlossen ist.
  • Die Isolierung erfordert, dass konkurrierende Transaktionen getrennt voneinander ausgeführt werden.
  • Langlebigkeit erfordert die Fähigkeit, nach einem unerwarteten Systemausfall oder einem Stromausfall den letzten bekannten Zustand wiederherzustellen.

Die meisten NoSQL-Datenbanken bieten Kompromisse an, indem sie einige der ACID-Eigenschaften relationaler Datenbanken zugunsten eines flexibleren Datenmodells aufheben, das horizontal skaliert werden kann. Das macht NoSQL-Datenbanken zu einer hervorragenden Wahl für Anwendungsfälle mit hohem Durchsatz und geringer Latenz, die über die Grenzen einer einzelnen Instance hinaus horizontal skalierbar sein müssen.

Leistung

Die Leistung hängt im Allgemeinen vom Festplattensubsystem ab. Um die Spitzenleistung zu erzielen, ist oft eine Optimierung von Abfragen, Indizes und der Tabellenstruktur erforderlich.

Die Leistung hängt im Allgemeinen von der Größe des zugrunde liegenden Hardware-Clusters, der Netzwerklatenz und der aufrufenden Anwendung ab.

Skalieren

Relationale Datenbanken skalieren in der Regel, indem sie die Rechenkapazitäten der Hardware erhöhen, oder sie skalieren, indem sie Replikate für Nur-Lese-Workloads hinzufügen.

NoSQL-Datenbanken sind in der Regel partitionierbar. Dies liegt daran, dass die Zugriffsmuster durch den Einsatz einer verteilten Architektur skaliert werden können, um den Durchsatz zu erhöhen, was eine konsistente Leistung bei nahezu grenzenloser Skalierung ermöglicht.

APIs

Anfragen zum Speichern und Abrufen von Daten werden über Abfragen übermittelt, die einer strukturierten Abfragesprache (SQL) entsprechen. Diese Abfragen werden von der relationalen Datenbank geparst und ausgeführt.

Mit objektbasierten APIs können Anwendungsentwickler Datenstrukturen ganz einfach speichern und abrufen. Mit Partitionsschlüsseln können Anwendungen Schlüsselwertpaare, Spaltensätze oder halbstrukturierte Dokumente nachschlagen, die serialisierte Anwendungsobjekte und Attribute enthalten.

Wann sollten Sie NoSQL-Datenbanken SQL-Datenbanken vorziehen

Eine NoSQL-Datenbank eignet sich am besten für die Verarbeitung unbestimmter, unzusammenhängender oder sich schnell ändernder Daten. Sie ist für Entwickler intuitiv zu bedienen, wenn die Anwendung das Datenbankschema vorgibt. Sie können es für Anwendungen verwenden, bei denen:

  • Flexible Schemas benötigt werden, die eine schnellere und iterativere Entwicklung ermöglichen.
  • Die Leistung Vorrang vor einer starken Datenkonsistenz und der Aufrechterhaltung von Beziehungen zwischen Datentabellen hat (referentielle Integrität).
  • Eine horizontale Skalierung durch Sharding zwischen Servern erforderlich ist.
  • Strukturierte, halbstrukturierte und unstrukturierte Daten unterstützt werden.

Sie müssen sich nicht immer zwischen einem nicht-relationalen und einem relationalen Datenbankschema entscheiden. Sie können in Ihren Anwendungen eine Kombination aus SQL- und NoSQL-Datenbanken verwenden. Dieser hybride Ansatz ist weit verbreitet und gewährleistet, dass jede Workload der richtigen Datenbank zugeordnet wird, um eine optimale Preisleistung zu erzielen.

Wie kann AWS Ihre NoSQL-Datenbankanforderungen unterstützen

AWS bietet mehrere NoSQL-Datenbank-Services, die alle Ihre NoSQL-Anforderungen erfüllen. Zum Beispiel:

  • Amazon DynamoDB ist ein vollständig verwalteter Serverless-Schlüsselwertdatenbankservice, der eine konsistente Leistung im einstelligen Millisekundenbereich mit grenzenloser Skalierbarkeit bietet.
  • Amazon DocumentDB (mit MongoDB-Kompatibilität) ist eine vollständig verwaltete, native JSON-Dokumentdatenbank, die den Betrieb kritischer Dokumenten-Workloads in praktisch jeder Größenordnung ohne Verwaltung der Infrastruktur einfach und kostengünstig macht.
  • Amazon Neptune ist ein vollständig verwalteter Serverless-Graphdatenbank-Service, der für hervorragende Skalierbarkeit und Verfügbarkeit entwickelt wurde und Milliarden von Beziehungen in Sekunden abfragen kann.
  • Amazon MemoryDB für Redis ist ein langlebiger In-Memory-Datenbankservice, der Lese- und Schreibreaktionszeiten im Mikrosekundenbereich für ultraschnelle Leistung bietet.
  • Amazon ElastiCache ist ein vollständig verwalteter, Redis- und Memcached-kompatibler In-Memory-Datenspeicher- und Cache-Service, der kostenoptimierte Leistung in Echtzeit bietet.
  • Amazon Keyspaces (für Apache Cassandra) ist eine vollständig verwaltete Serverless-Datenbank mit großen Spalten, die für eine Verfügbarkeit von bis zu 99,999 % mit Replikation in mehreren Regionen konzipiert wurde. Ein skalierbarer, hochverfügbarer und verwalteter Apache-Cassandra-kompatibler Datenbank-Service.
  • Amazon Timestream ist eine vollständig verwaltete Serverless-Zeitreihendatenbank, die das Speichern und Analysieren von Billionen von Ereignissen pro Tag bis zu 1 000 Mal schneller macht als relationale Datenbanken. 
  • Amazon OpenSearch Service ist eine vollständig verwaltete, verteilte Such- und Analysesuite, die die Suche, Überwachung und Analyse von Geschäfts- und Betriebsdaten in Echtzeit ermöglicht.

Beginnen Sie mit NoSQL in AWS, indem Sie noch heute ein kostenloses Konto erstellen!

Welche NoSQL-Datenbank ist die richtige für Sie?
Modernisieren Sie Ihre Anwendungen mit speziell entwickelten Datenbanken