Die Cloud-Datenbanken: Data Management in der Cloud

RDBMS in Cloud-Datenbanken

Cloud-Computing Systeme dienen in erster Linie dem Zweck, den Anforderungen im modernen Internetzeitalter gerecht zu werden. Eine der größten Anforderungen ist hierbei die Verarbeitung sehr großer Datenmengen (Tera- und Peta-Datenbereich). Beispielsweise soziale Netzwerke wie Facebook müssen mit großen Datenmengen und hoher Verfügbarkeit zurechtkommen. Die größten Stärken von Cloud-Computing Systemen sind die nahezu uneingeschränkt verfügbaren Ressourcen sowie die stark dezentralisierte Struktur, d.h. die Verteilung der Daten auf verschiedene Rechner bzw. Standorte. Relationale Datenbanksysteme sehen zwar allgemein den Betrieb auf mehreren Servern durch Clustering vor, jedoch ist dies nur für wenige Server, nicht für tausende ausgelegt, wie sie bei Cloud-Systemen zum Einsatz kommen. Relationale Datenbanken sind im Mehr-Server-Betrieb nur begrenzt skalierbar, d.h. dass zusätzliche Server mit zusätzlichen Ressourcen ab einem gewissen Punkt keine bzw. nur noch geringe und somit im Hinblick auf die Kosten unverhältnismäßige Performance-Verbesserungen mit sich bringen. Dies ist auf die Tatsache zurückzuführen, dass relationale Datenbanken eine Master/Slave-Architektur benötigen, um die Konsistenz der Daten gewährleisten zu können. In der Regel verwaltet hierbei ein Server alle Schreibvorgänge und oftmals auch die Lesevorgänge, um diese an die anderen Datenbank-Instanzen weiterzuleiten. Die begrenzte Skalierbarkeit der RDBMS widerspricht somit den Forderungen an Cloud Systeme, die eine lineare Skalierbarkeit fordern.

Weiterführend ist zu sagen, dass kurzzeitige Datensatzsperrungen durch die Befolgung der ACID-Eigenschaften? von relationalen Datenbanken und der Gewährleistung der Transaktionssicherheit zu längeren Antwortzeiten führen. Diese Wartezeiten sind nicht mit den Anforderungen moderner Webanwendungen vereinbar, denn diese müssen hochverfügbar sein. Auch Mehrphasen-Commit-Protokolle, wie sie bei Mehr-Server-Systemen nötig wären, um die Konsistenz zu gewährleisten, würden sich negativ auf die Performance auswirken.

Die Tatsache, dass Cloud-Anbieter in der Regel günstige Hardwarekomponenten nach dem Prinzip "Masse statt Klasse" einsetzen und somit Hardwareausfälle in Kauf nehmen, führt zu einem weiteren Nachteil von RDBMS in Cloud-Umgebungen. Zwar wird bei einem Ausfall eines Servers auf einen anderen Server umgeschaltet, jedoch führt dies bei relationalen Datenbanken zu Transaktionsabbrüchen oder gar fehlenden Datensätzen, da diese eher für den ausfallsicheren Betrieb auf High-End-Geräten ausgelegt sind.

Neue Anforderungen an Datenbanken in der Cloud

All diese Probleme mit relationalen Datenbanken führen zum Schluss, dass Cloud Computing Systeme andere Anforderungen an Datenbanksysteme stellen und die Datenbanksysteme an die Stärken des Cloud Computings angepasst werden müssen, damit Synergien zwischen den Systemen genutzt werden können:

  • Datenbanksysteme in der Cloud sollten möglichst eine hohe Verfügbarkeit und hohe Performance aufweisen.
  • Des Weiteren muss die Datenbank frei skalierbar sein. Diese Skalierung der Datenbank bringt notwendigerweise eine Partitionierung der Daten mit sich, da die Daten auf mehreren physikalischen Instanzen abgelegt werden müssen.

Für diese Anforderungen sind relationale Datenbanksysteme im klassischen Sinne nicht geeignet, da die Konsistenz der Daten nicht zu jeder Zeit gewährleistet werden kann. Für eine Gewährleistung der Konsistenz wäre, wie schon zuvor erwähnt, eine zentrale Datenbank im Sinne eines Master/Slave-Systems notwendig. Dies würde jedoch zu einem Performance-Engpass führen und die lineare Skalierbarkeit verhindern.

