Das könnte dich auch interessieren

Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

t3n 19

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.

Links und Literatur

  1. Eventual-Consistency
  2. Amazon Dynamo
  3. Dynomite
  4. Project Voldemort
  5. Redis
  6. Tokyo Tyrant
  7. Scalaris
  8. Amazon S3
  9. CouchDB
  10. Riak
  11. CouchDB Lounge
  12. Riaks Ring-Modell
  13. Riaks Ring-Modell erklärt
  14. MongoDB
  15. Amazon SimpleDB
  16. Neo4j
  17. Sones GraphDB
  18. Google BigTable
  19. Cassandra

Finde einen Job, den du liebst

1 Reaktionen
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

Antworten

Melde dich mit deinem t3n-Account an oder fülle die unteren Felder aus.

Abbrechen