Amazon SimpleDB bietet eine benutzerfreundliche Web-Service-Schnittstelle zum Erstellen und Speichern mehrerer Datensätze sowie für problemlose Datenabfragen und Ergebniswiedergaben. Dank der automatischen Indizierung der Daten können die benötigten Informationen schnell und einfach gefunden werden. Die Vordefinierung eines Schemas bzw. die Änderung eines Schemas beim späteren Hinzufügen neuer Daten ist nicht erforderlich. Die horizontale Skalierung erfolgt einfach durch die Erstellung neuer Domänen, sodass keine neuen Server erforderlich sind.
Zur Verwendung von Amazon SimpleDB führen Sie folgende Schritte durch:
- Erstellen Ihres Datensatzes
- Wählen Sie für Ihre Domänen eine Region aus, die für die Optimierung der Latenz, Minimierung der Kosten oder Einhaltung gesetzlicher Vorschriften sorgt. Amazon SimpleDB ist gegenwärtig in den folgenden Regionen verfügbar: USA Ost (Nord-Virginia), USA West (Oregon), USA West (Nordkalifornien), EU (Irland), Asien-Pazifik (Singapur), Asien-Pazifik (Tokio), Asien-Pazifik (Sydney) und Südamerika (São Paulo).
- Mithilfe der Optionen CreateDomain, DeleteDomain, ListDomains und DomainMetadata können Abfrage-Domains erstellt und verwaltet werden.
- Mithilfe der Optionen Put, Batch Put und Delete kann die Datenmenge innerhalb der einzelnen Abfragedomänen erstellt und verwaltet werden.
- Abrufen Ihrer Daten
- Verwenden Sie "GetAttributes", um ein bestimmtes Element abzurufen.
- Verwenden Sie "Select", um Ihren Datensatz im Hinblick auf bestimmte Kriterien abzufragen.
- Sie zahlen nur für die tatsächlich genutzten Ressourcen.
Das von Amazon SimpleDB verwendete Datenmodell ermöglicht eine einfache Eingabe, Verwaltung und Abfrage von strukturierten Daten. Entwickler organisieren ihre Datensätze in Domänen und können Abfragen zu allen in einer bestimmten Domäne gespeicherten Daten vornehmen. Bei Domänen handelt es sich um Sammlungen von Elementen, die durch Attributwertpaare beschrieben werden.
Diese Begriffe können anhand einer herkömmlichen Tabelle veranschaulicht werden. Betrachten wir beispielsweise die in der nachfolgenden Tabelle dargestellte Kundenverwaltungsdatenbank. Wie würde diese in Amazon SimpleDB dargestellt werden? Die gesamte Tabelle wäre die Domäne "Kunden". Einzelne Kunden würden als Zeilen in der Tabelle bzw. Elemente in der Domäne dargestellt werden. Die Kontaktinformationen würden durch Spaltenüberschriften (Attribute) beschrieben werden. Die Werte befinden sich in den einzelnen Zellen. Im Folgenden soll davon ausgegangen werden, dass es sich bei den Einträgen unten um neue Kunden handelt, die der Domäne hinzugefügt werden sollen.
Kunden-ID | Vorname | Nachname | Straße | Stadt | Bundesstaat | PLZ | Telefon |
---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 |
Um die oben genannten Daten Amazon SimpleDB hinzuzufügen, müssen die Kunden-IDs zusammen mit den Attributwertpaaren für die beiden Kunden über einen PUT-Befehl in die Domäne eingegeben werden. Ohne Verwendung der besonderen Syntax sähe dies ungefähr folgendermaßen aus:
PUT (Element, 123), (Vorname, Bob), (Nachname, Smith), (123 Main St.), (Stadt, Springfield), (Land, MO), (PLZ, 65801), (Telefon, 222-333-4444) PUT (Element, 456), (Vorname, James), (Nachname, Johnson), (Straße, 456 Front St.), (Stadt, Seattle), (Staat, WA), (PLZ, 98104), (Telefon, 333-444-5555)
Amazon SimpleDB weist im Vergleich zu den Tabellen herkömmlicher Datenbanken einige wesentliche Unterschiede auf. So wird dem Benutzer z. B. die Flexibilität geboten, zu einem späteren Zeitpunkt problemlos erneut auf die Daten zuzugreifen und neue Attribute hinzuzufügen, die nur bestimmte Einträge betreffen. Beispielsweise können Sie damit beginnen, die E-Mail-Adressen Ihrer Kunden zu erfassen, um diesen Echtzeit-Benachrichtigungen zum Auftragsstatus zu senden. Anstatt Ihre Kundentabelle neu zu erstellen, Abfragen neu zu verfassen, neue Indizes zu entwickeln usw. würden Sie in diesem Fall einfach die neuen Einträge und alle zusätzlichen Attribute der bestehenden Domäne "Kunden" hinzufügen. Die Domäne sähe dann beispielsweise folgendermaßen aus:
Kunden-ID | Vorname | Nachname | Straße | Stadt | Bundesstaat | PLZ | Telefon | |
---|---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 | |
789 | Deborah | Thomas | 789 Garfield | New York | NY | 10001 | 444-555-6666 | [email protected] |
Amazon SimpleDB bietet einige wenige einfache API-Aufrufe für das Schreiben, Indizieren und Abfragen von Daten. Die Benutzeroberfläche und die Funktionen sind bewusst auf die Kernfunktionalität ausgerichtet und bieten Entwicklern eine Basis-API, auf der sie aufbauen können. Dies sorgt dafür, dass dieser Service einfach zu erlernen und zu verwenden ist.
- CreateDomain – erstellt eine Domäne, die den Datensatz enthält.
- DeleteDomain – löscht eine Domäne.
- ListDomains – listet alle Domänen auf.
- DomainMetadata – ruft Informationen zum Erstellungszeitpunkt der Domäne, Speicherinformationen zu Namen und Attributen einzelner Elemente sowie Angaben zur Gesamtgröße (in Byte) auf.
- PutAttributes – fügt ein Element oder dessen Attribute hinzu oder aktualisiert sie, oder fügt Attributwertpaare bereits bestehenden Elementen hinzu. Elemente werden bei Erhalt automatisch indiziert.
- BatchPutAttributes – für einen höheren Gesamtdurchsatz bei Massenerfassungen werden mit einem einzigen Aufruf bis zu 25 PutAttribute-Vorgänge durchgeführt.
- DeleteAttributes – löscht ein Element, ein Attribut oder einen Attributwert.
- BatchDeleteAttributes – für einen höheren Gesamtdurchsatz bei Massenlöschungen werden mit einem einzigen Aufruf bis zu 25 DeleteAttributes-Vorgänge durchgeführt.
- GetAttributes – Dient zum Abrufen eines Elements und aller oder einer Teilmenge der Attribute und Werte.
- Select – Dient zum Abfragen des Datensatzes mithilfe der vertrauten Syntax "select target from domain_name where query_expression". Die folgenden Wertetests werden unterstützt: =, !=, =, like, not like, between, is null, is not null und every (). Beispiel: select * from mydomain where every(keyword) = 'Book'. Mithilfe des SORT-Operators können Ergebnisse sortiert werden. Mithilfe des COUNT-Operators wird die Anzahl der Elemente angegeben, die festgelegte Bedingungen in den Abfrageprädikaten erfüllen.
Hinweis: Amazon SimpleDB wurde mit AWS Identity and Access Management integriert, um eine präzise Kontrolle von Amazon SimpleDB-Ressourcen zu ermöglichen. Durch die Integration mit AWS Identity and Access Management kann ein AWS Konto, das für die Nutzung von SimpleDB angemeldet ist, mehrere Benutzer erstellen. Diese Benutzer können wiederum Zugangsberechtigungen auf der SimpleDB API-Ebene für die SimpleDB Domänen des AWS Kontos erhalten. Nähere Einzelheiten siehe AWS-Identitäts- und Zugriffsverwaltung – Detailseite.
Amazon SimpleDB speichert mehrere geografisch verteilte Kopien jeder Domäne, um hohe Verfügbarkeit und Datenbeständigkeit zu gewährleisten. Ein erfolgreicher Schreibvorgang (mittels PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain oder DeleteDomain) bedeutet, dass alle Kopien der Domäne beständig erhalten bleiben. Amazon SimpleDB unterstützt zwei Lesekonsistenzoptionen: "Eventually Consistent Reads" und "Consistent Reads".
- Eventually Consistent Reads (Standard) – die abschließende Konsistenz optimiert die Leseleistung (hinsichtlich geringer Latenz und hohem Durchsatz). Ein eventuell konsistenter Lesevorgang (mittels Select oder GetAttributes) enthält jedoch möglicherweise nicht die Ergebnisse eines kürzlich abgeschlossenen Schreibvorgangs (mittels PutAttributes, BatchPutAttributes, DeleteAttributes und BatchDeleteAttributes). Konsistenz über alle Datenkopien wird im Allgemeinen innerhalb einer Sekunde erreicht; eine Wiederholung des Lesevorgangs nach kurzer Zeit sollte die aktualisierten Daten liefern.
- Consistent Reads – Zusätzlich zum Lesevorgang mit abschließender Konsistenz (Eventually Consistent Read) gibt Ihnen Amazon SimpleDB auch die Möglichkeit und Kontrolle zur Anforderung eines konsistenten Lesevorgangs (Consistent Read), falls Ihre Anwendung oder ein Element Ihrer Anwendung dies erfordert. Ein konsistenter Lesevorgang (mittels Select oder GetAttributes mit ConsistentRead=true) liefert ein Ergebnis, das alle erfolgreichen Schreibvorgänge einbezieht, die vor dem Lesevorgang erfolgten.
Standardmäßig führen GetAttributes und Select einen "Eventually Consistent"-Lesevorgang durch. Da "Consistent Read" höhere Latenz und geringeren Lesedurchsatz bewirkt, sollte diese Optionen nur benutzt werden, wenn das Anwendungsszenario es erfordert, dass der Lesevorgang alle vor dem Lesevorgang erfolgten erfolgreichen Schreibvorgänge einbeziehen muss. In allen anderen Szenarien ergibt die Standardoption "Eventually Consistent Read" die beste Leistung. Beachten Sie außerdem, dass in Amazon SimpleDB für jede einzelne Leseabfrage Konsistenzeinstellungen spezifiziert werden können. Eine Anwendung könnte daher getrennte Teile mit verschiedenen Konsistenzeinstellungen enthalten.
Amazon SimpleDB ist keine relationale Datenbank und bietet keine komplexen Transaktionen und Beziehungen (z. B. Verbindungen), um einzigartige Funktionalitäts- und Leistungscharakteristiken bereit zu stellen. Amazon SimpleDB bietet jedoch folgende Transaktionssemantiken:
- Bedingte Puts/Deletes – ermöglicht Ihnen Werte für eines oder mehrere Attribute einzufügen, zu ersetzen oder zu löschen, wenn der vorhandene Wert eines Attributs mit dem angegebenen Wert übereinstimmt. Wenn der Wert nicht übereinstimmt oder nicht vorhanden ist, wird die Aktualisierung abgelehnt. Bedingte Puts/Deletes sind nützlich, um verlorene Aktualisierungen zu vermeiden, wenn verschiedenen Quellen gleichzeitig zum selben Objekt schreiben.
Bedingte Puts/Deletes werden mittels PutAttributes und DeleteAttributes APIs abgerufen, indem eine optionale Bedingung mit einem erwarteten Wert angegeben wird. Wenn Ihre Anwendung beispielsweise für eine Veranstaltung Sitzplätze reserviert oder Karten verkauft, könnten Sie einen Kauf (d. h. Schreibaktualisierung) nur dann zulassen, wenn der angegebene Sitzplatz noch verfügbar ist (die optionale Bedingung). Diese Semantik kann auch zur Implementierung von Funktionen, beispielsweise eines Zählers, Einfügen eines Artikels, nur wenn er noch nicht existiert und optimistischer Gleichzeitigkeitssteuerung (OCC) verwendet werden. Eine Anwendung kann OCC implementieren, indem ein Versionsnummernattribut (bzw. ein Zeitstempel) als Teil eines Artikels beibehalten wird und ein bedingtes Put/Delete, basierend auf dem Wert der Versionsnummer durchgeführt wird.
Weitere Informationen zu transaktionaler Semantik oder Konsistenz mit Amazon SimpleDB entnehmen Sie bitte dem Amazon SimpleDB Developer Guide oder dem Consistency Enhancements Whitepaper.
Amazon Web Services bietet eine Reihe verschiedener Datenbanklösungen für Entwickler an. Sie können umfassend verwaltete relationale und NoSQL-Dienste oder Ihre eigene Datenbank in der Cloud von Amazon EC2 und Amazon EBS betreiben.
Mit Amazon RDS kann eine voll funktionsfähige relationale Datenbank ausgeführt und gleichzeitig die Datenbankverwaltung vereinfacht werden. Amazon DynamoDB ist ein umfassend verwalteter NoSQL-Datenbankdienst, der extrem schnelle und transparente Leistung mit nahtloser Skalierbarkeit bietet. Amazon SimpleDB bietet einen nicht-relationalen Service, der für kleinere Datensätze geschaffen wurde. Durch die Verwendung einer der vielen AMIs auf Amazon EC2 und Amazon EBS erhalten Sie vollständige Kontrolle über Ihre Datenbank, ohne Hardware beschaffen und installieren zu müssen.
Zwischen diesen Alternativen gibt es wichtige Unterschiede, daher sollte gut überlegt sein, welche für Ihre Bedürfnisse am besten geeignet ist.
Auf der Seite Betreiben von Datenbanken mit AWS finden Sie ausführlichere Informationen zu den diversen Datenbankalternativen für Ihre Anwendungen.
Im Gegensatz zu Amazon S3 speichert Amazon SimpleDB keine Rohdaten. Stattdessen werden Ihre Daten als Eingabe verwendet und zur Erstellung von Indizes über mehrere Dimensionen ausgeweitet. Dies ermöglicht eine schnelle Abfrage der Daten. Darüber hinaus verwenden Amazon S3 und Amazon SimpleDB unterschiedliche Arten von physischem Speicher. Amazon S3 verwendet dichte Speicherlaufwerke, die für die kostengünstige Speicherung größerer Objekte optimiert sind. Amazon SimpleDB speichert kleinere Datenelemente und verwendet Laufwerke mit einer geringeren Dichte, die für einen schnellen Datenzugriff optimiert sind.
Zur Kostenoptimierung sollten bei sämtlichen AWS-Services größere Objekte oder Dateien in Amazon S3 gespeichert werden, während kleinere Datenelemente und Datei-Pointer (z. B. auf Amazon S3-Objekte) am besten in Amazon SimpleDB gespeichert werden. Aufgrund der engen Integration zwischen den Services und der kostenlosen Datenübertragung innerhalb der AWS-Umgebung können Entwickler einerseits die Geschwindigkeit und die Abfragefunktionen von Amazon SimpleDB problemlos nutzen und andererseits von den niedrigen Kosten der Datenspeicherung in Amazon S3 profitieren, indem sie beide Services in ihre Anwendungen integrieren.
Amazon SimpleDB ermöglicht derzeit einzelnen Domains das Anwachsen auf bis zu 10 GB. Wenn Ihr Datenset größer als 10 GB ist, nutzen Sie einfach die Skalierfähigkeit der Amazon SimpleDB-Architektur und verbreiten Sie Ihre Daten über mehrere Domänen. Da Amazon SimpleDB mit dem Fokus auf Parallelismus konzipiert wurde, erhöht die Verbreitung der Daten über mehrere Domänen auch den potenziellen Schreib- und Lesedurchsatz. Anfänglich werden Ihnen maximal 250 Domänen zugewiesen; füllen Sie dieses Formular aus, wenn Sie zusätzliche Domänen benötigen.
Um nähere Informationen zu erhalten, wie zahlreiche Entwickler die Vorteile von Amazon SimpleDB im Zusammenhang mit Amazon S3 nutzen, klicken Sie hier.
Im Folgenden wird die beste Möglichkeit beschrieben, wie die Größe der strukturierten Datenspeicherung mit AmazonSimpleDB vorhergesagt werden kann:
Rohe Byte-Angaben (GB) aller Element-IDs + 45 Byte pro Element + Rohe Byte-Angaben (GB) aller Attributnamen + 45 Byte pro Attributname + Rohe Byte-Angaben (GB) aller Attributwertpaare + 45 Byte pro Attributwertpaar
Um Ihre geschätzten monatlichen Speicherkosten für die Regionen USA Ost (Nord-Virginia) oder USA West (Oregon) zu berechnen, multiplizieren Sie die ermittelte Größe in GB mit 0,25 USD. Für die Regionen EU (Irland), Asien-Pazifik (Singapur), Asien-Pazifik (Sydney) oder USA West (Nordkalifornien) multiplizieren Sie die ermittelte Größe in GB mit 0,275 USD. Für die Region Asien-Pazifik (Tokio) multiplizieren Sie die ermittelte Größe in GB mit 0.276 USD. Für die Region Südamerika (São Paulo) multiplizieren Sie die ermittelte Größe in GB mit 0,34 USD.
Amazon SimpleDB misst die Maschinenauslastung für jede einzelne Anforderung sowie die auf der Höhe der verwendeten Maschinenkapazität basierenden Gebühren. Auf Grundlage dieser Daten wird die betreffende Anforderung (SELECT, GET, PUT usw.) abschließend bearbeitet und auf die Stundenkapazität eines Xeon-Prozessors von 2007 mit ca. 1,7 GHz normiert. Die Maschinenauslastung hängt von der pro Anforderung verarbeiteten Datenmenge (Anzahl und Länge der Attribute) ab. Bei einem GET-Vorgang, bei dem 256 Attribute abgerufen werden, sind mehr Ressourcen erforderlich als bei einem GET-Vorgang, bei dem nur 1 Attribut abgerufen wird. Ein SELECT-Vorgang mit mehreren Prädikaten, bei dem 100.000 Attribute untersucht werden, kostet mehr als ein QUERY-Vorgang mit einem einzigen Prädikat, bei dem 250 Attribute untersucht werden.
In den Antwortmitteilungen der einzelnen Anforderungen gibt Amazon SimpleDB das Feld "Box-Usage" an. Box-Usage bezeichnet die Menge der pro Anforderung verwendeten Maschinenressourcen. Bandbreite und Speicher sind darin nicht enthalten. Box-Usage ist der Teil einer Maschinenstunde, der zur Bearbeitung einer bestimmten Anforderung benötigt wird. In den Regionen USA Ost (Nord-Virginia) und USA West (Oregon) berechnen sich die Kosten einer einzelnen Anforderung aus Box-Usage (in Stunden) * 0,14 USD pro Amazon SimpleDB-Maschinenstunde. Die Kosten aller Anforderungen belaufen sich auf die Summe der einzelnen Box-Usage-Werte (ausgedrückt in Stunden) * 0,14 USD.
Wenn beispielsweise die Summe der Box-Usage-Werte für Ihre Anforderungen im Laufe eines Monats das Äquivalent von einem 1,7-GHz-Xeon-Prozessor für 9 Stunden verwendet, fallen folgende Gebühren an:
9 Stunden * 0,14 USD pro Amazon SimpleDB-Maschinenstunde = 1,26 USD.
Wenn sich Ihre Abfrage-Domains in den Regionen EU (Irland), Asien-Pazifik (Tokio), Asien-Pazifik (Singapur), Asien-Pazifik (Sydney) oder USA West (Nordkalifornien) befinden, beläuft sich der Preis einer Amazon SimpleDB-Maschinenstunde auf 0,154 USD. Falls sich Ihre Abfragedomänen in der Region Südamerika (Sao Paulo) befinden, beläuft sich die SimpleDB-Maschinenstunde auf 0,19 USD pro Maschinenstunde. Alle Kostenkalkulationen sollten so angepasst werden, dass sie die Preise der entsprechenden Region wiedergeben.
Die Nutzung dieses Service unterliegt der Kundenvereinbarung von Amazon Web Services.