FAQ NoSQL und Big Data

Was Sie über NoSQL wissen sollten

26.06.2013
Von Wolfgang Klimt
NoSQL-Datenbanken können Unternehmen mit Big-Data-Plänen helfen, die Datenflut in den Griff zu bekommen. Unsere FAQ beantwortet die wichtigsten Fragen dazu.
NoSQL-Datenbanken eignen sich oftmals gut als Ergänzung zu den relationalen SQL-Datenbanken. Sie sind flexibel, schnell und ausfallsicher.
NoSQL-Datenbanken eignen sich oftmals gut als Ergänzung zu den relationalen SQL-Datenbanken. Sie sind flexibel, schnell und ausfallsicher.
Foto: Gina Sanders - Fotolia.com

Die Informationsflut ist unaufhaltbar. Täglich entstehen in Unternehmen enorme Mengen an Daten - aus Dokumenten, der Produktion, Kommunikation, Social Media und vielen anderen Quellen. Das Problem: Allein schon die Datenverwaltung ist aufwendig und kostspielig. Was aber, wenn die Informationen auch schnell verfügbar sein müssen, in den unterschiedlichsten Formaten vorliegen und auf den ersten Blick nicht in das klassische Raster der relationalen Datenbanken passen? Dann könnte dies ein Fall sein für eine NoSQL-Datenbank. Die wichtigsten Fragen zum Thema NoSQL- und SQL-Datenbanken finden Sie im Folgenden.

Was versteht man eigentlich unter NoSQL?

Unter dem Begriff NoSQL wird aktuell eine sehr heterogene Menge von Datenverwaltungssystemen mit unterschiedlichen Funktionen zusammengefasst. Gemeinsam ist ihnen vor allem, dass sie für Anwendungsfälle geschaffen wurden, in denen die verfügbaren SQL-basierten Datenbanken an ihre Grenzen stießen und daher nicht oder nur mit sehr großem Aufwand einsetzbar waren. Der Name steht für "Not only SQL" ("nicht nur SQL"). Bei NoSQL geht es also nicht darum, keine SQL-Datenbanken mehr einzusetzen, sondern nur, sich nicht ausschließlich auf diese zu beschränken. NoSQL ist also keine Anti-SQL-Strömung, sondern eine Alternative oder Bereicherung zur SQL-Welt.

Wie unterscheiden sich SQL- und NoSQL-Datenbanken?

Interessanterweise schließt NoSQL an historische Datenbankmodelle an mit dem Ziel, einige Nachteile der relationalen Datenbankmanagementsysteme (RDBMS) zu beheben. So vereinen sich unter NoSQL eine Reihe von Ideen: Die Architektur vieler NoSQL-Datenbanken setzt auf den Einsatz einer (auch großen) Anzahl kostengünstiger Rechnersysteme zur Datenspeicherung, wobei die meisten (bei einigen Systemen sogar alle) Knoten gleichrangig sind. Eine Skalierung erfolgt dann einfach durch Hinzufügen weiterer Knoten, oft sogar im laufenden Betrieb. Das Aufsetzen von einfachen Key-Value-Stores und die Speicherung unstrukturierter Daten ermöglicht Schema Evolution. Zudem verzichten NoSQL-Datenbanken weitestgehend auf Transaktionen. Einige Systeme unterstützen stattdessen die Idee von "Eventual Consistency". Darunter versteht man, dass die Datenbank im Normalbetrieb nach einer gewissen Zeit (typischerweise im Sekundenbereich) immer wieder einen konsistenten Zustand erreicht, das heißt alle beteiligten Knoten über den gleichen Datenstand verfügen.

Im Unterschied zu den gängigen SQL-Datenbanken unterscheiden sich die NoSQL-Datenbanken untereinander sehr hinsichtlich des unterstützten Datenmodells. So gibt es einfache Key-Value-Stores wie zum Beispiel Apache Hadoop, Riak oder Amazons Dynamo, aber auch komplexe dokumentenorientierte wie CouchDB, MongoDB oder OrientDB, die zusätzlich zu Dokumenten noch Verknüpfungen zwischen Dokumenten anbieten. Eine genaue Prüfung des jeweiligen Anwendungsszenarios auf die bestimmten Eigenschaften der NoSQL-Datenbank ist daher erforderlich. Der Zeiteinsatz jedoch lohnt sich.

Für welche Einsatzgebiete eignen sich NoSQL-Datenbanken?

Schnell ans Ziel: In NoSQL-Systemen lassen sich große Mengen an Daten ablegen und abfragen, ohne dabei an Performancegrenzen zu stoßen.
Schnell ans Ziel: In NoSQL-Systemen lassen sich große Mengen an Daten ablegen und abfragen, ohne dabei an Performancegrenzen zu stoßen.
Foto: Gina Sanders - Fotolia.com

Der Einsatz einer NoSQL-Datenbank sollte überall dort in Erwägung gezogen werden, wo eine SQL-Datenbank an ihre Grenzen stößt oder zur Erfüllung der Aufgabe aufwändige architektonische Verrenkungen notwendig wären, man sich also ohnehin von einem standardisierten Einsatzszenario wegbewegt. In NoSQL-Systemen lassen sich zum Beispiel wesentlich größere Mengen an Daten ablegen, ohne an Performancegrenzen zu stoßen - Stichwort "horizontale Skalierbarkeit". Bei komplexen Abfrageanforderungen, etwa im Bereich von unstrukturierten Daten wie Video, Audio oder Bild-Dateien, erlauben einige NoSQL-Datenbanken baumförmige Strukturen der Metadaten ohne ein fest definiertes Datenschema und deren flexible Abfrage. Auch wenn es sich um sehr variable Dateien handelt, eignen sich NoSQL-Datenbanken besser, weil sich die Daten nicht länger in das "SQL-Korsett" von Tabellen und Relationen pressen lassen müssen.

