NoSQL-Datenspeicher
NoSQL-Datenspeicher sind nicht-relationale Datenbanken – Schlüssel-Wert-, Dokument-, Spalten- und Graphdatenbanken –, die flexible Datenmodelle und Verteilungsstrategien anwenden, um horizontal zu skalieren und verfügbar zu bleiben, allerdings auf Kosten einiger relationaler Garantien.
Definition
Ein NoSQL-Datenspeicher ist eine Datenbank, die vom relationalen Modell abweicht, Daten als Schlüssel-Wert-Paare, Dokumente, breite spärliche Spalten oder Graphen organisiert und sie typischerweise über einen Cluster mit Replikation und gelockerter Konsistenz verteilt, um Skalierbarkeit und Verfügbarkeit zu erreichen.
Scope
Dieses Thema behandelt die Hauptkategorien von NoSQL-Systemen und deren Datenmodelle: Schlüssel-Wert-Speicher für einfache Abfragen, Dokumentenspeicher für verschachtelte Datensätze, Spaltenspeicher für spärliche, große Tabellen und Graphdatenbanken für stark vernetzte Daten. Es behandelt die Designentscheidungen, die diesen Systemen gemeinsam sind – Sharding, Replikation und abstimmbare Konsistenz – sowie die Zugriffsmuster, für die jedes Modell geeignet ist. Es schließt die breite Konsistenztheorie (CAP und Konsistenzmodelle) und Verarbeitungsframeworks aus, die angrenzende Themen sind.
Core questions
- Welches Datenmodell bietet jede NoSQL-Kategorie (Schlüssel-Wert, Dokument, Spalte, Graph)?
- Welche Zugriffsmuster und Arbeitslasten eignen sich für jede Kategorie?
- Wie sharden und replizieren NoSQL-Speicher Daten für Skalierung und Verfügbarkeit?
- Welche relationalen Merkmale (Joins, Transaktionen, Schemata) werden gelockert und warum?
- Wie ermöglichen abstimmbare Konsistenzeinstellungen Anwendungen, Latenz und Aktualität auszugleichen?
Key concepts
- Schlüssel-Wert-Speicher
- Dokumentenspeicher
- Spaltenspeicher
- Graphdatenbank
- Sharding und Replikation
- abstimmbare Konsistenz
- Schemaflexibilität
- denormalisierte Zugriffsmuster
Key theories
- Schlüssel-Wert- und Spaltenmodelle
- Schlüssel-Wert-Speicher ordnen undurchsichtige Schlüssel Werten für einfache, schnelle Abfragen zu, während Spaltenspeicher Daten in Zeilen mit flexiblen, spärlichen Spaltenfamilien organisieren; beide, exemplifiziert durch Dynamo und Bigtable, skalieren auf riesige Cluster mit Sharding und Replikation.
- Dokumenten- und Graphmodelle
- Dokumentenspeicher enthalten selbstbeschreibende verschachtelte Datensätze (oft JSON) und unterstützen Abfragen über deren Struktur, während Graphdatenbanken Entitäten und Beziehungen als Knoten und Kanten modellieren, optimiert für die Traversierung stark vernetzter Daten.
- Gelockerte Garantien für Skalierbarkeit
- Um horizontal zu skalieren und verfügbar zu bleiben, lockern viele NoSQL-Speicher Schemata, verzichten auf zeilenübergreifende Transaktionen und Joins und bieten abstimmbare oder letztendliche Konsistenz, wodurch ein Teil der Verantwortung für die Integrität auf die Anwendung verlagert wird.
Clinical relevance
NoSQL-Speicher sind weit verbreitete Bausteine von Internetdiensten: Schlüssel-Wert- und Spaltenspeicher unterstützen Sitzungszustände, Kataloge und Zeitreihendaten in massivem Umfang, Dokumentenspeicher eignen sich für flexible Anwendungsdaten, und Graphdatenbanken treiben Empfehlungs- und Betrugserkennungssysteme an, wodurch die Kenntnis ihrer Modelle für das Data Engineering unerlässlich ist.
History
Die NoSQL-Bewegung entstand aus dem Bedarf von Internetunternehmen, über Einzelknoten-relationale Datenbanken hinaus zu skalieren. Googles Bigtable (2006/2008) führte das Spaltenmodell ein und Amazons Dynamo (2007) das hochverfügbare, letztlich konsistente Schlüssel-Wert-Modell; diese einflussreichen Designs führten Ende der 2000er und 2010er Jahre zu einer Generation von Open-Source-Schlüssel-Wert-, Dokumenten-, Spalten- und Graphdatenbanken.
Key figures
- Werner Vogels
- Jeffrey Dean
- Sanjay Ghemawat
Related topics
Seminal works
- decandia2007
- chang2008
Frequently asked questions
- Wie wähle ich zwischen Schlüssel-Wert-, Dokumenten-, Spalten- und Graphspeichern?
- Passen Sie das Modell an das Zugriffsmuster an: Schlüssel-Wert für einfache Abfragen nach einem bekannten Schlüssel; Dokument für eigenständige, verschachtelte Datensätze, die nach ihren Feldern abgefragt werden; Spalten für sehr große, spärliche Tabellen mit vorhersehbarem Zeilenschlüsselzugriff; und Graph für Daten, die von Beziehungen und Traversierungen dominiert werden, wie soziale Netzwerke oder Empfehlungen.
- Unterstützen NoSQL-Speicher Transaktionen?
- Historisch gesehen boten viele NoSQL-Speicher nur atomare Operationen für einzelne Schlüssel und keine Transaktionen über mehrere Datensätze hinweg, um Skalierbarkeit zu erreichen. Das hat sich geändert: Eine Reihe moderner NoSQL- und 'NewSQL'-Systeme bieten heute Multi-Dokument- oder sogar verteilte Transaktionen, sodass die Transaktionsunterstützung stark variiert und pro System überprüft werden sollte.