Cloud Computing Anbietervergleich
gleich, lediglich in der Region Asia-Pacific unterscheiden sich die Kosten ( Tabelle 1.20 ).
Kosten in EUR pro GB
Region
Eingehend
Ausgehend
Nordamerika und Europa
0,0710
0,1064
Asien
0,2128
0,3192
Tabelle 1.20: Kosten des Datentransfers
1.2.3 Windows Azure Storage
Windows Azure Storage dient primär Windows Azure als Speicher, soll jedoch nicht nur von Windows Azure aus verwaltet werden können, sondern auch von anderen Anwendungen wie mobilen Anwendungen und Desktopanwendungen. Der Windows Azure Storage umfasst die drei Kernbereiche „Blobs“, „Queues“ und „Tables“.
Abbildung 1.26: Windows Azure Storage
Technische Beschreibung
In diesem Kapitel wird REST in den Hintergrund gestellt und Beschreibungen werden anhand des .NET API verwendet.
Wie erwähnt, sind die Windows-Azure-Tabellen nichtrelational und basieren auf den ADO.NET Data Services. Tabellen haben einzelne Zeilen, die auch als Entitäten bezeichnet werden. Diese Entitäten haben wiederum Felder, die als Eigenschaft bezeichnet werden ( Abbildung 1.27 ).
Abbildung 1.27: Tabellen in Windows Azure
Man kann mit den Tabellen zum einen low-level über REST arbeiten, zum anderen gibt es eine Storage Library, die bereits ein einfaches API zur Verfügung stellt. Hierbei kann man auch einige LinQ-Abfragen verwenden. LinQ ist ein Bestandteil des .NET Frameworks. Aktuell werden die Operationen FROM, WHERE und TAKE unterstützt. Wichtig ist auch, dass stets eine Entität selektiert wird, nicht jedoch eine einzelne Eigenschaft. Eine einzelne Entität kann bis zu 255 Eigenschaften haben. Hier sind bereits die drei Systemeigenschaften PartitionKey , RowKey und Timestamp inkludiert. Eine Entität darf 1 MB nicht überschreiten, für größere Datenmengen steht der Blob Storage zur Verfügung.
Ein PartitionKey dient der Verteilung der Tabelle. Daher sollte diese Eigenschaft für zusammenhängende Entitäten gewählt werden. Je mehr Entitäten denselben PartitionKey verwenden, umso schwieriger gestaltet sich die Verteilung der Datenbank im Hintergrund. Das hat dann Auswirkungen, wenn viele User auf die Tabelle zugreifen. Je besser man anhand des PartitionKeys verteilt, umso schneller wird die Anwendung reagieren. Bei einem Fotoalbum-Service könnte man die Fotos anhand der Alben partitionieren. Für ein Telefonbuch kann das über die Vorwahl geschehen.
Ein RowKey dient der Identifizierung einer Entität. Eine Entität ist durch den RowKey und den PartitionKey eindeutig. RowKey ist ein String, der bis zu 1 KB groß sein kann. Typischerweise wird hier ein GUID verwendet. Der Timestamp dient dem Server für Datumsinformationen. Er sollte nicht ausgelesen werden und kann auch nicht verändert werden. Eine Tabelle unterstützt verschiedene Datentypen, die in Tabelle 1.21 dargestellt sind.
Datentyp
Beschreibung
byte[]
Bytes bis zu einer maximalen Größe von 64 KB
bool
Boolean
DateTime
64bit UTC-Zeit
double
64bit Fließkommazahl
Guid
128bit Identifier
int
32bit Integer
long
64bit Integer
String
UTF-16-Zeichenkette
Tabelle 1.21: Mögliche Datentypen in der Windows-Azure-Storage-Tabelle
Es ist zwar möglich, bis zu 64 KB an binären Daten in einer Entität zu speichern, jedoch sind hier klare Grenzen gesetzt, wenn man etwa Bilder oder Dokumente speichern möchte. Blobs dienen usrpünglich dazu, Mediadaten wie Bilder, Videos oder Dokumente abzuspeichern und befinden sich in Windows Azure stets in einem Container. In Windows Azure gibt es zwei Typen von Blobs: Block Blobs und Page Blobs. Block Blobs sind vor allem auf Streaming optimiert, wohingegen Page Blobs auf viele Lese- und Schreibzugriffe optimiert werden. Ein Block Blob besteht aus eigenen Blocks, die jeweils maximal 4 MB groß sein können. Wird eine große Datei gespeichert, wird sie in unterschiedliche Blocks aufgeteilt. Die maximale Größe eines Blocks ist 200 GB oder 50 000 Blocks. Ein Page Block kann bis zu einem TB groß sein. Blobs enthalten in vielen Fällen Metadaten, die beispielsweise angegeben sein können, um ein Bild zu beschreiben. In Abbildung 1.28 ist der Blob Storage abgebildet.
Abbildung 1.28: Der Blob Storage in Windows Azure.
Queues sind die einfachste Art des StorageClients. Sie haben eine einfache Kommunikationsaufgabe. Ein Anwendungsfall wäre zum Beispiel, wenn der Benutzer Bilder uploadet, die dann in einer WorkerRole verkleinert werden sollen. Die WebRole (ASP.NET) würde dann die WorkerRole benachrichtigen. Mithilfe von Queues können paralelle Vorgänge wesentlich
Weitere Kostenlose Bücher