Login
Newsletter
Werbung

Do, 19. August 2010, 15:00

NoSQL – Jenseits der relationalen Datenbanken

Eine Alternative zu relationalen Datenbanken stellen Key-Value-Stores und dokumentenorientierte Datenbanken dar. Die Grundprinzipien und wichtige Vertreter werden hier vorgestellt.

Vorbemerkungen

Relationale Datenbanken, welche in der Regel (aber nicht zwingend) per SQL abgefragt werden, findet man heute im Hintergrund vieler Anwendungen – sei es bei Wikis (z.B. MediaWiki), Content Management Systemen (z.B. Typo3, Joomla), Blog-Systemen (z.B. Wordpress) oder Ticket-/Bugtracking-Systemen (z.B. Roundup). Ganz zu schweigen natürlich von vielen kommerziellen Systemen wie ERP-Software, Lagerverwaltungssoftware etc. Mit Hinblick auf Unternehmensanwendungen wurde eine der ersten relationalen Datenbanken, IBM System R, entwickelt. Zur Abfrage der Daten wurde auch eine spezielle Programmiersprache entwickelt, aus der Ende der 70er Jahre des vorigen Jahrhunderts dann SQL hervorging. Zu Beginn des 21. Jahrhunderts wurden freie Implementierungen von relationalen, per SQL abfragbaren Datenbanken wie MySQL, PostgreSQL und SQLite wirklich einsatzfähig. Seitdem findet man diese in vielen freien Anwendungen, wie weiter oben bereits erwähnt.

Nun ist die Entwicklung der Datenbanken aber nicht stehen geblieben. Besonders Internet-Schwergewichte wie Google, eBay und in jüngerer Vergangenheit auch Twitter und Facebook stießen an die Grenzen und Möglichkeiten von konventionellen, relationalen Datenbanken und entwickelten bzw. adaptierten andere Lösungen, wie z.B. Google mit Bigtable oder Twitter mit Gizzard. Dass dieses Gebiet auch für andere Firmen wie z.B. Yahoo und Adobe von Interesse ist, sieht man an der Entwicklung von Hadoop, einer Open-Source-Implementierung von Datenbank und Dateisystem für sehr große Datenmengen.

Zugegebenermaßen ist es wohl so, dass die allermeisten Leser bzw. Computerbenutzer im Allgemeinen auch nicht nur annähernd Datenbestände im hohen Terabyte- oder Petabyte-Bereich haben, geschweige denn selber (Web-)Applikation programmieren, welche riesige Datenmengen speichern und verarbeiten und gleichzeitig sehr viele An-/Abfragen pro Sekunde bedienen müssen. Trotzdem muss nicht immer eine relationale Datenbank zum Einsatz kommen. Je nach Anwendungsfall und Anforderung an die Struktur (und Kriterien für Abfragen) der Daten gibt es interessante Alternativen, welche im Folgenden vorgestellt werden. Dies sind zum einen dokumentenorientierte Datenbanken und zum anderen die sogenannten Key-Value Stores, was übersetzt so viel wie Schlüssel-Wert-Speicher heißt.

Rahmenbedingungen

Wie in der Einleitung zu diesem Artikel bereits erwähnt, ist das Einsatzgebiet von relationalen Datenbanken sehr vielfältig und es würde den Rahmen diese Artikels bei weitem sprengen, auf mögliche Implementierungen für dieses vielfältige Spektrum einzugehen. Daher werden im Folgenden primär Webanwendungen wie Microblogging-Dienste (Twitter, identi.ca) und Blogsysteme bzw. CMS herangezogen.

Es wird auch keine komplette Implementierung in einer bestimmten Programmiersprache vorgestellt. Vielmehr werden Vorschläge für mögliche (Datenbank-)Schemata gemacht. Diese sind auch mehr als Startpunkt oder Denkanstoß zu sehen, da individuelle Programme und Anwendungen gegebenenfalls speziellere oder andere Anforderungen an die Struktur stellen. Auf Themen wie Replikation, horizontale Skalierbarkeit der Datenbank und Fehlertoleranz wird nur am Rande eingegangen, da diese Themen in der Regel erst bei sehr großen Anwendungen mit vielen zehntausend Nutzern und vielen quasi-gleichzeitigen Zugriffen relevant werden.

Klar ist auch: Wer dies unbedingt will, kann wahrscheinlich für jede Art von Anwendung jede Art der hier vorgestellten Datenbanken einsetzen. Ob dies aber immer unbedingt effizient ist oder der Aufwand für die Implementierung unverhältnismäßig hoch ist, ist dann ein anderes Thema.

Ein Gemeinsamkeit ist übrigens, dass für alle vorgestellten Datenbanken – egal ob SQL-basiert oder SQL-frei – Schnittstellen für viele Programmiersprachen existieren, sodass es hier kaum Einschränkungen gibt. Zum Beispiel stehen mit libsqlite und libcouchdb-glib Bibliotheken für SQLite und CouchDB (siehe weiter unten) unter Linux zur Verfügung.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung