Anbieter von Datenbanken in der Cloud

Die Anbieter von Datenbank-Lösungen für Cloud-Computing Systeme bieten verschiedene Ansätze an, die jedoch in der Regel noch nicht alle Anforderungen (Konsistenz, Verfügbarkeit und Ausfalltoleranz) an eine Cloud Datenbank erfüllen, wie sie im CAP-Theorem definiert sind.

Microsoft Azure Platform

Microsoft strebt mit der Microsoft Azure Platform eine vollständig aufeinander abgestimmte Cloud-Umgebung an. Hierbei kommt ein an die Cloud angepasstes Betriebssystem Windows Azure zum Einsatz, welches die Verteilung des Speicherplatzes und der Rechenzeit an die virtuellen Maschinen übernimmt. Die virtuellen Server selbst werden unter Windows Server 2008 betrieben, wodurch in den virtuellen Servern fast jede beliebige Software betrieben werden kann. Eine Unterstützung verschiedenster Programmiersprachen, wie .NET, Java, Ruby oder PHP, zur Implementierung der Services ist ebenfalls gegeben. Um die Datenspeicherung in der Cloud kümmert sich eine für die Cloud optimierte Version des MSSQL-Servers, der so genannte SQL Azure Server. Es handelt sich hierbei um eine relationale Datenbank, die automatisch Replikationen der Daten auf anderen Instanzen ablegt. Dadurch wird die Ausfallsicherheit erhöht, jedoch kann die Anforderung der linearen Skalierbarkeit nicht erfüllt werden, da eine Instanz die Verwaltung übernimmt, um die Konsistenz der Daten zu gewährleisten, wodurch ein Performance-Engpass entstehen kann.

Amazon Web Services

Amazon als einer der Mitbegründer der Cloud-Bewegung hat mittlerweile eine sehr große Cloud Landschaft, namens Amazon Web Services, aufgebaut und bietet eine Vielzahl von Diensten in der Cloud an. Bezüglich der Datenbanken werden drei Modelle angeboten: Amazon Relational Database Service (RDS), Amazon SimpleDB und Amazon Elastic Cloud Compute (EC2).

Den Amazon Relational Database Service (RDS) kann man als ein so genanntes "Database as a Service" Angebot ansehen. Mit der Buchung des Services wird dem Kunden eine MYSQL in vollem Funktionsumfang zur Verfügung gestellt. Durch diese Tatsache können bestehende Anwendungen einfach an die neue Datenbankumgebung angebunden werden. Das System ist jedoch nur begrenzt skalierbar und die Ressourcen müssen vom Kunden bei Bedarf selbst eingestellt werden. Eine automatische Skalierung findet nicht statt. Die höchstmögliche Aufrüstungsstufe beinhaltet beispielsweise 68 GB Arbeitsspeicher, 26 ECUs (1 ECU entspricht der CPU-Leistung eines 2007 Xeon-Prozessors mit 1,0 bis 1,2 Ghz) und 1 TB Speicherkapazität. Der Administrationsaufwand für das Einspielen von Patches und das Erstellen von Sicherheitskopien der Datenbank entfällt hingegen, da dies vom System automatisch erledigt wird. Die Bezahlung erfolgt pro Stunde genutzter Rechenleistung und pro GB Speicherbedarf und Monat.

Amazon SimpleDB beinhaltet eine Key-Value basierte Datenbank. Diese Datenbank unterstützt kein vollwertiges SQL, sondern es wird ein einfaches Query-Interface bzw. eine API angeboten. Es sind beispielsweise, wie bei Key-Value-Systemen üblich, keine JOIN-Operationen möglich. Zusätzlich zu den Standard-Funktionalitäten einer Key-Value-Datenbank bietet Amazon die Möglichkeit zwischen den Optionen "consistent reads" und "eventually consistent reads" zu wechseln, je nachdem ob der Kunde mehr Wert auf Konsistenz oder auf Verfügbarkeit legt.

