Datenbanken_in_der_Cloud Hochschule: Standort: Studiengang: Veranstaltung: Betreuer: Typ: Themengebiet: Autor(en): Studienzeitmodell: Semesterbezeichnung: Studiensemester: Bearbeitungsstatus: Prüfungstermin: Abgabetermin: Fallstudienarbeit Hochschule für Oekonomie & Management Essen Bachelor Wirtschaftsinformatik Fallstudie / Wissenschaftliches Arbeiten Prof._Dr._Uwe_Kern Fallstudienarbeit Cloud Computing Thomas Groenewald, Christian Küwen Abendstudium WS12 2 Bearbeitung abgeschlossen 6.2.2013 20.1.2013 Name der Autoren: Thomas Groenewald, Christian Küwen Titel der Arbeit: "Datenbanken in der Cloud" Hochschule und Studienort: Hochschule für Oekonomie & Management, Essen Inhaltsverzeichnis • 1 Abkürzungsverzeichnis • 2 Abbildungsverzeichnis • 3 Tabellenverzeichns • 4 Einleitung • 5 Grundlagen ♦ 5.1 Cloud Computing Allgemein ♦ 5.2 Arten von Cloud Services ◊ 5.2.1 Software-as-a-Service (SaaS) ◊ 5.2.2 Infrastructure-as-a-Service (IaaS) ◊ 5.2.3 Platform-as-a-Service (PaaS) ◊ 5.2.4 Everything-as-a-Service (XaaS) ♦ 5.3 Technischer Hintergrund ◊ 5.3.1 Virtualisierung ◊ 5.3.2 Serverhardware im Gegensatz zu Endbenutzergeräten ⋅ 5.3.2.1 Terminal-Lösungen ⋅ 5.3.2.2 Mobile Geräte ⋅ 5.3.2.3 Video-on-Demand und Video-Streaming ⋅ 5.3.2.4 3D-Spiele ♦ 5.4 Hosting Arten ◊ 5.4.1 Public Cloud ◊ 5.4.2 Private Cloud ◊ 5.4.3 Hybrid Cloud Inhaltsverzeichnis 1 Datenbanken_in_der_Cloud ♦ 5.5 Anforderungen • 6 Datenbanken Allgemein ♦ 6.1 Geschichte ♦ 6.2 Anbieter ♦ 6.3 Anwendungsgebiete ♦ 6.4 Kosten / Lizenzierung ♦ 6.5 Datensicherheit / Datenschutz • 7 Datenbanken in der Cloud ♦ 7.1 NoSQL ♦ 7.2 Anbieter ◊ 7.2.1 Amazon ⋅ 7.2.1.1 SimpleDB ⋅ 7.2.1.2 Amazon DynamoDB ⋅ 7.2.1.3 Amazon Relational Database Services (RDS) ◊ 7.2.2 Microsoft ⋅ 7.2.2.1 Sql Azure ◊ 7.2.3 Oracle ⋅ 7.2.3.1 Oracle Database Cloud Service ◊ 7.2.4 Google ⋅ 7.2.4.1 Google AppEngine DataStore ◊ 7.2.5 Weitere Anbieter ⋅ 7.2.5.1 MySQL Basierte Datenbankservices ◊ 7.2.6 CouchBase ⋅ 7.2.6.1 Couchbase Server ♦ 7.3 Kosten / Lizensierung ♦ 7.4 Anwendungsgebiete ◊ 7.4.1 Memcache Systeme ◊ 7.4.2 Mobile / Social Games ◊ 7.4.3 Social Media Plattformen / Beziehungsorientierte Daten ◊ 7.4.4 Data Hub ♦ 7.5 Datensicherheit / Datenschutz • 8 Vor- und Nachteile ♦ 8.1 Herkömmliche Datenbanken ♦ 8.2 Cloud basierte Datenbanken • 9 Schlussbetrachtung ♦ 9.1 Fazit ♦ 9.2 Ausblick • 10 Fußnoten • 11 Literaturen- und Quellenverzeichnis 1 Abkürzungsverzeichnis Abkürzung Bedeutung ACID Atomicity, Consistency, Isolation, Durability 1 Abkürzungsverzeichnis 2 Datenbanken_in_der_Cloud ADO.Net Amazon EC2 Amazon RDS APEX API BASE BI DB DBMS GB GPU IaaS MB MS NoSQL ODBC OLE DB OLTP PaaS REST SaaS SDK SQL T-SQL XaaS ActiveX Data Objects.NET Amazon Elastic Compute Cloud Amazon Relational Database Services Oracle Application Express Application Programming Interface Basically Available, Soft State, Eventually Consistent Business Intelligence Database/Datenbank Datenbankmanagementsystem Giga Byte Graphics Processing Unit Infrastructure as a Service Mega Byte Microsoft Not only SQL Open Database Connectivity Object Linking and Embedding DB Online Transaction Processing Platform as a Service REpresentational State Transfer Software as a Service Software Development Kit Structured Query Transact SQL Everything as a Service 2 Abbildungsverzeichnis Abb.-Nr. Abbildung 1 Preiskalkulation Database.com 2 Konzeptioneller Aufbau eines Data Hub Scenarios mit SQL Azure 3 Tabellenverzeichns Tabelle Nr. 1 2 3 4 5 6 7 Quelle Vergleich der Hostingarten von Clouds ACID-Paradigma Liste bekannter Datenbanksysteme Simple DB Beispielbefehle Amazon-RDS-API-Befehle Limitierungen von SQL Azure Abfragebeispiele Google AppEngine Datastore 2 Abbildungsverzeichnis 3 Datenbanken_in_der_Cloud 8 9 10 11 12 Microsoft Preistabelle Oracle Database Services Preistabelle Couchbase Preistabelle Vor- und Nachteile von herkömmlichen Datenbanken Vor- und Nachteile von Cloud basierten Datenbanken 4 Einleitung Datenbanken sind der Grundstein nahezu aller Applikationen eines Unternehmens und haben somit eine essentielle Bedeutung für dessen Erfolg. Sei es ein Web-Shop, ein Automobilhersteller oder ein Finanzdienstleister; alle Unternehmen nutzen Datenbanken, um die unternehmenskritischen und wertvollen Informationen zu speichern und zu verarbeiten. Daher wird gerade bei Datenbankensystemen auf Datensicherheit, Ausfallsicherheit und Performanz Wert gelegt. Neue Technologien wie z.B. das Cloud-Computing werfen die Frage auf, ob die herkömmlichen Verfahrensweisen, mit eigenen Datenbankservern im Unternehmensnetzwerk, noch immer der beste Weg sind, um seinen Datenhaushalt zu organisieren. In dieser Fallstudie werden diese beiden Vorgehensweisen näher beleuchtet und gegenübergestellt. Zielsetzung ist es, mit dieser Ausarbeitung ein Grundverständnis vom Cloud-Computing, gebräuchlichen Datenbankservices im Unternehmen und Cloud-basierten Datenbankservices zu geben und darüber hinaus einen Ausblick für die Zukunft zu geben. Zu Beginn dieser Ausarbeitung geht es um die Grundlagen des Cloud-Computing. Hier wird auf das Konzept sowie die verschiedenen Arten und Ausprägungen der Cloud eingegangen, um ein Basiswissen zu schaffen. Darauf folgend werden im nächsten Kapitel die herkömmlichen Datenbankservices in einem Unternehmen beleuchtet. Es werden unterschiedliche Produkte und dessen Kosten vorgestellt und detaillierte Informationen anhand der Microsoft Produktpalette gegeben. Weitergehend wird auf die Datenank Services in der Cloud eingegangen. Wieder werden verschiedene Architekturen und Anbieter vorgestellt und detaillierte Informationen über die Services von Microsoft gegeben. Abschließend stellen wir die Vor- und Nachteile der beiden Lösungen gegenüber und geben ein Fazit und einen Ausblick in die Zukunft der Datenbanken. 5 Grundlagen 5.1 Cloud Computing Allgemein Unter Cloud Computing versteht man die Bereitstellung von IT-Diensten und Ressourcen wie Anwendungen, Rechenleistung, Speicherkapazität oder Kombinationen daraus auf entfernten und oftmals räumlich verteilten EDV-Systemen, die über das Internet mit den vor Ort befindlichen Endgeräten (Arbeitsplatz-PCs, mobile Endgeräte etc.) verbunden sind. Der Begriff steht sinnbildlich für eine Wolke, die Zugang zu einer unzähligen Vielzahl angeschlossener Rechensystemen und die die von diesen bereitgestellten Services im Internet bietet. Das National Institute for Standards and Technology (NIST) beschreibt Cloud Computing wie folgt: ?Cloud Computing ist ein Modell für einfachen, bedarfsgerechten Netzwerkzugang zu einem gemeinsamen Pool von konfigurierbaren EDV-Ressourcen (z.B. Netzwerke, Server, Speicherplatz, Applikationen und Services), die schnell mit minimalem Verwaltungsaufwand und ohne Interaktion des Service Providers bereitgestellt und wieder freigegeben werden können.?[1] 3 Tabellenverzeichns 4 Datenbanken_in_der_Cloud 5.2 Arten von Cloud Services Wie bereits eingangs erwähnt, gibt es eine Vielzahl von Diensten, die in der Cloud zur Verfügung gestellt werden können. Je nach Angebot lassen sie sich in verschiedene Kategorien einordnen. 5.2.1 Software-as-a-Service (SaaS) Dieser Terminus bezeichnet die Nutzung eines Programms bzw. einer Anwendung aus der Cloud heraus. Diese Applikation muss nicht mehr, wie früher üblich, lokal auf dem Computer installiert sein, an dem sie verwendet werden soll. Stattdessen ist sie zentral auf einem in der Cloud befindlichen Serversystem installiert und bietet von dort aus den Zugriff durch viele Benutzer gleichzeitig. Der Endanwender sieht lediglich die Programmoberfläche (sei es über einen Webbrowser oder eine Art Remote-Terminal-Sitzung) und kann über diese völlig transparent auf die für ihn notwendigen Funktionalitäten zugreifen. Die eigentliche Datenverarbeitung geschieht allerdings für den Benutzer nicht einsehbar auf dem entfernten Serversystem.[2] 5.2.2 Infrastructure-as-a-Service (IaaS) Um einen Dienst wie SaaS in der Cloud anbieten zu können, braucht es natürlich nicht nur das eigentliche Programm, sondern auch die gesamte Datenverarbeitungsinfrastruktur als Basis für die Ausführung dieses Programms. Die Ausweitung auf eben diese Infrastruktur bezeichnet Infrastructure-as-a-Service. Dem Anwender wird nicht nur seine Programmoberfläche zur Verfügung gestellt, sondern auch zusätzlich z.B. Speicherplatz, Datensicherungsdienste (Backup) oder explizite Rechenleistung oder Arbeitsspeicher für seine Anwendungen. Ein häufiger Anwendungsfall für IaaS sind fremdgehostete Serversysteme, die vom Kunden weitestgehend eigenständig verwaltet werden (was die darauf betriebenen Anwendungen betrifft). Der infrastrukturelle Bereich wie Bereitstellung, Ausfallsicherheit und Datensicherung/-wiederherstellung obliegt allerdings dem Anbieter.[2] 5.2.3 Platform-as-a-Service (PaaS) Unter diesem Begriff versteht man die Bereitstellung kompletter Datenverarbeitungsplattformen mit mehreren unterschiedlichen Serversystemen und Anwendungen, die (z.B. für eine Softwareentwicklungsumgebung) aufeinander abgestimmt und voneinander abhängig sind.[2] 5.2.4 Everything-as-a-Service (XaaS) Diese Bezeichnung fasst alle (also auch die drei zuvor genannten) Cloud-Dienste unter einem Begriff zusammen. Da sich oftmals nicht genau differenzieren lässt, wo der eine Service aufhört und der nächste beginnt, wird dieser Dienst gerne verwendet, um mehrere unweigerlich zusammenhängende Cloud-Dienste anzubieten. So benötigt beispielsweise ein über das Internet erreichbare Email-Plattform nicht nur die Benutzeroberfläche, sondern auch den darunterliegenden Speicherplatz. Oder eine Cloud-Datenbankapplikation braucht neben der Anwendungsschnittstelle auch noch Rechenleistung und Speicherplatz zur Datenaufbereitung. Viele Anbieter nutzen für ihre Dienste diese Bezeichnung als Synonym für das Rundum-Sorglos-Paket. Es soll dem Kunden vermitteln, dass er sich wenig Sorgen um die technischen Hintergründe machen muss. So kümmert sich der Anbieter beispielsweise um die physischen Serversysteme im Hintergrund sowie die Datensicherheit und garantiert gleichzeitig kurzfristige Skalierbarkeit der angebotenen Ressourcen nach Kundenwunsch und somit On-Demand oder über Service Level Agreements geregelte Verfügbarkeiten der Systeme.[2] 5.2 Arten von Cloud Services 5 Datenbanken_in_der_Cloud 5.3 Technischer Hintergrund 5.3.1 Virtualisierung Eine Technik, die eine effektive Umsetzung des Cloud Computings erst ermöglicht, ist die Virtualisierung. Logische Serversysteme und Dienste werden getrennt von den physikalischen Ebene behandelt und schaffen so eine wichtige Grundlage für das Cloud Computing. Hardwareressourcen wie Rechenleistung und Speicherplatz stehen gemeinschaftlich mehreren virtuellen Servern oder Benutzern zur Verfügung (Ressource Pooling), die Ausführung derer Anwendungen erfolgt allerdings komplett voneinander isoliert, sodass keinerlei Beeinträchtigung durch parallel arbeitende Benutzer entstehen sollte. Logisch kann jeder den ihm zugeschriebenen Teil der Ressourcen nutzen und ggf. auch die eines Anderen, insofern sie gerade nicht benötigt werden und dennoch sind physisch nicht zwingend mehr Kapazitäten erforderlich.[3] 5.3.2 Serverhardware im Gegensatz zu Endbenutzergeräten Gerade dann, wenn der Endbenutzer nicht über leistungsfähige Hardware verfügt oder verfügen kann, werden Dienste aus der Cloud interessant. Die ?Leistung? kann mittels Cloud Computing an einen anderen Ort verlagert werden. Es ist lediglich ein Netzwerkzugang zur Cloud, also beispielsweise ein Internetzugang, erforderlich. Im Folgenden sollen einige Beispiele erläutert werden: 5.3.2.1 Terminal-Lösungen Sie bestehen in der Regel aus vielen Terminal-Geräten, die neben Ein- und Ausgabegeräten (Tastatur, Bildschirm, Maus) über relativ leistungsschwache Computerhardware verfügen und einem oder mehreren Servern, mit denen diese verbunden sind. Die Terminals dienen dazu, in einer ?virtuellen? Sitzung zu arbeiten, die sich nicht auf der Terminal-Hardware selbst abspielt, sondern auf den entfernten Serversystemen. Dies ermöglicht, die große Leistung der Server effektiv auf viele Benutzer aufzuteilen und diesen gemeinschaftlich zur Verfügung zu stellen, während am Arbeitsplatz selbst lediglich stromsparende (und damit geräusch- und abwärmearme) Hardware erforderlich ist, die nur die Datenein- und ausgabe zur Aufgabe hat, nicht aber deren Verarbeitung. 5.3.2.2 Mobile Geräte Smartphones und Tablets sind aus der heutigen Welt nicht mehr wegzudenken. Da diese Geräte allerdings auf kompakte Bauform ausgelegt sind und zudem nicht permanent an das Stromnetz angeschlossen sind, ist alles, was viel Speicherplatz oder Rechenleistung verbraucht, in diesen Geräten fehl am Platz. Die meisten Geräte verfügen über einen Internetzugang, der die Türe zum Cloud Computing öffnet. Ressourcenhungrige Dienste wie Foto- und Musiksammlungen oder Spracherkennung können so einfach in die Cloud ausgelagert und an stationäre Serversysteme übergeben werden. 5.3.2.3 Video-on-Demand und Video-Streaming Der Markt der Unterhaltungsbranche profitiert ebenfalls von den Möglichkeiten des Cloud Computings. Kunden möchten bequem vom Sofa aus Zugriff auf eine umfangreiche Medienbibliothek haben, ohne daheim einen großen Speicherplatz für die digitalen Multimediainhalte vorhalten zu wollen. Video-on-Demand-Dienste übernehmen die Speicherung und Bereitstellung dieser Inhalte in ihren Rechenzentren und ermöglichen dem Kunden, diese über eine Breitbandverbindung bei Bedarf zu sich nach Hause zu übertragen. Die Medien müssen 5.3 Technischer Hintergrund 6 Datenbanken_in_der_Cloud nicht bei jedem Kunden vor Ort gespeichert werden, sondern stehen zentral für alle Kunden zur Verfügung. 5.3.2.4 3D-Spiele Ein Spiele-PC oder eine Spielekonsole im privaten Umfeld ist ein gutes Beispiel für einen Dienst im weitesten Sinne, der sich durch Cloud Computing substituieren lässt. Es werden hohe Hardwareanforderungen für moderne 3D-Spiele vorausgesetzt, das Gerät wird allerdings nicht ständig genutzt und die Hardware liegt in der übrigen Zeit brach. Hier setzen neue Konzepte an, die die Grafikberechnung für 3D-Spiele in die Cloud auslagern, indem dezentrale Cluster aus leistungsstarken 3D-Beschleunigern geschaffen werden, die die Berechnung der Spielegrafik übernehmen und das letztendliche Bild an den Bildschirm des Anwenders in Form eines komprimierten Videostreams übertragen. Das Leistungspotential dieser GPU-Cluster kann so ideal auf die Spiel-Zyklen der weltweit verstreuten Anwender aufgeteilt werden und hat außerdem noch positive Nebeneffekte wie effektivere Kühlung der Systeme oder Zweckentfremdung der freien Kapazitäten der Grafikprozessoren für wissenschaftliche Berechnungen. Auch für TV-Geräte, die nicht für die Berechnung von 3D-Spielegrafik ausgelegt sind, ist dieses Konzept anwendbar.[4][5] 5.4 Hosting Arten Cloud Computing kann nach verschiedenen Kriterien, die die gemeinsame Nutzung der Cloud Ressourcen betreffen, weiter unterteilt werden. Man unterscheidet hier zwischen Public und Private Cloud sowie der Hybrid Cloud, einer Mischform aus den beiden erstgenannten. 5.4.1 Public Cloud Die wohl am häufigsten angewendete Variante des Cloud Computings ist die Public Cloud.[6] In diesem Modell greifen mehrere Parteien bzw. Kunden gleichzeitig auf dieselben physikalischen Ressourcen zurück (Ressourcen Pooling)[7], da sie die gleichen Dienste nutzen. Dabei teilen sie sich die Rechenleistung, den Speicherplatz etc. bzw. bekommen ihren Anteil entsprechend zugewiesen, den sie vom Anbieter gemietet haben. Gerade im Unternehmensumfeld spielt der Sicherheitsaspekt eine bedeutende Rolle, wenn Unternehmensdaten auf öffentlich zugänglichen Datenverarbeitungssysteme transferiert werden. Aus diesem Grund unterteilt man die Public Cloud in zwei weitere Unterkategorien: • Exclusive Cloud: Dieses Modell wird oft dazu verwendet, um auf den Kunden zugeschnittene Dienste in dessen Auftrag zu betreiben. In dieser Umgebung befindet man sich abgeschottet von Anderen und nur man selbst sowie der Anbieter des Services haben Zugang zu den Systemen. Fremde bleiben außen vor, da dieser Teil der Cloud - wie der Name schon sagt - exklusiv für einen Kunden zur Verfügung steht. In der Regel wird im Rahmen dieses Angebots ein Vertrag geschlossen, der die Sicherheitsauflagen regelt und dadurch erhöhten Schutz vor Datenlecks bietet. • Open Cloud: Hier werden im Gegensatz meist für viele Kunden nutzbare und weniger auf ein Unternehmen spezialisierte Dienste angeboten, die vom Anbieter initiiert entwickelt und bereitgestellt werden. Die Serversysteme werden gemeinschaftlich genutzt, wodurch eine geringere Sicherheit gegeben ist als bei der Exclusive Cloud. Namhafte Anbieter von Public Cloud Services sind Google, Amazon und Microsoft.[8] 5.3.2.3 Video-on-Demand und Video-Streaming 7 Datenbanken_in_der_Cloud 5.4.2 Private Cloud Diese Form der Cloud befindet sich in der Regel innerhalb des Unternehmens und bietet dadurch beste Sicherheit und Privatsphäre.[8] Virtualisierte Serverlösungen, Terminalserversysteme oder betriebseigene Anwendungen, die sich über ein Webinterface nutzen lassen, zählen dazu. Ein besonderes Merkmal dieser Dienste ist allerdings, dass es auch eine Verbindung nach Außen erlaubt, die beispielsweise bei Unternehmensportalen von Kunden oder Lieferanten genutzt werden kann. Hier ist der Kreis der zugriffsberechtigten Nutzer wohlgemerkt verhältnismäßig klein und dem Unternehmen genauestens bekannt, was wiederum der Sicherheit zugute kommt. Diese Variante steht als Alternative zum Auslagern der Dienste in eine Public Cloud, die allerdings den Nachteil mit sich bringt, dass das Unternehmen selbst für die Anschaffung und den Betrieb der zugrundeliegenden Infrastruktur verantwortlich ist und erhöhten Aufwand für deren Wartung betreiben muss. 5.4.3 Hybrid Cloud Um die Vorteile sowohl der Private als auch der Public Cloud für sich zu nutzen, setzen immer mehr Unternehmen auf diese Mischform der Cloud. So können beispielsweise unternehmensinterne Daten und Applikationen unter dem eigenen Dach betrieben werden, aber dennoch über zusätzliche Cloud Services Schnittstellen nach außen geschaffen werden, um mit geringen Sicherheitseinbußen die Zusammenarbeit mit externen Instanzen zu ermöglichen. Das bringt den Vorteil, dass der unternehmensinterne Teil der IT-Infrastruktur uneingeschränkt und wie gewohnt weiterbetrieben werden kann, aber dennoch die Schnittstellen nach außen existieren.[8] Oder die unternehmenseigenen Systeme werden zur Ressourcenerweiterung bei Bedarf durch externe Systeme in der Public Cloud ergänzt und die Last transparent auf beide Teile verteilt. Auch rechtliche Gründe können ein Unternehmen dazu veranlassen, seine Daten teils im eigenen Haus und teils bei externen Dienstleistern zu hosten. Die räumliche Trennung der Standorte ist dabei ausschlaggebend. Dienste wollen gerne ausgelagert werden, aber der Datenbestand, auf den diese Dienste zurückgreifen, soll oder darf nicht den Standort des Unternehmens verlassen.[9] Tabelle 1: Vergleich der Hosting Arten von Clouds[10] Private Cloud Art der Ressourcenteilung Keine Ressourcenteilung Hybrid Cloud Ressourcenteilung möglich Public Cloud Ressourcenteilung Art Hoster Kosten Einmalig (Software und Hardware) und monatlich (Personal, Bandbreite) Einmalig wie bei der Private Cloud und Unternehmensintern und durch monatlich für die Cloud Computing Anbieter Cloud-Computing-Umgebung Unternehmensintern Cloud Computing Anbieter Monatlich 5.5 Anforderungen Grundvoraussetzung für Cloud Computing ist eine Anbindung aller beteiligten Komponenten an ein zentrales Netzwerk, z.B. das Internet. Die Anbindung muss entsprechend breitbandig ausgelegt sein, damit das Arbeiten mit entfernten Ressourcen nicht übermäßig ausgebremst wird. Niedrige Latenzen sind zudem erstrebenswert. Die gemeinschaftlich genutzten Ressourcen müssen großzügig dimensioniert sein, um auch Belastungsspitzen mehrerer gleichzeitig darauf zugreifender Anwender abfangen zu können. In solchen Fällen ist auch ein gutes Load Balancing erforderlich, um die Last gerecht unter den Anwendern zu verteilen und niemanden zu benachteiligen. 5.4.2 Private Cloud 8 Datenbanken_in_der_Cloud 6 Datenbanken Allgemein 6.1 Geschichte ?Am Anfang der historischen Entwicklung standen die zentralen Datenbanksysteme, bei denen gerade der Gedanke einer zentralisierten, besonders unterstützten und damit auch besonders effizient realisierten gemeinsamen Datenverwaltung für eine große Zahl von direkt an diesen zentralen (Datenbank-) Systemen angeschlossen Benutzern im Vordergrund des Interesses stand ? und in vielen Fällen auch bis heute steht.?[11] Anstelle von Datenbeständen, die verteilt an vielen verschiedenen Orten oder lokal auf den Arbeitsplatzsystemen von Mitarbeitern gespeichert waren, sollten Datenbanksysteme den gesammelten Datenbenstand zentral in einem großen System vorhalten und für eine gemeinsame Nutzung vielen Anwendern zur Verfügung stellen. Unter den verschiedenen Datenmodellen, die im Laufe der Zeit entwickelt wurden, ist im Gegensatz zu dem hierarchischen, dem objektorientierten oder dem Netzwerk-Datenmodell das relationale Datenmodell das weitestverbreitete. Dieses Modell zeichnet sich durch folgende Eigenschaften aus: • Schemagebundenheit • Normalisierte Datenhaltung • Referenzielle Integrität Transaktionen, die in der Datenbank durchgeführt werden, sollten die im folgenden ACID-Paradigma beschriebenen Eigenschaften aufweisen: Tabelle 2: ACID-Paradigma[12] Bezeichnung A Atomicity (Abgeschlossenheit) C Consistency (Konsistenz) I Isolation (Abgrenzung) D Durability (Dauerhaftigkeit) Bedeutung Sequenzen von Änderungen in der Datenbank müssen entweder ganz oder garnicht abgeschlossen werden. Wenn es während der Ausführung mehrerer aufeinanderfolgender Befehle zu einem Abbruch kommt, müssen sämtliche zuvor vorgenommenen Änderungen rückgängig gemacht werden (Rollback), ansonsten werden alle geänderten Werte endgültig in die Datenbank übertragen (Commit). Wenn die Datenbank vor einer Transaktion konsistent war, muss sie es auch nach dieser wieder sein. Die referentielle Integrität muss gewährleistet sein. Bei der gleichzeitigen Ausführung mehrerer Operationen (z.B. durch mehrere Benutzer) ist sicherzustellen, dass diese sich gegenseitig nicht beeinflussen. Jede Transaktion muss für sich exklusiv bearbeitet werden, Auswirkungen nebenherlaufender Transaktionen auf die Datenbank dürfen für diese nicht sichtbar sein. Es muss sichergestellt sein, dass Änderungen, die durch eine erfolgreich abgeschlossene Transaktion in der Datenbank vorgenommen werden, unter allen Umständen dauerhaft in dieser gespeichert sind. Diese schließen auch Hard- oder Softwareausfälle ein. 6.2 Anbieter Da das relationale Modell ein etabliertes und weit verbreitetes System ist, gibt es natürlich eine große Auswahl von Anbietern. Sowohl Open Source Projekte als auch die Größen der Softwarebranche haben ein eigenes 6 Datenbanken Allgemein 9 Datenbanken_in_der_Cloud Datenbankserverprodukt. Da sich diese Systeme in ihrem Funktionsumfang und Aufbau sehr ähneln, soll hier nur die Nennung der bekanntesten kommerziellen und Open-Source Datenbansysteme erfolgen: Tabelle 3: Liste bekannter Datenbanksysteme Kommerzielle Systeme Microsoft Sql Server 2012 Oracle Database 11g IBM DB2 Open-Source Systeme MySQL MariaDB PostgreSQL 6.3 Anwendungsgebiete In der heutigen Gesellschaft ist der Einsatz von Datenbankmanagementsystemen (DBMS) nicht mehr wegzudenken. Unternehmen, öffentliche Einrichtungen, Verwaltungen und viele anderen speichern und verwalten ihren Datenbestand zentral in Datenbanken. Zu einem DBMS gehören diese Datenbanken, die ihren Datenbestand in sog. Datenbasen speichern, und Verwaltungsprogramme, die es erlauben, mit diesen Daten zu arbeiten. Ohne ein DBMS wäre die Verwaltung der Daten in einem Unternehmen heutzutage sehr aufwändig bis unvorstellbar. Nur mit dem Einsatz von Aktenordnern, Karteikästen und auf einzelnen Computern gespeicherten Dateien würde eine zentrale Datenhaltung kaum umsetzbar sein.[13] 6.4 Kosten / Lizenzierung Jeder Anbieter bietet unterschiedliche Lizenzierungsmodelle für seine Produkte an. Die Modelle von Microsoft und Oracle sollen im Folgenden als Beispiel herhalten. Microsoft SQL Server 2012 Für den MS SQL Server 2012 wird für die Business Intelligence Edition ein Server- und Client-Access-Modell angeboten. Ersteres lizenziert jeden SQL-Server auf Hardware- bzw. Betriebssystembasis. Auf diesem einzelnen Server dürfen beliebig viele Instanzen des SQL Servers betrieben werden. Zweiteres berechtigt eine feste Anzahl von Benutzern / Anwendungen, auf beliebig viele SQL Server zuzugreifen. So kann jeder Kunde das für sich passende Modell wählen. Die Enterprise-Edition des Produktes hingegen wird per Prozessorkern (Core) lizenziert. Ab mindestens vier Cores bezahlt der Kunde für die entsprechende Anzahl der Prozessorkerne des physikalischen oder virtuellen SQL Servers. Die Benutzer, die auf die Instanz zugreifen, müssen nicht weiter lizenziert werden. Es sind beliebig viele Zugriffe von Clients möglich. Die Standard-Edition des SQL Server 2012 kann in beiden Lizenzierungsmodellen betrieben werden.[14] Oracle Bei Oracle sieht das einfache Lizenzierungsmodell für eine Datenbankinstanz ähnlich aus. Auch hier gibt es verschiedene Produkteditionen, die pro Benutzer und / oder pro CPU-Kern lizenziert werden können. Die User-Lizenzen sind ausschließlich auf einen Benutzer zugelassen, die Core-Lizenzen hingegen orientieren sich ähnlich wie bei Microsoft an der Plattform, auf der der Datenbankserver betrieben wird.[15] 6.2 Anbieter 10 Datenbanken_in_der_Cloud 6.5 Datensicherheit / Datenschutz Die Datensicherheit in modernen Datenbankmanagementsystemen kann ein relativ hohes Level erreichen. Auf dem Server können detaillierte Berechtigungskonzepte für Anwender, Servicebenutzer, Administratoren oder ganzen Gruppen von Benutzern hinterlegt werden und die Einhaltung dieser Berechtigungen wird serverseitig bei jedem Zugriff auf das DBMS kontrolliert. So können unberechtigte Zugriffe wirksam unterbunden werden. Mit regelmäßigen Sicherungen (Backups) der Datenbasen und deren Metadaten kann man zudem Datenverlust im Falle von Hardware- oder Softwareversagen vorbeugen. Zu diesem Zweck ist es essentiell, in regelmäßigen möglichst kurzen - Zeitabständen Datensicherungen des DBMS durchzuführen. Nur so kann im Ernstfall eine schnelle Wiederherstellung des Datenbankdienstes ermöglicht und die Ausfallzeit des produktiven Betriebs gering gehalten werden. 7 Datenbanken in der Cloud 7.1 NoSQL In der Cloud werden unterschiedliche Arten von Datenbankservices angeboten. Es werden typische relationale Datenbanken als Service angeboten, aber auch nicht relationale bzw. NoSQL Datenbanken. Hierbei steht das "NoSQL" nicht für "kein SQL" sondern für "Not only SQL", also nicht nur SQL.[16] Dieser Trend entwickelte sich, um die Schwächen der relationalen Datenbanken in Bezug auf Skalierbarkeit auszugleichen. Während man beim Standard SQL "up-scaling" betreibt, also dem Server mehr Hardware-Ressourcen zur Verfügung stellt, verfolgt man in der Cloud bzw. bei NoSQL das "scale-out" Verfahren. Hier werden anstatt einem Server mehr Ressourcen zuzuteilen einfach weitere Server (günstige Standardserver, virtuelle Maschinen oder Cloud-Instanzen) hinzugefügt. Die Koordinierung der Schreib- und Lesevorgänge übernimmt ein Load-Balancer. Somit ist bei Kapazitätsengpässen schnelles Handeln möglich und sobald die Ressourcen nicht mehr benötigt werden, entfernt man den Server wieder aus dem Verbund. Diese Vorgänge können sogar weitestgehend automatisiert werden, sodass kein Eingriff von administrativer Seite notwendig ist. Ein weiterer Vorteil von NoSQL-Datenbanken ist die Schemalosigkeit. Dies bedeutet, die Daten haben keine vorgegebenen Spalten oder Datentypen, was es leicht macht die Datenbank an die Anforderungen der Applikation anzupassen. In Bezug auf die verteilten Daten beim "scale-out" ist dies ein essentieller Vorteil, da bei SQL-Datenbanken die mit partitionierten Tabellen (z.B. nach Jahren gesplittet 2011 auf Server1, 2012 auf Server2 usw.) arbeiten, sich ein Schemaupdate als sehr schwierig erweist.[17] NoSQL wird in unterschiedliche Hauptkategorien aufgeteilt, Dokumentenorientierte Datenbanken, , Key-Value-Datenbanken, spaltenorientierte Datenbanken und Graphendatenbanken. Die Kategorien unterscheiden sich nach ihrem Anwendungsgebiet. Graphendatenbanken zum Beispiel haben sich darauf spezialisiert, Beziehungen zwischen Objekten aufzuzeigen und zu definieren. Bei relationalen Datenbanken bräuchte die Auflösung solcher Beziehungen oftmals mehrere Abfragen.[18] "Neo4J ist ein Beispiel für diese Art von Datenbank. Statt herkömmlicher Datensätze erstellt man hier Knoten, die durch die Beziehungen, die man zwischen ihnen definiert, miteinander verknüpft werden. Ein Beispiel in Java-Code: Node firstNode = graphDb.createNode(); Node secondNode = graphDb.createNode(); Relationship relationship = firstNode.createRelationshipTo(secondNode,MyRelationshipTypes.OWNS); Hier werden zwei Knoten erstellt. Zwischen diesen beiden Elementen existiert eine Beziehung OWNS ? "besitzt" ?, die an anderer Stelle als einfaches Enum definiert ist. Informationen zu den Knoten und ihre Beziehungen 6.5 Datensicherheit / Datenschutz 11 Datenbanken_in_der_Cloud werden als Eigenschaften gespeichert: firstNode.setProperty("name","Wallace"); secondNode.setProperty("name","Grommit"); relationship.setProperty("zahlt","Hundesteuer"); Der erste Knoten (Wallace) besitzt den zweiten Knoten (Grommit) ? er zahlt Hundesteuer. Ausgehend von diesem einfachen Modell lassen sich leicht durchlaufbare Graphen von Beziehungen erstellen."[19] Bei Dokumentenorientierten Datenbanken ist der Begriff "Dokument" irreführend, da es hier nicht um Dokumente an sich geht, sondern um Datenseiten bzw. Einträge, die alle notwendigen Informationen über sich selbst enthalten. Dies bedeutet, die Datenseite ist selbsterklärend und in sich vollständig.[20] Beispiel: { "ID"="200" "NAME"="SCHMIDT" "VORNAME="HORST" "ADRESSE"="Musterstr. 26, 12345 Musterhausen" "HOBBYS"=["SPORT","ANGELN","BACKEN"] } { "ID"="250" "NAME"="MUELLER" "VORNAME="LARS" "ADRESSE"="Rentnerweg. 143, 67891 Rentnersbusch" "FAMILIENSTAND"="LEDIG" } Wie man sieht, müssen die Datenseiten nicht die gleichen Felder haben. Suchen nach einzelnen Attributen liefern nur die Datenseiten mit dem jeweiligen Attribut zurück (ID=200, oder Familienstand=ledig). Das erklärt dann auch, warum diese Art von Datenbank skalierbar ist, da es egal ist, auf welchem Server sie sich befindet.[18] Key-Value-Stores sind die vereinfachte Form von Dokumentenorientierten Datenbanken. Hier gibt es einen Key/Schlüssel und den dazugehörigen Value/Wert, auf den der Schlüssel verweist. Dieser Wert kann von einem einfachen Datentypen wie eine Zeichenkette über Listen und Sets bis hin zu komplexen Datentypen reichen. Key-Value-Stores werden in die In-Memory- und On-Disk-Versionen unterschieden. Bei der In-Memory-Version wird der Store - wie der Name sagt - im RAM gespeichert und ermöglicht somit eine sehr hohe Performanz. Diese Version wird oft als verteilte Cache-Speichersysteme genutzt. Die On-Disk-Version speichert die Daten auf der Festplatte und wird als herkömmlicher Datenspeicher verwendet.[21] Bei Spaltenorientierten Datenbanken bzw. Wide Column Stores besteht die Idee darin, jedes Attribut in einer eigenen Tabelle nebeneinander zu speichern (Spaltenbasiert) und nicht wie in relationalen Datenbanken in einer Tabelle untereinander (Zeilenbasiert). Dieses Art der Speicherung wird vor allem in dimensionsbezogenen Anwendungen wie OLAP-Würfel oder Data-Warehouse-Umgebungen verwendet. Heutige Systeme verwenden eine Technik die man partiell Spaltenorientiert nennt und welche auf Googles BigTable Architektur basiert. Google beschreibt diese Architektur "sparse, distributed multidimensional sorted map".[22] "Dies sind in der Regel mehrdimensionale Tabellen im folgenden Format: n*[Domain / Keyspace] x [Item / Column Family] x [Key x] n*[Key+Value] Hier gibt es also meistens mehrere oder viele Dimensionen aus Domains oder Keyspaces, deren kleinstes Feld dann ein Item oder eine Column Family bildet. In diesem Item gibt es dann beliebig viele Key/Value-Maps, die wiederum eventuell über einen übergeordneten Schlüssel angesprochen werden können. Dies bedeutet, dass die unterste Ebene eine Menge von Key/Value-Maps ist und so eine Einheit bildet. Auf höherer Ebene findet aber eine Gruppierung ähnlich der spaltenorientierten Datenbanken statt, wo ähnliche Eigenschaften (hier 7.1 NoSQL 12 Datenbanken_in_der_Cloud zusammengehörige Items/Column Families) zusammengefasst werden."[22] Das für relationale Datenbanken unverzichtbare ACID Konsistenzmodell wird bei NoSQL-Datenbanken aufgeweicht. Das hier angewendete BASE-Modell (Basically Available, Soft State, Eventually Consistent) legt die Prioritäten auf Verfügbarkeit anstelle der Datenkonsistenz. Aus diesem Grund werden solche Systeme hauptsächlich für unkritische und meistens große Datenmengen wie z.B. in Social Networks verwendet.[23] Entstanden ist der Hype um NoSQL in verteilten Systemen durch das CAP-Theorem, welches Datenbanken drei Eigenschaften zuschreibt:[24] • Consistency (Konsistenz) ? Alle Mitglieder im Cluster besitzen den gleichen Datenstand • Availability (Verfügbarkeit) ? Auch wenn ein Clustermitglied ausfällt, ist die Datenbank weiter online. • Partition Tolerance (Partitionstoleranz) ? Trotz Datenverlusten kann das System weiterarbeiten[23] Aus diesem Grund entschieden sich große verteilte Systeme wie Facebook, Google und Amazon auf die Partitionstoleranz und Hochverfügbarkeit.[24] 7.2 Anbieter 7.2.1 Amazon 7.2.1.1 SimpleDB Amazon bietet mit Simple DB eine nicht-relationale Datenbank in der Cloud. Es handelt sich hierbei also um eine "NoSQL"-Datenbank. Diese kann von den Entwicklern einfach über Web-Services angesprochen werden und Amazon kümmert sich dann um die Verteilung auf die verschiedenen Rechenzentren, um dadurch die Verfügbarkeit zu gewährleisten. Somit ist der Service auf hohe Verfügbarkeit, Skalierbarkeit und leichte Administration ausgelegt. Bei der technischen Umsetzung nutzt Amazon einige Begriffe, die bei anderen Anbietern nicht vorkommen. So wird zum Beispiel eine Tabelle bei Simple DB Domäne genannt, eine Zeile bezeichnet man als Element, eine Spalte ist ein Attribut und die Zell-Werte der Tabelle, also die kleinste Einheit, nennt man Wert[25] Neben der hohen Skalierbarkeit hat Simple DB auch den Vorteil, dass es einen schemalosen Ansatz verfolgt, was die Flexibilität und Anpassungsfähigkeit der Datenbank an die häufig wechselnden Anforderungen der Applikation vereinfacht. Es nutzt des Weiteren nur einen kleinen API-Befehlssatz, der über eine HTTPS Verbindung gesendet wird.[25] Beispiele für diese Befehle sind: Tabelle 4: Simple DB Beispielbefehle[25] Befehl CreateDomain / DeleteDomain PutAttributes GetAttributes 7.2 Anbieter Beschreibung Erstellt bzw. löscht eine Domäne (Tabelle) innerhalb einer Datenbank. Schreibt die Werte für die im Aufruf angegebenen Attribute (Spalten) eines Elements (Zeile). Die Elemente werden durch die Notation "Attribute.N" wobei N für eine fortlaufende, bei 1 beginnende, Nummer steht. Liefert die Attribute eines bestimmten Elements zurück. Einschränkungen sind über die "AttributeName.N" Notation möglich. 13 Datenbanken_in_der_Cloud Fragt mehrere Elemente einer Domäne mit einer an der SQL-Abfragesprache orientierten Notation ab. Select Select [output_list] From [domain_name] [where [expression]] [sort][limit] Die [output_list] kann ein ?*? für alle Attribute oder eine Liste von Attributen geschrieben in der ?Attribute.N? Notation. [domain_name] ist der Tabellenname, die [expression] gibt einen Vergleich bzw. eine Einschränkung an, [sort] sortiert auf oder absteigend und [limit] begrenzt die zurückgegebenen Werte (Standart 100 Elemente). 7.2.1.2 Amazon DynamoDB Amazon DynamoDB ist aufgebaut wie SimpleDB. "Bei beiden Services handelt es sich um nicht-relationale Datenbanken, bei denen die Verwaltung der Datenbank entfällt. Amazon DynamoDB legt den Schwerpunkt auf nahtlose Skalierbarkeit und auf schnelle, planbare Leistung. Amazon DynamoDB verwaltet die Verbreitung Ihrer Daten und Arbeitslast automatisch über eine ausreichende Zahl von Servern, um Ihrem Skalierungsbedarf gerecht zu werden. Die Menge der Daten, die Sie in einer Amazon DynamoDB-Tabelle speichern können, ist nicht beschränkt und Sie können die Anforderungskapazität auf das gewünschte Maß erweitern. Andererseits eignet sich Amazon SimpleDB hervorragend für kleinere Datenaufkommen, die Abfrageflexibilität voraussetzen."[26] 7.2.1.3 Amazon Relational Database Services (RDS) Bei Amazon RDS handelt es sich um eine MySQL-basierten Cloud-Datenbankservice, der einen gleichwertigen Funktionsumfang eines On-premise-Mysql-Datenbankserver bietet. Der Vorteil bei Amazon RDS ist jedoch, dass der Administrations- und Verwaltungsaufwand vollkommen entfällt. Weiter besteht der Vorteil in der wesentlich höheren Verfügbarkeit durch Hosting in den Amazon Rechenzentren und höherer Datensicherheit, da Amazon sich um Backups und Sicherheitskopien kümmert. Somit ist Amazon RDS eine von Amazon gehostete MySQL Datenbank, die über eine Webkonsole konfiguriert wird.[27] Man kann für seine Datenbanken unter anderem die Größe, den Port, den Namen, Availability Zonen (wo ist die DB verfügbar, schneller Schwenk) oder die Vorhaltezeit von Backups einstellen. Um die Datenbanken dynamisch Skalieren zu können, gibt es einige API-Befehle, um Datenbanken oder Datenbank-Snapshots zu erstellen oder zu löschen. [27]Befehle: Befehl CreateDBInstance ModifyDBInstance DeleteDBInstance CreateDBSnapshot Beschreibung Erstellt eine neue MySQL-Datenbankinstanz auf Amazon RDS. Parameter für die Datenbank sind die Instanzklasse, Speicherkapazität und die Backup-Aufbewahrungszeit. Somit ist es bereits möglich, eine zusätzliche Datenbank zu verwenden. Hier kann man Einstellungen einer vorhandenen Datenbankinstanz verändern, z. B. die Instanzgröße oder die Sicherheitseinstellungen. Löscht eine laufende Datenbankinstanz. Erstellt einen Snapshot der Datenbank, der eine Wiederherstellung im Fehlerfall erlaubt. 7.2.2 Microsoft 7.2.2.1 Sql Azure Sql Azure ist eine auf Basis des SQL Server 2008 basierende Datenbank in der Cloud. Microsoft bietet diesen Dienst neben seinen PaaS-Service ?Windows Azure Compute? an. Es handelt sich hierbei prinzipiell um einen 7.2.1.1 SimpleDB 14 Datenbanken_in_der_Cloud Microsoft SQL-Server, der von Microsoft selbst gehostet wird. Somit entfällt, ähnlich wie bei Amazon RDS, die Administration und Verwaltung und man spart sich die eigene Serverlandschaft. Da SQL Azure in denselben Rechenzentren wie Windows Azure Compute gehostet wird, ergeben sich hieraus klare Performanzvorteile, wenn man die beiden Dienste kombiniert. Sql Azure ist wie die meisten Cloud-Dienste auf hohe Verfügbarkeit der Daten ausgerichtet, welche mit einer Replikation der Daten in bis zu vier Microsoft Rechenzentren gewährleistet wird. Da SQL Azure genau wie eine On-Premise-Datenbank funktioniert, ist für die Verbindung nur eine kleine Anpassung am ConnectionString notwendig. Die Microsoft-üblichen Datenbanktreiber ADO.Net und ODBC werden unterstützt, dies gilt nicht für OLE DB. Für die Sicherheit gelten die gleichen Einstellungsmöglichkeiten wie bei On-Premise Datenbankservern. Es werden nahezu alle Funktionen des SQL-Server 2008 angeboten, wie z.B. viele der T-SQL Elemente.[29] Einschränkungen gibt es jedoch bei: • Global temporary tables • Spatial data and indexes • SQL Server configuration options • SQL Server Service Broker • System tables • Trace Flags Diese Einschränkungen sind jedoch nachvollziehbar, da es sich hierbei um Serverweite Elemente handelt, dessen Einstellungen durch Microsoft vorgenommen werden. • Common Language Runtime (CLR) • Database file placement • Database mirroring • Distributed queries • Distributed transactions • Filegroup management 7.2.3 Oracle 7.2.3.1 Oracle Database Cloud Service Auch Oracle bietet wie Microsoft seine Datenbankservices in der Cloud an. Ähnlich wie bei Microsoft werden hier die hauseigenen Datenbankservices in der Cloud angeboten. Die Services basieren auf Oracles Database 11g Release 2 Enterprise Edition, welche auf einer Exadata Appliance von Oracle gehostet wird. Wie auch bei Amazon und Microsoft kümmert sich Oracle um die Distribution der Daten in die verschiedenen Rechenzentren und übernimmt außerdem das Backup der Daten. Da die Cloud Database Services auf denselben Komponenten wie die On-Premise Services bestehen, stellt Oracle einen Mechanismus zur Verfügung, um die Daten z.B. mit einer Private Cloud zu synchronisieren. Die Database Cloud Services können über die RESTful-API oder über Oracle Application Express (APEX) in Verbindung mit herkömmlichen SQL-Befehlen abgefragt werden. [31] 7.2.4 Google 7.2.4.1 Google AppEngine DataStore Googles AppEngine DataStore beruht auf Googles BigTable System. Bei BigTable wird ähnlich wie bei anderen NoSQL Anbietern nicht auf ein relationales Modell gesetzt, sondern auf ein schemaloses Prinzip. Dies bedeutet, dass während bei normalen relationalen Modellen die Zeilen einer Tabelle immer gleich sind, können bei BigTable die unterschiedlichen Zeilen völlig andere Spalten beinhalten.[32] ?[..]In diesem Sinne funktioniert Bigtable als großes, sortiertes, mehrdimensionales Array, bei dem jede Zeile eine Sammlung an Spalten aufweist, bei denen es sich nicht notwendigerweise um dieselbe Menge an Spalten handelt wie bei anderen Zeilen in derselben Tabelle.?.[33] Im Google AppEngine DataStore ist es jedoch nicht möglich eigene Tabellen anzulegen. 7.2.2.1 Sql Azure 15 Datenbanken_in_der_Cloud Die Daten werden automatisch in die vorgegebene Tabellenstruktur von Google BigTable eingebunden. Man kann aber Entitätsgruppen definieren, um gleiche Datensätze zu gruppieren. Hauptaugenmerk des Google Datastores liegt auf Lese- und Abfragegeschwindigkeit, wobei die AppEngine 2 Modi zur Speicherung der Daten bietet die sich hinsichtlich der Konsistenz und Verfügbarkeit unterscheiden: "[..] • Der Master/Slave-Datenspeicher verwendet ein Master/Slave-Replikationssystem, das die Daten während des Schreibens in ein physisches Datenzentrum asynchron repliziert. Da zu jedem Zeitpunkt immer nur ein Datenzentrum als Master für Schreibvorgänge fungiert, bietet diese Option eine hohe Konsistenz für alle Lesevorgänge und Abfragen. Dies bedingt jedoch, dass die Verfügbarkeit aufgrund von Problemen des Datenzentrums oder planmäßiger Ausfallzeiten vorübergehend nicht gegeben sein kann. Diese Option bietet auch die geringsten Speicher- und CPU-Kosten für die Datenspeicherung. • Im High Replication-Datenspeicher werden die Daten unter Verwendung eines auf dem Paxos-Algorithmus basierenden Systems über Datenzentren hinweg repliziert. Der High Replication-Datenspeicher bietet eine sehr hohe Verfügbarkeit für Lese- und Schreibvorgänge, allerdings mit dem Nachteil höherer Latenzzeiten bei Schreibvorgängen. Die meisten Abfragen erreichen Eventual Consistency. Die Speicherquote und die CPU-Kosten sind etwa dreimal so hoch wie bei der Master/Slave-Option. [..]"[34] Google bietet 2 Möglichkeiten, um die Tabellen abzufragen. Die erste ist eine Abfrageklasse, die Methoden zur Abfrage, Filterung und Limitierung der Werte gibt. Die zweite Möglichkeit ist eine an SQL angelehnte Abfragesprache, die als GQL bezeichnet wird. [34] Tabelle 7: Abfragebeispiele Google AppEngine Datastore Abfrageklasse class Song(db.Model): title = db.StringProperty() composer = db.StringProperty() date = db.DateTimeProperty() query = Song.all() query = db.Query(Song) ancestor = Song.get_by_key_name('my_song') query = db.Query(ancestor) query.filter('title =', 'Imagine') query.order('-date') query.ancestor(key)[35] GQL query = GqlQuery("SELECT * FROM Song WHERE composer = Lennon, John") query = GqlQuery("SELECT __key__ FROM Song WHERE composer = :1", "Lennon, John") query = GqlQuery("SELECT * FROM Song WHERE composer = :composer", composer="Lennon, Joh 7.2.5 Weitere Anbieter 7.2.5.1 MySQL Basierte Datenbankservices Weitere Anbieter von Relationalen Datenbankservices auf Basis von MySQL in der Cloud sind z.B. • Salesforce.com/Database.com • SuccessBricks, Inc. - ClearDB • Xeround 7.2.4.1 Google AppEngine DataStore 16 Datenbanken_in_der_Cloud Diese Anbieter bieten nahezu gleiche Dienste wie Amazon RDS. Sie unterscheiden sich in Details wie Datenbankverschlüsselung, Replikationsmechanismen oder unterstützter API?s. 7.2.6 CouchBase 7.2.6.1 Couchbase Server CouchBase bietet einen NoSQL Server, der sich recht einfach in Cloudbasierten Systemen (wie Amazons EC2) installieren lässt. Die Serverarchitektur besteht dabei auf jedem Knoten identisch und besteht aus deinem Clusterund einem Datamanager. Der Clustermanager kümmert sich um den Gesundheitszustand des Clusters und betreibt Load-Balancing und Fail-Over Mechanismen bei Ausfall von Nodes. Der Datamanager ist verantwortlich für die Datenspeicherung und Datenzugriffe. Jeder Knoten hat ein Satz an aktiven Daten und replizierten Daten anderer Knoten für dessen Verwaltung und Distribution er zuständig ist. Somit ist ein hohes Maß an Datensicherheit gegeben. Diese Architektur macht eine Skalierung des Systems sehr einfach, da man einfach einen neuen Knoten dem Cluster hinzufügen kann und die Daten automatisch über alle Systeme verteilt werden. CouchDB benutzt ein eigenes SDK zur Abfrage der Dokumente bzw. der Schlüsselpaare und Werte. Dieses SDK ist verfügbar für die bekannten Programmiersprachen wie u.a. Java, C, .NET oder PHP.[37] Da es sich hierbei jedoch um eine Software handelt, muss die unterliegende Hardware im Gegensatz zu den anderen Anbietern zusätzlich bereitgestellt werden. 7.3 Kosten / Lizensierung Die verschiedenen Anbieter gehen unterschiedliche Wege in den Lizensierungsmodellen. Einige rechnen pauschal nach Datenbankgröße ab, andere berechnen den verursachten Traffic usw. noch mit ein. So berechnet z.B. Microsoft den monatlichen Beitrag nur nach der Datenbankgröße, wie man der folgenden Tabelle entnehmen kann: Tabelle 8: Microsoft Preistabelle[38] Datenbank Größe Preis pro Datenbank pro Monat 0 bis 100 MB 35.425 ? Größer als 100 MB bis 1 GB 7.085 ? Größer als 1 GB bis 10 GB ?7.085 für den ersten GB, ?2.834 für jeden weiteren GB Größer als 10 GB bis 50 GB ?32.60 für die ersten10 GB, ?1.4156 für jeden weiteren GB Größer als 50 GB bis 150 GB ?89.27 für die ersten50 GB, ?0.7085 für jeden weiteren GB Oracle limitiert in seinen Paketen hingegen die Datenbankgröße und den monatlichen Netzwerktraffic: Tabelle 9: Oracle Database Services Preistabelle[39] Database S5 $175 / Monat 1 Schema Oracle Database 11g Release 2 5 GB Oracle Database Storage 30 GB Data Transfer Database S20 $900 / Monat 1 Schema Database S50 $2,000 / Monat 1 Schema 20 GB Oracle Database Storage 50 GB Oracle Database Storage 120 GB Data Transfer 300 GB Data Transfer 7.2.5.1 MySQL Basierte Datenbankservices 17 Datenbanken_in_der_Cloud Ein Schema in der Oracle-Welt entspricht einer Datenbank auf anderen Datenbanksystemen. Bei Anbietern wie Xeround, Amazon RDS oder Database.com muss man die einzelnen Parameter wie DB-Größe, Transaktionen, Netzwerktraffic, usw. angeben und daraus errechnet sich dann der monatliche Beitrag. Am Beispiel Database.com könnte eine Berechnung folgendermaßen aussehen: Quelle:http://www.database.com/en/pricing Abbildung 1: Preiskalkulation Database.com Bei Couchbase sieht das Lizensierungsmodel anders aus, da es sich um ein Serversystem handelt. Die Kosten hierfür belaufen sich auf jährliche Lizenskosten in den Abstufungen Free, Standard und Premium. Diese Abstufungen unterscheiden sich im Support und Knoten-Anzahl, wie sich aus folgender Tabelle ergibt: Tabelle 10: Couchbase Preistabelle[40] Couchbase Server Preise und Lizenzen Preis/Knoten Lizensierung Limitierung Free Standard Premium n/a Pro Knoten Unbegrenzt in derEntwicklung \ 2,499 $ 4,499 $ Keine Keine 10x5 7:00-17:00 PT (Pacific Time) 24x7 Einschränkungen Max 2-Knoten in der Produktion Support Berechtigungen Stunden n/a Bürozeiten n/a 7.3 Kosten / Lizensierung 24x7 18 Datenbanken_in_der_Cloud Support Kanäle Forum Anzahl Supportfällt n/a Reaktionszeit n/a Forum, Email, Web, Telefon Unlimitiert 5 Stunden während Bürozeiten 1 Werktag Forum, Email, Web, Telefon Unlimitiert 2 Stunden Antwortzeit n/a 5 Stunden Zusätzliche Berechtigungen Hotfixes n/a ? ? Benachrichtigungs-Service n/a ? ? Technische Alamierung n/a ? ? Zusätzlich zu den hier aufgeführten Lizenzkosten kommen bei der Couchbase noch die Kosten für die Infrastruktur dazu, die je nach Art des Hostings entweder aus einem IaaS-Modell in der Cloud, einer Private-Cloud oder gewöhnlichen Serversystemen entstehen können. Neben Couchbase gibt es jedoch auch sehr viele Open Source NoSQL Datenbankserver, die frei erhältlich sind, wie HBase oder Apache Cassandra. Diese haben jeweils unterschiedliche Spezialisierungen und Anwendungsgebiete. 7.4 Anwendungsgebiete 7.4.1 Memcache Systeme Als Memcache System bezeichnet man verteilte Datenbanken, die im Arbeitsspeicher des Servers gehalten werden und auf schnelle Zugriffszeiten ausgelegt sind. Für diese Art von Datenbank werden üblicherweise Key-Value-Stores verwendet, da sie sich aufgrund ihrer Einfachheit und dem schlanken Design am besten dafür eignen. Verwendung finden Memcache Systeme beispielsweise, um häufig gestellte Datenbankabfragen zwischenzuspeichern. "[..]Wenn viele Anfragen mithilfe derselben Parameter dieselbe Suchanfrage auslösen und Ergebnisänderungen nicht sofort auf der Website angezeigt werden müssen, kann die Anwendung die Ergebnisse im Memcache zwischenspeichern. Bei nachfolgenden Anfragen kann der Memcache überprüft werden und die Suchanfragen im Datenspeicher müssen nur dann durchgeführt werden, wenn keine Ergebnisse vorliegen oder die Ergebnisse abgelaufen sind. Sitzungsdaten, Nutzereinstellungen und andere Suchanfragen, die auf den meisten Websites durchgeführt werden, eignen sich ebenfalls gut zum Zwischenspeichern."[41] Da diese Art von Datenbank im Arbeitsspeicher des Servers liegt, muss man sich darüber im klaren sein, dass diese bei Absturz des Systems oder auch im Betrieb verloren gehen können. Diesen Störfall muss das Programm abfangen oder man nutzt ein System wie z.B. REDIS, welches die Funktionalität besitzt, die Daten zyklisch auf Disk zu schreiben.[42] 7.4.2 Mobile / Social Games Bei Mobile bzw. Social Games kommt es vor allen auf die Schlüsseleigenschaften von Datenbanken in der Cloud an. Man benötigt einen hochverfügbaren Dienst, da im besten Fall weltweit Spieler spielen. Er muss leicht Skalierbar sein, denn wenn das Spiel einen viralen Status erreicht, kann es zu explosionsartigem Wachstum der Spieleranzahl kommen. Man braucht geringe Antwortzeiten und es müssen große Datenmengen verwaltet werden. Hier bieten sich natürlich Dokumentenbasierte Datenbanksysteme wie z.B. Couchbase an, da sie durch ihr Design genau auf diesen Anwendungsfall zugeschnitten sind.[43] Da die meisten Mobile bzw. Soclial Games bereits in der Cloud bereitgestellt werden, kann hier die gleiche Plattform zum Bereitstellen der Datenbank 7.4 Anwendungsgebiete 19 Datenbanken_in_der_Cloud genutzt werden, um dadurch die Antwortzeiten auf ein Minimum zu reduzieren. 7.4.3 Social Media Plattformen / Beziehungsorientierte Daten Bei Social Media Plattformen wie Facebook oder Twitter hat man es mit einer großen Menge unstrukturierter Daten zu tun. So kann ein Statusupdate eines Users z.B. ein Bild enthalten, oder ein Video oder auch nur aus Text bestehen. Des Weiteren benötigt man eine einfache Skalierbarkeit, genau wie bei den Mobile Games, damit die Plattform gegenüber der ständig wachsenden Nutzerzahl gewappnet ist.[24] Hier eignen sich dokumentenorientierte Datenbanken am besten. Doch kommt es bei dieser Art von Plattform nicht nur auf die Menge der Daten der einzelnen User an, sondern auch darauf, in welcher Beziehung sie zueinander stehen. Um diese einfach abzubilden und abzufragen sind Graphendatenbanken unumgänglich. Diese eignen sich jedoch nicht nur zum Abbilden von Beziehungen im Social Network Bereich, sondern auch zur Fahr- oder Flugplanoptimierung, für Verkehrsleitsysteme oder zum Abbilden von Hyperlinkstrukturen des World-Wide-Web.[44] 7.4.4 Data Hub Der Data Hub beschreibt das Scenario eines großen Unternehmens mit vielen reisenden Mitarbeitern mit mobilen Endgeräten wie z.B. ein Versicherungsunternehmen und dessen Vertreter. Sowohl die Angestellten im Büro als auch die Vertreter unterwegs müssen auf ein gleiches Set an Daten zurückgreifen können. Hierbei tritt das Problem auf die neuen Kundendaten der Vertreter in die zentrale Datenbank zu importieren, bzw. neue Preislisten auf die mobilen Endgeräte der Vertreter zu synchronisieren. Um den On-Premise Datenbankserver keinem unnötigem Sicherheitsrisiko auszusetzen, soll dieser nicht aus dem Internet erreichbar sein. Hier können die Synchronisationsdienste, wie sie z.B. Oracle oder SQL Azure bieten, Abhilfe schaffen. Die Preistabellen werden regelmäßig in die Cloud synchronisiert und die offline Matthews (2009), S. 9,Abbildung 2: gespeicherten Kundendaten werden auch auf die Cloud-Datenbank synchronisiert, sobald der Vertreter online Konzeptioneller Aufbau eines Data Hub Scenarios geht (siehe Abbildung 2). Somit sind die Daten aktuell und mit SQL Azure Sicherheitsrisiken wurden auf ein Minimum reduziert.[45] 7.5 Datensicherheit / Datenschutz Die relationalen Datenbankservices der großen Hersteller bieten auf der Serverseite die gleichen Sicherheitsfeatures an wie bei Ihren On-Premise Produkten. Hierbei gelten die Unterschiede der einzelnen Hersteller. Bei MS SQL-Azure gibt es z.B. SQL Server Logins um sich am Datenbankserver anzumelden, Datenbank User um Berechtigungen auf Datenbankebene zu vergeben und Datenbank Rollen um einer User-Gruppe bestimmte Berechtigungen auf Datenbankebene zu geben.[46] Bei den Oracle Database Services unterscheidet man hingegen zwischen drei verschiedenen Userarten. Einem Account, welches eine Organisation widerspiegelt, einer identity domain, welche eine gruppe von Usern darstellt und einem Database Cloud Service den die User einer identity domain abfragen können. Einem bestimmten Database Cloud Service kann ein bestimmtes Set an Daten zur Verfügung gestellt werden. Diese Daten sind komplett abgeschottet von anderen 7.4.2 Mobile / Social Games 20 Datenbanken_in_der_Cloud Database Cloud Services. Somit erhält man eine strikte Trennung der Daten. [47] Alle Anbieter von Datenbankservices bieten ihre Services ausschließlich über eine verschlüsselte Verbindung an und z.B. bei Oracle werden die Datenbanken an sich sogar verschlüsselt. [48] Um einen noch höheren Schutz zu gewährleisten bietet Microsoft eine Database Firewall an über die man den Zugriff auf die Datenbankservices auf einen bestimmten IP-Adressbereich einschränken kann.[49] Oracle implementiert eine solche Filterung für Anfragen über die der RESTful-API (REpresentational State Transfer)durch die sog. "Origin-based security".[50] Da die Cloud-Anbieter pro Kunden nicht einen eigenen Server zur Verfügung stellen erfolgt die Separation der Kunden auf Datenbankebene bzw. auf Schemaebene bei Oracle. Die User sehen nur ihre eigenen Datenbanken/Schemas und können keine anderen sehen oder modifizieren. Durch die verteilte Struktur in der Cloud stehen die Daten immer auf mehreren Servern zur Verfügung. Dies und regelmäßige Backups die durch die Anbieter ausgeführt werden sorgen für ein hohes Maß an Schutz vor Datenverlusten. 8 Vor- und Nachteile 8.1 Herkömmliche Datenbanken Tabelle 11: Vor- und Nachteile von herkömmlichen Datenbanken Vorteile • Weit verbreitetes Modell • Ausgereiftes und geprüftes System • Datenkonsistenz / -integrität • Volle Kontrolle ab Hardwareebene • Betrieb abgeschottet von der Außenwelt • Einfaches Backup durch zentrale Datenhaltung • Garantierte Ressourcenverfügbarkeit Nachteile • Hohe Hardware- und Administrationskosten • Komplexes Datenmodell • Undynamische Skalierbarkeit • Potential erschöpft, kaum revolutionäre Neuerungen möglich 8.2 Cloud basierte Datenbanken Tabelle 12: Vor- und Nachteile von Cloud basierten Datenbanken Vorteile Nachteile • Einfaches Datenmodell • Geringe Hardware- und Administrationskosten • Einfache Skalierbarkeit • Konzept zukunftssicher und ausbaufähig • Häufig sehr spezialisierte Systeme • Relativ neues Modell • Datenkonsistenz / -integrität nicht immer gewährleistet • Über das Internet zugänglich; angreifbar • Komplexe Datensicherung durch verteilte Datenhaltung • Geteilte Ressourcen 9 Schlussbetrachtung 7.5 Datensicherheit / Datenschutz 21 Datenbanken_in_der_Cloud 9.1 Fazit Die vorliegende Fallstudienarbeit veranschaulicht, wie das Prinzip der Cloud und der Grundgedanke, der hinter diesem Konzept steckt, auf viele Bereiche im IT-Umfeld angewandt werden kann. Daraus ergeben sich viele Vorteile und Neuerungen in etlichen Branchen und Geschäftsmodellen. Gerade im Datenbankbereich birgt das Cloud Computing ein großes Potential für Verbesserungen und alternative Herangehensweisen für die konsolidierte Datenhaltung in Unternehmen. Neue Datenbankmodelle wie beispielsweise NoSQL sind in der Lage, die Schwächen von herkömmlichen relationalen Datenbankmodellen zu kompensieren und bieten sich in der heutigen von Mobilität und ständiger Erreichbarkeit geprägten Zeit daher besonders an. Aber damit nicht genug: Auch für althergebrachte relationale Datenbankmodelle bietet die Cloud Anwendungspotential, Flexibilität und Kostenersparnis. Die Vielseitigkeit der verschiedenen Hostingmodelle und Dienstangebote bietet eine breit gefächerte Auswahl an Lösungen für verschiedene Anwendungsfälle. Gerade bei hochverfügbaren und schnell skalierbaren Datenbanksystemen sind Cloud Services eine echte Alternative zu herkömmlichen On-Premise-Datenbanken. 9.2 Ausblick Das interne Hosting von Datenbanksystemen bleibt für traditionelle Speicheranwendungen unumgänglich. Dennoch fordert der Markt immer neue Möglichkeiten, auf Daten jederzeit und überall zugreifen zu können. Unternehmen profitieren mehr und mehr von den Vorzügen der Cloud und auch private Anwender nutzen die neu gewonnenen Möglichkeiten durch die Cloud. Daher sind Cloud-basierte Datenbanken eine wachsende Größe im Datenbankmarkt. Insbesondere Web-basierte Dienste wie Soziale Netzwerke, Online-Speicheranbieter und Browser-Games erfahren zur Zeit einen regelrechten Boom und sind unweigerlich fester Bestandteil unserer Zukunft. 10 Fußnoten 1. ? NIST (2013), Übersetzt durch Thomas Groenewald 2. ? 2,0 2,1 2,2 2,3 vgl. Metzger et al. (2011), S.21f 3. ? vgl. Metzger et al. (2011), S.15f 4. ? vgl. Baun et al. (2011), S.70f 5. ? vgl. Golem.de (2012) 6. ? vgl. Meir-Huber (2011), S.21 7. ? vgl. Metzger et al. (2011), S.13 8. ? 8,0 8,1 8,2 vgl. Meir-Huber (2011), S.22 9. ? vgl. Metzger et al. (2011), S.20 10. ? vgl. Meir-Huber (2011), S.23 11. ? Lamersdorf (1994), S.16 12. ? vgl. Kemper et al. (2006), S.273 13. ? vgl. Kemper et al. (2006), S.17ff 14. ? vgl. Microsoft (2013a) 15. ? vgl. Oracle (2013) 16. ? vgl. Meir-Huber (2011), S.85 17. ? vgl. Couchbase(2012a), S.3 übersetzt durch Christian Küwen 9.1 Fazit 22 Datenbanken_in_der_Cloud 18. ? 18,0 18,1 vgl. Walker-Morgan(2010), S. 1 19. ? Walker-Morgan(2010), S. 1 20. ? vgl. Couchbase(2012a), S.5 übersetzt durch Christian Küwen 21. ? vgl. Walker-Morgan(2010), S. 2 22. ? 22,0 22,1 vgl. Edlich et al. (2011), S. 63 23. ? 23,0 23,1 vgl. Pürner(2012), S.2 24. ? 24,0 24,1 24,2 vgl. Meir-Huber (2011), S.86 25. ? 25,0 25,1 25,2 vgl. Meir-Huber (2011), S. 115 - 117 26. ? Amazon (2013a), Inwiefern unterscheidet sich Amazon DynamoDB von Amazon SimpleDB? Welche Lösung sollte ich verwenden? 27. ? 27,0 27,1 vgl. Meir-Huber (2011), S. 118 - 122 28. ? Meir-Huber (2011), S 122 29. ? vgl. Meir-Huber (2011), S.160 f. 30. ? Microsoft(2009), S. 9 31. ? vgl. Oracle(2012a), S. 4 f. übersetzt von Christian Küwen 32. ? vgl. Cooper (2012) 33. ? Cooper (2012), Hintergrund 34. ? 34,0 34,1 Google (2012a), Einführung in den Datenspeicher 35. ? Google (2012b) 36. ? Google (2012c) 37. ? vgl. Couchbase(2012b) übersetzt von Christian Küwen 38. ? SQL Azure Preistabelle 39. ? Oracle Database Services Preistabelle 40. ? Couchbase(2012c) 41. ? Google (2012d) 42. ? vgl. Jansen (2011) 43. ? vgl Couchbase (2012d) 44. ? vgl. Pürner(2012), S. 3 45. ? vgl. Matthews(2009), S.8 übersetzt von Christian Küwen 46. ? vgl. Matthews(2009), S. 12 übersetzt von Christian Küwen 47. ? vgl. Oracle(2012c), S. 4 f. übersetzt von Christian Küwen 48. ? vgl. Oracle(2012c), S. 7 übersetzt von Christian Küwen 49. ? vgl. Microsoft(2010) übersetzt von Christian Küwen 50. ? vgl. Oracle(2012c), S. übersetzt von Christian Küwen 11 Literaturen- und Quellenverzeichnis Amazon (2013a) NIST (2013)) Baun et al. (2011) Meir-Huber (2011) Metzger et al.(2011) Edlich et al. (2011) Kemper et al.(2006) Lamersdorf (1994) Golem.de (2012) 10 Fußnoten Amazon Web Services, Inc. (Hrsg.): Amazon DynamoDB - Inwiefern unterscheidet sich Amazon http://aws.amazon.com/de/dynamodb/#whentousedynamodb (10.01.2013, 18:34) National Institute for Standards and Technology (NIST), http://www.nist.gov/itl/cloud/index.cfm ( Baun, Christian; Kunze, Marcel; Nimis, Jens; Tai, Stefan: Cloud Computing : Web-basierte dynam Meir-Huber, Mario: Cloud Computing : Praxisratgeber und Einstiegsstrategien, 2. Auflage, entwic Metzger, Christian; Reitz, Thorsten; Villar, Juan: Cloud Computing : Chancen und Risiken aus tec Edlich, Stefan; Friedland, AchimM Hampe, Jens: NoSQL: Einstieg in die Welt nichtrelationaler W Kemper, Alfons; Eickler, André: Datenbanksysteme : Eine Einführung, 6. Auflage, Oldenbourg, M Lamersdorf, Winfried: Datenbanken in verteilten Systemen: Konzepte, Lösungen, Standards, Fried Golem.de, http://www.golem.de/news/geforce-grid-grafikkarten-werden-virtuell-und-streamen-spi 23 Datenbanken_in_der_Cloud Couchbase (2012a) Couchbase(2012b) Couchbase(2012c) Couchbase(2012d) Walker-Morgan(2010) Jansen(2011) Pürner(2012) Oracle(2012a) Oracle(2012b) Oracle(2012c) Oracle(2013) Cooper (2012) Google (2012a) Google (2012b) Google (2012c) Google (2012d) Microsoft (2013) Microsoft (2013a) Microsoft(2009) Microsoft (2010) Couchbase (Hrsg.): Navigating the Transition From Relational to NoSQL Database Technology (W Couchbase(Hrsg.): Couchbase Server Architecture, http://www.couchbase.com/couchbase-server/a Couchbase(Hrsg.): Couchbase Support and Subscriptions: Annual Subscription Options (Enterpris Couchbase(Hrsg.): The database of choice for social and mobile games,2012, http://www.couchba Walker-Morgan, Dj; Heise Zeitschriften Verlag (Hrsg.): NoSQL im Überblick, 01.06.2010 16:12, Jansen, Rudolf; Heise Zeitschriften Verlag (Hrsg.): NoSQL: Key-Value-Datenbank Redis im Über http://www.heise.de/developer/artikel/NoSQL-Key-Value-Datenbank-Redis-im-Ueberblick-12338 Pürner, Heinz Axel, IDG Business Media GmbH (Hrsg.): NoSQL - die neue (alte) Datenbank-Gen http://www.computerwoche.de/a/nosql-die-neue-alte-datenbank-generation,2497315 (03.01.2012 1 Oracle (Hrsg.): Oracle Database Cloud Service (Whitepaper), Mai 2012, http://www.oracle.com/te (04.01.2012 10:30) Oracle(Hrsg.): Pricing , 2012, https://cloud.oracle.com/mycloud/f?p=service:database_pricing:0::: Oracle (Hrsg.): Security and the Oracle Database Cloud Service (Whitepaper), September 2012, ht (04.01.2012 10:30) Oracle (Hrsg.): Oracle Technology Global Price List, Januar 2013, http://www.oracle.com/us/corp Cooper, Jason, Google (Hrsg.): Speicherung von Entitäten und Indizes, 23.03.2012, https://develop Google (Hrsg.): Überblick über den Datenspeicher, 23.03.2012, https://developers.google.com/app Google (Hrsg.): Die Anfrageklasse, 23.03.2012, https://developers.google.com/appengine/docs/py Google (Hrsg.): Die Anfrageklasse, 23.03.2012, https://developers.google.com/appengine/docs/py Google (Hrsg.): Die Anfrageklasse, 23.03.2012, https://developers.google.com/appengine/docs/py Microsoft(Hrsg.): Pricing Details: Data Management, 2012, http://www.windowsazure.com/en-us/ Microsoft(Hrsg.): SQL Server 2012 Lizenzierung, 2013, http://www.microsoft.com/de-de/licensin Microsoft(Hrsg.): Similarities and Differences of SQL Azure and SQL Server (Whitepaper), Sept http://download.microsoft.com/download/A/D/F/ADFB1E54-A930-4BD0-A0FE-080BD65ECE9B (05.01.2012 18:30) Microsoft(Hrsg.): Overview of Security in Windows Azure SQL Database, 2010 , http://social.technet.microsoft.com/wiki/contents/articles/1573.overview-of-security-in-windows-a Matthews, Alistair; Lee, Jason; Malcolm, Graeme; Microsoft(Hrsg.): Similarities and Differences Matthews(2009) http://download.microsoft.com/download/F/8/6/F864ECFB-CF7B-4EEC-B4B9-CD2D3D72032F/ salesforce.com (2013) Pricing, 2012, http://www.database.com/en/pricing (05.01.2013, 17:45) 11 Literaturen- und Quellenverzeichnis 24