adam121 - stock.adobe.com
NoSQL-Datenbanktypen in der Cloud: Ein Vergleich
NoSQL und Cloud Computing wurden füreinander geschaffen. Ein Überblick über die Datenbankangebote von großen Cloud-Providern und Nischenanbietern.
Mit dem Aufkommen global skalierbarer Online-Dienste für soziale Netzwerke, Streaming-Inhalte, Nachrichten-Distribution und Online-Handel haben sich die Anforderungen an die Anwendungsinfrastruktur und Softwarearchitekturen deutlich verändert. Eine der bedeutendsten Transformationen war die Art und Weise, wie Systeme Daten speichern, organisieren und darauf zugreifen.
Herkömmliche relationale Datenbankmanagementsysteme (RDBMS), wie zum Beispiel Oracle Database, sind keine gute Wahl für Webanwendungen, die eine verteilte und skalierbare Cluster-Infrastruktur erfordern. NoSQL-Datenbanken eignen sich besser für lose gekoppelte Designs, bei denen Anwendungsdaten und ausführbarer Code auf mehrere Maschinen und Rechenzentren verteilt sind.
Vor dem Hintergrund der Verwurzelung in der Open-Source-Community und der Cloud-basierten Entwicklung haben IaaS-Anbieter verschiedene NoSQL-Datenbanktypen im Angebot. Sie können damit unterschiedliche Datentypen und Anwendungsfälle abdecken.
Vor- und Nachteile
Da Webanwendungen und -dienste die Haupttreiber der NoSQL-Entwicklung waren, haben die verschiedenen Arten von NoSQL-Datenbanken eine ganze Reihe von Vorteilen gegenüber relationalen Datenbanken. Dazu gehören unter anderem:
- Die Fähigkeit, eine Vielzahl von Datentypen zu verarbeiten;
- Eine höhere Leistung und geringere Latenzzeiten;
- Die effiziente Speicherung unstrukturierter Daten – wie Text, Bilder, Audio und Video;
- Die Eignung für lose gekoppelte Systeme, die horizontal skalieren;
- Die Eignung für Zeitreihen- oder andere Streaming-Daten, wie zum Beispiel Ereignisprotokolle und IoT-Daten;
- Die Fähigkeit, die Verfügbarkeit verschiedener Formen von NoSQL-Systemen und unstrukturierten Datenmodellen zu gewährleisten;
- Der Zugang zu einer Vielzahl von Open-Source- oder kostengünstigen Implementierungen, die billiger zu beschaffen und zu betreiben sind als ein ausgeklügeltes RDBMS.
Diese Vorteile haben jedoch ihren Preis. Zum Beispiel sorgen RDBMS für eine unmittelbarere Konsistenz und Zuverlässigkeit mit dem ACID-Modell – Atomicity, Consistency, Isolation und Durability. NoSQL-Datenbanken hingegen folgen – als Gegenstück zu den strengen ACID-Kriterien – dem BASE-Modell: Basic Availability (grundlegende Verfügbarkeit), Soft State und Eventual Consistency. Außerdem fehlen nicht-relationalen Datenbanken Mechanismen zur Überprüfung der Datenintegrität. Dies muss im externen Code erfolgen. Schließlich gibt es in der Regel keine Unterstützung für komplexe SQL-Operationen, zum Beispiel Compound-Select-Anweisungen oder Tabellen-Joins.
NoSQL-Datenbankkategorien
NoSQL sollte man nicht als eine bestimmte Art von Datenbank betrachten, sondern als eine Kategorie mit mehreren Varianten. Diese Varianten sind:
- Key-Value Store: Dieses Speicherparadigma – auch bekannt als Hash-Tabelle – organisiert Daten als eine Folge von Datensätzen. Diese werden durch einen Schlüssel oder Hash-Wert indiziert, der auf ein oder mehrere Datenobjekte oder Datensätze verweist. Das ist ähnlich wie in einem Dictionary, da jeder Schlüssel anstelle einer festen Länge eine unterschiedliche Anzahl von Werten haben kann.
- In-Memory-Cache: In-Memory-Cache ist eine Art Key-Value-Speicher, der so konzipiert ist, dass er vollständig in den System-RAM passt. Dies beschleunigt die Leistung und reduziert potenziell die Kosten, da die Skalierung der gesamten Datenbank entfällt, nur um eine bestimmte Anwendungsfunktion oder ein bestimmtes Szenario zu bewältigen.
- Dokumentenablage: Obwohl es sich um eine Art Teilmenge einer Key-Value-Datenbank handelt, folgen die Werte in einer Dokumentenablage einer vordefinierten hierarchischen Struktur, die Metadaten über die gespeicherten Inhalte einbindet. Dokumentenablagen werden oft in Textformaten wie XML, YAML sowie JSON oder binären Varianten wie einer Microsoft-Office-Datei oder einem PDF kodiert.
- Suche in der Datenbank: Ein spezialisierter Dokumentenspeicher, in dem die Dokumentenindizes auf mehrere Knoten verteilt werden können, um eine massive Skalierbarkeit zu gewährleisten und das Abrufen bestimmter Einträge zu beschleunigen.
- Spaltenorientierter Speicher: Dieser Ansatz speichert die Daten in Spalten und nicht in Zeilen. Die Spalten sind in Familien von verwandten Daten gruppiert, auf die gemeinsam zugegriffen wird.
- Graphdatenbank: Diese Art von Datenbank hebt die übliche Zeilen-Spalten-Struktur zugunsten einer Sammlung von Elementen und deren Beziehungen zueinander auf.
NoSQL-Datenbankvergleich
Da die Cloud-Infrastruktur zu einer beliebten Option für den Einsatz von Webanwendungen wurde, bieten AWS, Microsoft und Google ihren Kunden NoSQL-Dienste und -Angebote an. Mit diesen Services können sie verschiedene Datentypen und Anwendungsfälle besser unterstützen. Die Angebote der Cloud-Anbieter sind für jeden Typ von NoSQL-Datenbank in der folgenden Tabelle aufgeführt:
Wie die Vergleichstabelle der NoSQL-Datenbanken zeigt, gibt es für jeden NoSQL-Datenbanktyp mehrere populäre Open-Source- und kommerzielle Angebote. Jede Option eines Drittanbieters hat besondere Merkmale und Stärken, die in der Cloud-Alternative nicht unbedingt vorhanden sind. So kann zum Beispiel MongoDB so konfiguriert werden, dass replizierte Daten für Lesezugriffe sofort konsistent sind.
Der übergreifende Unterschied besteht jedoch im Bereitstellungsmodell: Wird die Datenbank privat gemanagt – lokal oder in der Colocation-Infrastruktur – oder als Cloud-Service bereitgestellt.
Die Wahl hängt davon ab, ob ein Unternehmen selbstverwaltete, hochgradig konfigurierbare und kontrollierte Software präferiert oder eher doch einen gemanagten Cloud-Service. Letzterer reduziert die Investitionskosten im Vorfeld sowie die laufenden Kosten für das Infrastrukturmanagement.