Einen möglichen Ansatz für Datenbanken in Cloud Cpmputing Systemen bieten beispielsweise Key-Value-Datenbanken, die im Rahmen der NoSQL-Bewegung entstanden sind. Diese Datenbanken sind linear skalierbar, partitionierbar, hochverfügbar und haben kurze Antwortzeiten. Es wird also großer Wert auf die hohe Verfügbarkeit der Daten gelegt, was im Internetzeitalter eine große Bedeutung hat. Diese Hochverfügbarkeit geht jedoch zu Lasten der Konsistenz. Die Daten sind direkt im Anschluss an einen Schreibvorgang nur eventuell konsistent (eventually consistency) und die Datenkonsistenz wird im Laufe der Zeit auf den verschiedenen Instanzen nachgezogen (meist innerhalb weniger Sekunden oder aber auch erst in Minuten). Im Rahmen der Key-Value-Systeme kommt hierfür im Gegensatz zu den ACID-Eigenschaften? der RDBMS bei Transaktionen das BASE-Konsistenzmodell zum Einsatz, was eine hohe Verfügbarkeit bei eventueller Konsistenz beinhaltet (Basically Available, Soft-state, Eventual consistent).
Key-Value-Datenbanken sind des Weiteren dafür ausgelegt nur einfache Daten abzubilden. Die Vorteile von relationalen Datenbanken, wie komplexe Tabellenstrukturen und Abfragen (Joins etc.), gehen also zu Gunsten von den eben genannten Vorteilen der Key-Value-Systeme verloren, was meist ein K.O.-Kriterium für Business-Applikationen ist. Beispiele für Key-Value-Datenbanken sind Google’s BigTable, Amazon’s Simple DB und Cassandra von Facebook.

Es lässt sich also erkennen, dass sich bei Datenbanken in Cloud-Systemen die Problematik ergibt, dass je nach Wahl des eingesetzten Systems entweder die Verfügbarkeit oder die Konsistenz nicht vollständig gewährleistet werden kann. Diese Thematik wird in der IT-Branche mit dem so genannten CAP-Theorem beschrieben, was besagt, dass es unmöglich ist, gleichzeitig Konsistenz, Verfügbarkeit und Partitionstoleranz (Ausfalltoleranz) zu erreichen. Es sind immer nur zwei der drei Punkte gleichzeitig erfüllbar. Da Cloud-Systeme die Partitionierung und damit auch die Partitionstoleranz, also der reibungslose Betrieb des Systems trotz willkürlicher Verluste von Nachrichten, voraussetzen, muss man sich je nach Anwendungsfall entweder für die Umsetzung der Verfügbarkeit oder der Konsistenz entscheiden. Fehlende Konsistenz muss hierbei durch eine komplexe Anwendungslogik kompensiert werden, eine fehlende Verfügbarkeit hingegen kann zu Einkommenseinbußen aufgrund von Ausfällen führen.

Einige Anbieter von Datenbanken in der Cloud werden unter Anbieter von Datenbanken in der Cloud beschrieben.

Quellen und weiterführende Literatur:

(1) Data Management in the Cloud: Promises, State-of-the-art and Open Questions, Donals Kossmann und Tim Kraska, Datenbank Spektrum 10-2010
(2) Etablierte Datenmodelle der NoSQL-Familie und ihre spezifischen Eigenschaften im Kontext von Cloud-Datenbanken, Mathias Frey, Bachelorarbeit an der FH Köln, 2010
(3) Relationale Cloud-DB, Sebastian Wienecke Seminararbeit an der Universität Leipzig, 2010
(4) Running Your Database in the Cloud, Eran Levin, Xeround
(5) Cloud Data Management - Kapitel 1: Einführung, Dr. Andreas Thor, Universität Leipzig
(6) Cloud Security and Privacy, Tim Mather u.a., O‘reilly, 2009
(7) Security 2.0 - Sicherheit im Cloud Zeitalter, Dr. Christoph Wegener und Dominik Birk, DFN-Cert Workshop 2011
(8) Cloud Computing & Databases, Mike Hogan, ScaleDB Inc, 2008

Kategorie: NoSQL, Cloud-DB, C