Wie steht es um die Ausfallsicherheit von NoSQL-Systemen?

Die meisten NoSQL-Systeme erreichen bei entsprechend verteilter Hardware eine extrem hohe Ausfallsicherheit für ihre Daten bei vergleichsweise minimalem Administrationsaufwand. Hier sind sie relationalen Datenbanken weit voraus. Der Grund liegt in ihrer Eigenschaft, die Daten automatisch auf viele Server zu verteilen, redundant vorzuhalten und bei Ausfall eines Servers ohne administrativen Eingriff automatisch auf einen anderen Server zuzugreifen - Stichwörter "Sharding and Replication". Dies geht so weit, dass bei einer entsprechenden Auslegung des Gesamtsystems in vielen Fällen auf ein Backup der Daten verzichtet wird, da es bei der gespeicherten Datenmenge ohnehin nicht mehr praktikabel durchzuführen wäre.

Welche Vor- und Nachteile bringt die Offenheit?

Wolfgang Klimt, Bereichsleiter Delivery bei Consol, ist überzeugt: "NoSQL-Datenbanken sollten immer dort in Erwägung gezogen werden, wo die klassischen relationalen an ihre Grenzen stoßen."
Wolfgang Klimt, Bereichsleiter Delivery bei Consol, ist überzeugt: "NoSQL-Datenbanken sollten immer dort in Erwägung gezogen werden, wo die klassischen relationalen an ihre Grenzen stoßen."
Foto: Consol Consulting & Solutions Software GmbH

Die NoSQL-Bewegung ist nicht proprietär an einen Hersteller gebunden, sondern ein Produkt der Open Source Community beziehungsweise einer Bewegung, die sich der Entwicklung nicht-relationaler Datenbanken verschrieben hat. Das hat den Vorteil, dass die Entwicklungen grundsätzlich offen und ihre Dokumentationen frei verfügbar sind. So haben es Entwickler leicht, sich einen Einblick zu verschaffen, um die passende Datenbank auszuwählen. Die Kehrseite der Medaille ist, dass dieser Einblick manchmal sehr ernüchternd sein kann, weil die Dokumentationen oder Tutorials teilweise unübersichtlich oder unvollständig sind. Hier sind manchmal Ausdauer und Geduld gefragt.

Welche Kostenaspekte sind mit NoSQL zu beachten?

Bei besonderen Anforderungen, insbesondere bezüglich Skalierbarkeit und Verfügbarkeit von Daten, stellen NoSQL-Datenbanken sinnvolle und kostengünstige Alternativen dar. Vor allem die einfache horizontale Skalierbarkeit und der Verzicht auf ein festes Datenbanken-Schema ermöglichen Anpassungen und Erweiterungen mit relativ geringem Aufwand. Allerdings unterscheiden sich die NoSQL-Konzepte nicht nur deutlich von RDBMS, sondern auch untereinander, sodass ihr Verstehen sehr schwierig sein kann. Datenbankentwickler und Administratoren müssen daher oftmals trainiert werden, was mit Zeit- und damit monetärem Aufwand verbunden ist. Hinzu kommt, dass es nicht bei allen NoSQL-Systemen kommerziellen Support mit den möglicherweise gewünschten SLAs gibt, was je nach Anforderung bei einem Einsatz in einer produktiven Umgebung eine entscheidende Rolle spielen kann.

Wie hoch ist der Installations- und Anpassungsaufwand?

Hier lassen sich pauschale Aussagen leider schwer treffen. Einige NoSQL-Datenbanken wie MongoDB sind sehr schnell und einfach installiert und benutzt. Bei CouchDB gibt es zum Beispiel benutzerfreundliche Web-Tools für einen schnelleren Einstieg. Andere wie Cassandra werden üblicherweise auf mehrere Knoten aufgesetzt. Dabei erfolgt die Bedienung über Kommandozeilen (CLI, Command Line Interface) oder eine Weboberfläche (Web Interface). Insgesamt lässt sich sagen, dass im Vergleich eine relationale Datenbank zunächst häufig einfacher zu installieren ist, da sie entweder bei der Betriebssystem-Installation schon dabei ist oder aufwändig gestaltete Installationsprogramme mitbringt. Je nach Leistungsanforderung schließt sich jedoch auch bei relationalen Datenbanken an die Installation eine nicht selten aufwändige Konfigurations- und Tuningphase an, die den Vorsprung bei der Installation wieder relativiert, insbesondere wenn es um die Bereitstellung entsprechend performanter und ausfallsicherer Systeme geht.

Wie steht es um Wartung und Updates von NoSQL-Systemen?

Da die NoSQL-Bewegung noch relativ jung ist, ist ihre Entwicklung noch nicht abgeschlossen; hier passiert sehr viel. Neue Versionen, die meist auch neue Features bieten, werden daher in relativ kurzen Abständen und meist mehrfach pro Jahr herausgegeben. Dadurch ist der Aufwand, up-to-date zu bleiben, höher als bei relationalen Datenbanken. Da eine NoSQL-Installation üblicherweise auf vielen Knoten läuft, ist die Wartung schon aufwändiger. Die Software selbst scheint ausgereift, daher ist der Aufwand mit dem von normalen Datenbanken vergleichbar. (wh)

Im Video: Einführung in NoSQL-Datenbanken