Amazon Elastic Cloud Compute (EC2) beschreibt im eigentlichen Sinne keine Datenbank. Es handelt sich hierbei um ein Angebot von Amazon, bei dem der Kunde einen „eigenen“ virtuellen Server zur Verfügung gestellt bekommt, den er selbst verwalten kann bzw. muss. Dem Kunden steht es hierbei frei, ob er den Server mit einem Linux oder einem Windows Betriebssystem betreiben möchte. Zusätzlich besteht die Möglichkeit eine Datenbank basierend auf Images verschiedener Datenbankhersteller zu installieren.

Google App Engine

Mit der App Engine bietet Google ein "Platform as a Service" Angebot an. Der Kunde soll damit bei der Entwicklung von datenintensiven Applikationen in den Programmiersprachen Java und Python. Zur Datenspeicherung greift die App Engine auf Google’s BigTable Datenbank zu, die ebenfalls ein Key-Value-System ist. Dem Kunden werden dabei, ähnlich wie bei der Amazon SimpleDB, zwei Möglichkeiten zur Verfügung gestellt, die sich in ihrer Verfügbarkeit und ihrer Konsistenz unterscheiden. Die "Master/Slave"-Einstellung bietet die Möglichkeit an, eine Instanz als Verwaltungsinstanz für alle Schreibvorgänge einzurichten. Somit wird ein hohes Maß an Konsistenz der Daten gewährleistet. Die Verwendung einer verwaltenden Instanz hat allerdings zur Folge, dass es zu Verfügbarkeitslücken kommen kann, wenn die Master-Instanz nicht verfügbar ist. Die zweite Einstellungsmöglichkeit wird von Google als "High Replication datastore" bezeichnet. Hierbei repliziert das System die Daten über mehrere Instanzen hinweg. Bei dieser Einstellung wird ein hoher Grad an Verfügbarkeit erreicht, jedoch sind die Daten nicht immer konsistent. Einträge in der Datenbank werden durch so genannte Entities repräsentiert, die mehrere Attribute haben können, die die eigentlichen Daten enthalten. Entities können in Gruppen zusammengefasst werden. Wenn man bei einer Abfrage nur eine Entity Group abfragt, so werden immer konsistente Ergebnisse zurück geliefert. Abfragen über mehrere Entity Groups hingegen sind nicht immer konsistent. Bei der „High Replication datastore“ Einstellung werden die Schreibvorgänge innerhalb einer Entity Group auf einen Schreibvorgang pro Sekunde limitiert, um die Performanz nicht einzuschränken. Beide Einstellungsmöglichkeiten beinhalten die Funktion des Systems, automatisch die benötigten Ressourcen zu skalieren. Als Abfragesprache kommt bei der Google App Engine eine vereinfachte Structured Query Language namens Google Query Language zum Einsatz. Sie ist ähnlich wie SQL aufgebaut, enthält jedoch weniger Befehle und ist somit einfacher (JOINs etc. entfallen). Um mittels der Programmiersprache auf die Datenbank zugreifen zu können, bietet Google eine API an, die den Umgang mit der App Engine stark vereinfacht. Neben der Möglichkeit die Datenbank über die API anzusprechen, können auch noch andere Services wie die Bildmanipulation (Größenänderungen, Zuschneiden…) oder Authentifizierungsmöglichkeiten verwendet werden. Als weitere Unterstützung bei der Entwicklung neuer Web-Services bietet Google dem Kunden beispielsweise für Java ein Eclipse-Plugin an, welches den Betrieb der Anwendung simulieren kann und die Anwendung der API erleichtert. Die meisten Konfigurationen am System werden automatisch vorgenommen, wodurch dem Kunden wenig Kontrolle und Flexibilität geboten werden.

Weiterführende Links zu Anbietern von Datenbanken in der Cloud:

Microsoft Azure Platform: http://www.microsoft.com/windowsazure/
Amazon Relational Database Service (RDS): http://aws.amazon.com/de/rds/

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: Neue DB-Entwicklungen,NoSQL, Cloud-DB, C