Entwicklung & Design

Relationale Datenbanken bekommen Konkurrenz: NoSQL – Neues Denken in der Datenbankwelt

Es herrscht Aufbruchstimmung in der Welt der Datenbanken. Nach mehr als 30 Jahren Dominanz der relationalen Datenbanken schicken sich unterschiedlichste Lösungen an, ihnen den Platz streitig zu machen. NoSQL bietet neue Denkansätze für Datenbanken unterschiedlicher Art.

NoSQL ist ein Statement und beschreibt eine neue Generation von Datenbanken, die mit den Traditionen der relationalen Dinosaurier brechen. Die Idee ist nicht neu, und einige Konzepte gehen zurück bis in die frühen achtziger Jahre. Objektorientierte Datenbanken als geistige Vorläufer einiger NoSQL-Datenbanken konnten sich aber nicht durchsetzen.

Warum dennoch der ganze Aufwand? Oracle, Sybase, MySQL und Konsorten verrichten schließlich seit Jahren zuverlässig ihre Dienste in allen möglichen Bereichen. Das ist zwar richtig, doch sie sind nicht unbedingt das richtige Tool für jeden Zweck. Gerade mit dem Anwachsen des Datenaufkommens im Internet sind neue Wege gefragt, die auch umfassenderen und loseren Datenstrukturen gerecht werden. Relationale Datenbanken leben von einem festen Schema und schränken Daten entsprechend ein.

Ohne Schema

Die neue Generation von Datenbanken zielt dementsprechend vor allem auf die Nöte und Bedürfnisse des Webs. Unstrukturierte Daten bedürfen des Verzichts auf ein festes Schema und dessen Constraints und benötigen Unterstützung simpler Datenstrukturen wie Hashes und Arrays, deren Modellierung mit relationalen Datenbanken immer wieder zu unschönen Workarounds führt.

Viele NoSQL-Vertreter stellen gewisse Möglichkeiten zur Verfügung, um eine Art Schema zu definieren, gemeinhin hat sich jedoch durchgesetzt, ein einfaches Datenformat wie JSON oder einfach Hashmaps zu verwenden, um Daten zu speichern. Man spricht nicht mehr von Zeilen in einer Tabelle, man spricht von Dokumenten, die keinem Schema unterliegen und trotzdem alle Teil der gleichen Datenbank sein können.

Eventual-Consistency

Die wichtigste Erkenntnis der neuen Datenbanken ist, dass strikte Datenkonsistenz in verteilten Systemen nicht oder nur sehr bedingt möglich ist. Wer bereits Kontakt mit MySQLs Replikation hatte, kennt das Problem. Wird ein Eintrag im Master geschrieben, ist er nicht sofort auf den Slaves verfügbar. Der Verzug ist meist kaum spürbar und wird auch nur ungern in Applikationen berücksichtigt, aber die Gefahr, dass er länger als nur ein paar Millisekunden beträgt, besteht.

Post-relationale Datenbanken sehen diesen Umstand nicht unbedingt gelassen, erkennen ihn aber als Notwendigkeit an, wenn Daten über mehrere Nodes verteilt sind. Konsistenz ist meistens nicht ohne Nachteile zu hundert Prozent erreichbar. Je verteilter die Systeme, desto mehr sorgen Netzwerkverbindungen und geografische Entfernung dafür, dass man für strikte Konsistenz einen hohen Performance-Preis zahlt.

Eventual-Consistency [1] ist vor diesem Hintergrund eine Alternative. Werden Daten auf einen Node geschrieben, ist unbestimmt, wann genau sie auf anderen Nodes verfügbar sind. Gibt es keine konkurrierenden Updates, wird aber davon ausgegangen, dass die Änderung auf alle Nodes propagiert wird.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Ein Kommentar
flo
flo

Ein Fakt im Thema Graph-Datenbanken hat sich geändert!

sones GraphDB ist Open Source, den Code gibt es unter: GitHub

Weitere Informationen rund um die GraphDB unter: sones wiki