Amazon SimpleDB bietet eine benutzerfreundliche Web-Service-Schnittstelle zum Erstellen und Speichern mehrerer Datensätze sowie für problemlose Datenabfragen und Ergebniswiedergaben. Der Service verwaltet automatisch die Bereitstellung von Infrastruktur, Hardware- und Softwareverwaltung, Replizierung und Indizierung von Daten sowie Leistungsabstimmung. Dies ermöglicht es Ihnen, sich vollständig auf die Anwendungsentwicklung zu konzentrieren und auf einfache Weise nur für die Ressourcen zu bezahlen, die Sie tatsächlich zur Speicherung Ihrer Daten und zur Erstellung von Anfragen brauchen. Amazon SimpleDB ermöglicht zudem die Skalierbarkeit, da Sie die Arbeitslast auf mehrere Domänen partitionieren können. Falls Ihre Arbeitslast die durch eine einzige Domäne bereitgestellte Speicherkapazität und den Abfragedurchsatz überschreitet, können Sie einen höheren Durchsatz erreichen, indem Sie zusätzliche Domänen erstellen und Ihre Daten und Abfragen über diese verteilen. Indem Sie Ihre Daten und Anfragen über mehrere Domänen (und damit Maschinenressourcen) ausbreiten, erhalten Sie Vorteile durch einen größeren "Oberflächenbereich" von Rechenressourcen zur Abwicklung von Anforderungen und Anfragen. Wenn Sie Ihre Daten beispielsweise über 10 Domänen verbreiten und 10 parallele Abfragen durchführen, erhalten Sie einen wesentlich höheren Durchsatz als wenn Sie 10 Abfragen sequenziell in einer einzigen Domäne durchführen, die alle Ihre Daten enthält.
Dank der Flexibilität von Amazon SimpleDB können Sie Ihr Datenmodell spontan ändern und Attribute hinzufügen oder entfernen ohne ein starres Schema zu zerbrechen. Sie können daher Änderungen Ihrer Anwendung und Ihres Geschäfts schnell und ohne kostspielige Restrukturierung oder Aktualisierung des Schemas durchführen. Sie können außerdem zwischen Consistent Read Requests und Eventually Consistent Read Requests wählen, um die Leseleistung (Latenz und Durchsatz) und Konsistenzerfordernisse flexibel an die Anforderungen Ihrer Anwendung oder sogar an getrennte Bereiche innerhalb Ihrer Anwendung anzupassen.
Mit Amazon SimpleDB ist es ebenso wichtig, was der Dienst nicht von Ihnen erfordert. Amazon SimpleDB verwaltet automatisch die Bereitstellung von Infrastruktur, Hardware- und Softwareverwaltung, Replizierung und Indizierung von Daten sowie Leistungsabstimmung.Beide Dienste sind nicht-relationale Datenbanken, welche die Aufgaben einer Datenbankverwaltung überflüssig machen. Amazon DynamoDB legt den Schwerpunkt auf nahtlose Skalierbarkeit und schnelle, transparente Leistungen. Er funktioniert mit Solid-State-Disks (SSDs) für Reaktionszeiten mit niedriger Latenz. Es gibt keine Einschränkungen bei der Anfragekapazität oder der Speichergröße für eine bestimmte Tabelle. Dies liegt daran, dass Amazon DynamoDB Ihre Daten und Arbeitslast automatisch auf eine ausreichende Anzahl von Servern verteilt, um Ihre Skalierungsbedürfnisse zu erfüllen. Dagegen weisen Tabellen in der Amazon SimpleDB eine strikte Speichergrenze von 10 GB auf und sind auf die erreichbare Anfragekapazität beschränkt (üblicherweise weniger als 25 Schreibvorgänge pro Sekunde). Es ist Ihre Aufgabe, die Partitionierung und erneute Partitionierung Ihrer Daten mithilfe zusätzlicher SimpleDB-Tabellen vorzunehmen, falls Sie eine weitere Skalierung benötigen. Auch wenn die SimpleDB bei der Skalierung Einschränkungen aufweist, eignet sie sich gut für kleinere Arbeitslasten, bei denen flexible Anfragen benötigt werden. Amazon SimpleDB indiziert automatisch alle Elementattribute und unterstützt so eine umfassendere Anfragefunktion auf Kosten von Leistung und Größe.
Auf der Seite Betreiben von Datenbanken mit AWS erfahren Sie mehr darüber, welche Lösung am besten für Sie geeignet ist.
AWS bietet eine Reihe verschiedener Datenbanklösungen für Entwickler an. Amazon SimpleDB bietet einfache Index- und Anfragekapazitäten. Mit Amazon RDS können Sie eine relationale Datenbank mit vollem Funktionsumfang, aber ohne den üblichen Verwaltungsaufwand betreiben. Wenn Sie eines unserer zahlreichen relationalen Datenbank-AMIs unter Amazon EC2 und Amazon EBS nutzen, können Sie Ihre eigene relationale Datenbank in der Cloud betreiben. 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 erfahren Sie mehr darüber, welche Lösung am besten für Sie geeignet ist.
Amazon S3 speichert Rohdaten. Amazon SimpleDB übernimmt Ihre Daten als Eingang und indiziert alle Attribute, was Ihnen schnelle Abfragen dieser Daten ermöglicht. 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-Dienstleistungen 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 Dienstleistungen 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 Dienstleistungen in ihre Anwendungen integrieren. Um mehr über die Vorteile der gemeinsamen Verwendung von Amazon SimpleDB und Amazon S3 zu erfahren, folgen Sie diesem Link.
Das Amazon SimpleDB Datenmodell setzt sich aus Domänen, Elementen, Attributen und Werten zusammen. 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.
| 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 |
Es sind verschiedene Faktoren zu berücksichtigen, die von der betreffenden Anwendung abhängen. So möchten Sie Ihre Daten möglicherweise in einer Region speichern, die ...
Amazon SimpleDB unterstützt zwei Lesekonsistenzoptionen: "Eventually Consistent Reads" und "Consistent Reads".
Eventually Consistent Reads (Standard) Die Option zur eventuellen Konsistenz maximiert 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). 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 zur eventuellen Konsistenz gibt Ihnen Amazon SimpleDB auch die Möglichkeit und Kontrolle zur Anforderung eines konsistenten Lesevorgangs, 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. Weitere Informationen über Konsistenzoptionen mit Amazon SimpleDB entnehmen Sie bitte dem Developer Guide.Wie bereits erwähnt, ist die Flexibilität, die Amazon SimpleDB durch Spezifizierung Ihrer Lesekonsistenz-Anforderungen bereitstellt, wichtig, da verschiedene Arten von Anwendungen und Nutzungsfälle unterschiedliche Anforderungen hinsichtlich Leistung und Konsistenz aufweisen. 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. Hier sind einige Richtlinien für Fälle, für die die Option Read Consistency am besten geeignet ist:
Eventually Consistent Reads:
Jede Anwendung (bzw. Teil einer Anwendung), die Leseleistung (Latenz und Durchsatz) höher bewertet als starke Konsistenz ist möglicherweise für eventuelle Konsistenz des Lesevorgangs gut geeignet. Auf Daten mit einem hohen Lese/Schreib-Verhältnis trifft diese Beschreibung häufig zu. Beispielsweise Freund/Follower-Listen, Foto-Tags und persönliche Details in einem Sozialen Netzwerk. Im Allgemeinen sind dies Anwendungsfälle, bei denen die Leistung (Bereitstellen einer Antwort) wichtiger als das Bereitstellen der aktuellsten Antwort ist. Ein Beispiel wäre ein Inserat-Netzwerk, bei dem es wichtiger ist, dem Benutzer das Inserat eines Inventarteils möglichst schnell anzuzeigen als das Inserat auf Grundlage der innerhalb der letzten Sekunde aktualisierten Logik anzuzeigen. Eine andere Richtlinie zur Beurteilung der Eignung eventueller Konsistenz von Lesevorgängen für Ihre Anwendung, ist, ob sie mit dem Konzept der vom Benutzer wahrgenommenen Konsistenz umgehen kann. Stellen Sie sich eine Anwendung vor, bei der es mehr um direkte Interaktion mit dem Benutzer geht als um programmatischen Zugang. Ein Beispiel wäre ein Benutzer, der ein Blog-Posting aktualisiert und Aktualisieren eingibt, oder ein anderer Benutzer, der einen Kommentar zum Blog postet. Diese Wartezeit bezeichnen wir als die vom Benutzer wahrgenommene Konsistenz – so lange die Daten vom Benutzer als konsistent wahrgenommen werden, kann die Anwendung Eventual Conistency einsetzen. In diesen Szenarien ist die Zeit, die erforderlich ist, damit ein Schreibvorgang alle Kopien der Daten erreicht, kürzer als die Zeitdifferenz, bevor der Kunde die Anzeige der neuen Daten erwartet (z. B. Aktualisierung der Seite). Wie bereits erwähnt, erreicht Amazon SimpleDB normalerweise innerhalb einer Sekunde Konsistenz. Wenn es Endbenutzern Ihrer Anwendung nicht auffällt, bzw. wenn es ihnen egal ist, ob Aktualisierungen innerhalb einer Sekunde einbezogen sind, ist Eventual Consistency wegen seiner Vorteile für die allgemeine Leseleistung sinnvoll.
Wenn ein Element aktualisiert wird, kann ein eventuell konsistenter Lesevorgang den aktuellen Wert oder den alten Wert retournieren. Wenn ein Element eingesetzt wird, retourniert ein eventuell konsistenter Lesevorgang das Element möglicherweise nicht.
Consistent Reads:
Abhängig von Ihrer Anwendung, muss Benutzern, die ein Datenelement lesen, aus vielen gleichzeitigen Schreibaktualisierungen die zuletzt aktualisierte Version angezeigt werden. Beispielsweise könnten Sie eine Statistik- oder Protokollanwendung ausführen, bei der Sie nicht riskieren möchten, dass ein aktueller Schreibvorgang nicht in den Ergebnissen eines GetAttributes-Abrufs oder einer Select-Anfrage enthalten ist. In diesen Fällen führt das Übergeben des Parameters "ConsistentRead = True" zu konsistenten Ergebnissen.
Speichern des In-Memory-Status der Anwendung in SimpleDB ist ein weiteres Beispiel. Wenn sich der Wert des Anwendungsstatus ändert, kann die Anwendung SimpleDB aktualisieren. Wenn die Anwendung herunterfährt und neu gestartet werden muss, kann die Anwendung einen konsistenten GetAttributes- oder Select-Abruf zu SimpleDB durchführen, um den letzten aktualisierten Status der Anwendung zu erhalten.
Weitere Informationen über Konsistenz mit Amazon SimpleDB entnehmen Sie bitte dem Amazon SimpleDB Developer Guide oder dem Consistency Enhancements Whitepaper.
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 mit Amazon SimpleDB entnehmen Sie bitte dem Amazon SimpleDB Developer Guide.
Der Einstieg in SimpleDB ist kostenlos und ohne Risiko. Im Rahmen des Gratisprogramms sind die ersten 25 Maschinenstunden, GB Speicherplatz und 1 GB ausgehende Datenübertragung jeden Monat kostenlos. Bei Amazon SimpleDB zahlen Entwickler nur für ihre tatsächliche Nutzung. Es gibt keine Mindestgebühr.
Um eine vollständige Übersicht der Amazon SimpleDB Preise anzuzeigen, klicken Sie bitte hier.
Die folgenden Beispiele beziehen sich auf Gebühren für eine Nutzung, die über die Gratisnutzung (s. o.) hinausgeht. Wie bereits erläutert, ist eine Nutzung, die das monatliche kostenlose Nutzungskontingent unterschreitet, kostenlos.
Maschinenauslastung:
Amazon SimpleDB misst die Maschinenauslastung für jede einzelne Anfrage sowie die auf der Höhe der verwendeten Maschinenkapazität basierenden Gebühren. Auf Grundlage dieser Daten wird die betreffende Anfrage (QUERY, GET, PUT usw.) abschließend bearbeitet und auf die Stundenkapazität eines etwa 1,7-GHz-Xeon-Prozessors von 2007 normiert. Die Maschinenauslastung hängt von der pro Anfrage 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 QUERY-Vorgang mit mehreren Prädikaten, bei dem mehr als 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 Anfragen gibt Amazon SimpleDB das Feld "Box-Usage" an. Box-Usage bezeichnet die Menge der pro Anfrage verwendeten Maschinenressourcen. Bandbreite und Speicher sind darin nicht enthalten. Box-Usage ist der Teil einer Maschinenstunde, der zur Bearbeitung einer bestimmten Anfrage benötigt wird. In den Regionen USA Ost (Nord-Virginia) und USA West (Oregon) berechnen sich die Kosten einer einzelnen Anfrage aus Box-Usage (in Stunden) * 0,14 USD pro Amazon SimpleDB-Maschinenstunde. Die Kosten aller Anfragen 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 Anfragen 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 Abfragedomänen in der Region EU (Irland), der Region Asien-Pazifik (Singapur), der Region Asien-Pazifik (Sydney) oder der Region US West (Northern California) befinden, beläuft sich der Preis für eine Amazon SimpleDB-Maschinenstunde auf 0,154 USD. Wenn sich Ihre Abfragedomänen in der Region Asien-Pazifik (Tokio) befinden, beläuft sich die SimpleDB-Maschinenstunde auf 0,162 USD pro Maschinenstunde. Falls sich Ihre Abfragedomänen in der Region Südamerika (Sao Paulo) befinden, beläuft sich die SimpleDB-Maschinenstunde auf 0,19 USD pro Amazon SimpleDB-Maschinenstunde. Alle Kostenkalkulationen sollten so angepasst werden, dass sie die Preise der entsprechenden Region wiedergeben.
Datenübertragung Beispiel:
Sie übertragen im Monat März in der Region US East (Northern Virginia) täglich 500 MB aus Amazon SimpleDB.
Gesamthöhe der ausgehenden Datenübertragung für den Monat = 500 MB x (1 GB / 1.024 MB) x 31 Tage = 15,14 GB
Gesamtgebühren = 15,14 GB x (0,12 USD / GB) = 1,82 USD
Speicherung
Im Folgenden wird die beste Möglichkeit beschrieben, wie die Größe der strukturierten Datenspeicherung 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 Region 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) 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,29 USD. Für die Region Südamerika (Sao Paulo) multiplizieren Sie die ermittelte Größe in GB mit 0,34 USD.
In Regionen, in den uns niedrigere Kosten entstehen, erheben wir auch niedrigere Gebühren. Beispielsweise sind unsere Kosten in der Region Northern Virginia niedriger als in der Region Northern California. Gleichermaßen sind unser Bandbreitenkosten in der Region Singapur höher als in der Region Northern California.
Sie organisieren Ihre strukturierten Daten in Domänen und können Abfragen zu allen in einer bestimmten Domäne gespeicherten Daten vornehmen. Domänen bestehen aus Elementen. Elemente werden durch Attributwertpaare beschrieben. Dies soll am Beispiel einer Tabelle veranschaulicht werden. Eine Amazon SimpleDB-Domäne ist mit einem Arbeitsblatt in Form einer Tabelle zu vergleichen. Die Elemente sind dabei die Datenzeilen und die Attribute die Spaltenüberschriften. Die Werte sind die Daten, die in die einzelnen Zellen eingegeben werden.
Im Gegensatz zu einer Tabelle können in Amazon SimpleDB jedoch mit jeder "Zelle" mehrere Werte verknüpft werden (z. B. kann das Attribut "Farbe" für das Element "123" sowohl den Wert "blau" als auch den Wert "rot" annehmen). In Amazon SimpleDB kann zudem jedes Element einen eindeutigen Satz an verknüpften Attributen besitzen (z. B. kann das Element "123" die Attribute "Beschreibung" und "Farbe" haben, während das Element "789" die Attribute "Beschreibung", "Farbe" und "Material" hat). Amazon SimpleDB nimmt automatisch eine Indizierung Ihrer Daten vor, sodass benötigte Informationen schnell gefunden werden können. Die Vordefinierung eines Schemas bzw. die Änderung eines Schemas beim späteren Hinzufügen neuer Daten ist nicht erforderlich.Zur Sicherstellung einer durchgängig hohen Leistung wird Amazon SimpleDB in den hochverfügbaren Rechenzentren von Amazon ausgeführt. Damit keine Daten verloren gehen oder nicht mehr verfügbar sind, werden die vollständig indizierten Daten redundant auf mehreren Servern und in mehreren Rechenzentren gespeichert. Die Zuverlässigkeit ist in allen Amazon SimpleDB-Regionen konsistent.
Jeder kann Amazon SimpleDB verwenden. Sie müssen sich lediglich dafür entscheiden, in welcher Region Amazon SimpleDB Ihre Daten speichern soll.