Übersicht über DynamoDB - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Übersicht über DynamoDB

Amazon DynamoDB ist eine NoSQL-Schlüsselwert- und Dokumentdatenbank, die schnelle und planbare Leistung nahtlos skalierbar bereitstellt. Es ist eine vollständig verwaltete, regionenübergreifende, multiaktive und langlebige Datenbank. (Die globale Tabellenfunktion in DynamoDB synchronisiert Änderungen, die in einerAWS Region vorgenommen wurden, automatisch mit allen anderen ausgewählten Regionen, um multiaktive Unterstützung zu bieten.) DynamoDB verfügt über integrierte Sicherheitsfunktionen, Sicherungs- und Wiederherstellungsoptionen sowie In-Memory-Caching für internetfähige Anwendungen.

Die schemalose Natur von NoSQL-Datenbanken trägt dazu bei, die Zeit und den Prozess zu reduzieren, die erforderlich sind, um eine Datenbankänderung (Leseschema) in die Produktion zu bringen, und ermöglicht so eine schnelle Anwendungsentwicklung (RAD). NoSQL-Datenbanken wie DynamoDB sind für leistungsstarke Lese-/Schreibvorgänge konzipiert.

Funktionen und Vorteile

DynamoDB bietet die folgenden Funktionen und Vorteile:

  • Keine zu verwaltenden Server — DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankdienst, was bedeutet, dass kein Serverwartungsaufwand anfällt.

  • Schemaless — DynamoDB unterstützt die schnelle Entwicklung und Bereitstellung von Anwendungen.

  • Skalierbare Leistung — DynamoDB bietet schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit.

  • ACID-Unterstützung — DynamoDB unterstützt Atomicity, Konsistenz, Isolation und Durability (Atomicity, Isolation, Isolation, Isolation, Consistency, Isolation, Isolation, Isolation, Isolation, Durability, Atomicity, Isolation

  • Hohe Verfügbarkeit und Beständigkeit — Ihre Daten werden auf Solid State Disks (SSDs) gespeichert und automatisch über mehrere Availability Zones in einerAWS -Region repliziert, um integrierte Hochverfügbarkeit und Datenhaltbarkeit bereitzustellen.

  • Automatische Skalierung — DynamoDB verwendet denAWS Application Auto Scaling Service, um die bereitgestellte Durchsatzkapazität als Reaktion auf Datenverkehrsmuster dynamisch anzupassen.

  • Flexible Preisoptionen — DynamoDB bietet zwei Kapazitätsmodi mit spezifischen Abrechnungsoptionen: den Modus der On-Demand-Kapazität und den Modus bereitgestellter Kapazität.

  • oint-in-time P-Wiederherstellung — Sie können kontinuierliche Backups mithilfe von point-in-time Recovery aktivieren, um Ihre Tabellen vor versehentlichen Schreib- oder Löschvorgängen zu schützen und Ihre Tabellen zu einem beliebigen Zeitpunkt der letzten 35 Tage wiederherzustellen.

  • Time to Live (TTL) — Sie können Elemente nach einer bestimmten Dauer automatisch aus einer DynamoDB-Tabelle löschen.

  • Globale Tabellen — Sie können mehrere Replikate regionsübergreifendAWS bereitstellen, ohne Ihre eigene Replikationslösung erstellen zu müssen.

  • Globale sekundäre Indizes — Sie können Ihre DynamoDB-Tabelle abfragen, indem Sie Partitions- und Sortierschlüssel verwenden, die sich von den eigenen Partitions- und Sortierschlüsseln der Tabelle unterscheiden.

  • DAX — Der Caching-Dienst DynamoDB Accelerator (DAX) bietet Reaktionszeiten unter einer Millisekunde für Leseoperationen.

  • DynamoDB Streams — Diese Funktion stellt eine zeitlich geordnete Abfolge von Änderungen auf Elementebene in einem Protokoll bereit, um die Nachverfolgung und Benachrichtigung über Änderungen in DynamoDB-Tabellen in Echtzeit zu unterstützen.

Weitere Informationen zu diesen Vorteilen finden Sie auf derAWS Website unter Amazon DynamoDB DynamoDB-Funktionen. In den folgenden Abschnitten werden einige der Funktionen beschrieben, die für die Modernisierung Ihrer Datenbank-Workloads durch die Migration von einem RDBMS zu DynamoDB relevant sind.

Partitionsschlüssel

DynamoDB ist schemallos, daher müssen nicht alle Attribute für eine Tabelle definiert werden. Das Partitionsschlüsselattribut ist erforderlich und der Sortierschlüssel optional. Die restlichen Attribute sind beliebig und können je nach Artikel variieren. Wir empfehlen, einen Partitionsschlüssel mit hoher Kardinalität zu wählen, damit sich häufig aufgerufene Elemente nicht auf derselben Partition befinden. Diese Vorgehensweise hilft Ihnen, Ungleichgewichte beim Datenzugriff und heiße Partitionen zu vermeiden. Weitere Informationen finden Sie unter Bewährte Methoden für das Entwerfen und die effektive Verwendung von Partitionsschlüsseln in der DynamoDB-Dokumentation.

Indizes

Indexe ermöglichen Ihnen den Zugriff auf alternative Abfragemuster und können Abfragen beschleunigen. Sie sollten Indizes sorgfältig erstellen, unabhängig davon, ob Sie eine relationale Datenbank oder DynamoDB verwenden. Bei jedem Schreibvorgang in einer Tabelle müssen alle Indexe für diese Tabelle aktualisiert werden.

Ein globaler sekundärer Index enthält eine Auswahl von Attributen aus der Basistabelle. Diese sind jedoch nach einem Primärschlüssel organisiert, der sich vom Primärschlüssel der Tabelle unterscheidet. In DynamoDB sind globale sekundäre Indizes standardmäßig spärlich. Das heißt, der Sortierschlüssel ist optional und erscheint nicht in jedem Tabellenelement. Um diese Funktion zu nutzen, können Sie globale sekundäre Indizes erstellen, die nur die erforderlichen Attribute speichern und projizieren. Sie können bis zu 20 globale sekundäre Indexe in einer DynamoDB-Tabelle speichern. Weitere Informationen zu diesem Feature finden Sie unter Verwenden von globalen sekundären Indexen in DynamoDB in der DynamoDB-Dokumentation.

Zeit zum Leben

Sie können eine Time to Live (TTL) -Eigenschaft für eine DynamoDB-Tabelle festlegen, um einen Zeitstempel pro Element (Datensatz) zu definieren, um anzugeben, wann ein Element nicht mehr benötigt wird. Kurz nach dem angegebenen Zeitstempel löscht DynamoDB das Element aus der Tabelle, ohne zusätzliche Kapazitätseinheiten zu verbrauchen. Weitere Informationen zu dieser Funktion finden Sie unter Expiring items by using DynamoDB Time to Live in der DynamoDB-Dokumentation.

Preismodelle

DynamoDB bietet zwei Preismodelle zur Auswahl: bereitgestellte Kapazität und On-Demand-Kapazität. Ihre Wahl des Preismodells hängt von Ihren prognostizierten Workloads ab.

Preismodell Art der Arbeitslast Kosten Lese-/Schreibdurchsatz
Bereitgestellte Kapazität Vorhersagbar Niedriger

Sie geben die Anzahl der Lese-/Schreibvorgänge pro Sekunde als Lesekapazitätseinheiten (RCUs) und als Schreibkapazitätseinheiten (WCUs) an. Beispiel:

  • Bei einem Element mit einer Größe von bis zu 4 KB kann 1 RCU 2 Eventually Consistent-Lesevorgänge pro Sekunde ausführen.

  • Bei einem Element mit einer Größe von bis zu 1 KB kann 1 WCU 2 Eventually Consistent-Lesevorgänge pro Sekunde ausführen.

Sie können die automatische Skalierung aktivieren, um die Kapazität an Verkehrsänderungen anzupassen.

Kapazität auf Abruf Dynamisch Höher

Sie geben keine Durchsatzanforderungen an. DynamoDB passt sich Ihren Workloads automatisch an.

Ihnen werden die Lese- und Schreibvorgänge, die Ihre Anwendung in Ihren Tabellen durchführt, als Leseanforderungseinheiten und als Schreibanforderungseinheiten in Rechnung gestellt. Beispiel:

  • Ein 8-KB-Objekt benötigt 1 Leseanforderungseinheit für eine letztendlich konsistente Lese- und 8 Schreibanforderungseinheiten für eine nicht transaktionale Schreiboperation.

Weitere Informationen zu diesen beiden Modellen finden Sie unter Lese-/Schreibkapazitätsmodus in der DynamoDB-Dokumentation.

Transaktionen

DynamoDB unterstützt ACID (Atomicity, Consistency, Isolation, Isolation, Isolation, Isolation, Isolation, Isolation, Consistency, Isolation, Isolation, Isolation, Isolation, Isolation,AWS Isolation, IsolationAWS, Isolation

Um Änderungen an mehreren Elementen innerhalb und zwischen Tabellen zu verwalten, können Sie die TransaktionsTransactWriteItems - undTransactGetItems APIs von DynamoDB verwenden.

  • TransactWriteItemsist eine Batch-Operation, die einen Schreibsatz mit einer oder mehrerenPutItemUpdateItem, undDeleteItem Aktionen enthält. TransactWriteItemskann optional überprüfen, ob die Voraussetzungen erfüllt sein müssen, bevor Aktualisierungen vorgenommen werden. Diese Bedingungen können dieselben Elemente wie die im Schreibsatz oder verschiedene Elemente beinhalten. Wenn eine Bedingung nicht erfüllt ist, wird die Transaktion abgelehnt.

  • TransactGetItemsist eine Batch-Operation, die einen Lesesatz mit einer oder mehrerenGetItem Aktionen enthält. Wenn Sie eineTransactGetItems Anfrage für ein Element stellen, das Teil einer aktiven Schreibtransaktion ist, wird die Lesetransaktion storniert. Um den zuvor festgelegten Wert abzurufen, können Sie einen Standard-Lesevorgang verwenden.

Weitere Informationen zu diesen APIs finden Sie in der DynamoDB-Dokumentation unter Amazon DynamoDB-Transaktionen: So funktioniert es.

Einschränkungen

Für transaktionale DynamoDB-API-Operationen gelten die folgenden Einschränkungen:

  • Eine Transaktion kann nicht mehr als 100 eindeutige Elemente aktualisieren.

  • Eine Transaktion darf nicht mehr als 4 MB Daten enthalten.

  • Zwei Aktionen gleichzeitig dürfen nicht auf dasselbe Element in der derselben Tabelle einwirken. Beispielsweise können Sie in einer Transaktion nichtConditionCheck sowohlUpdate AND-Aktionen für denselben Artikel ausführen.

  • Eine Transaktion kann nicht auf Tabellen in mehr als einem AWS-Konto oder mehr als einer -Region einwirken.

  • Transaktionsoperationen bieten ACID-Garantien nur innerhalb derAWS Region, in der der Schreibvorgang ursprünglich stattfindet. Regionsübergreifende Transaktionen werden in globalen Tabellen nicht unterstützt.

  • Das Objektpersistenzmodell unterstützt keine Transaktionen. Um die Transaktionsfunktion verwenden zu können, müssen Sie mithilfe der DynamoDB-Low-Level-API auf die Datenbank und die Tabellen zugreifen.

Große Komponenten

DynamoDB hat eine Größenbeschränkung von 400 KB für jedes Element. Dieses Limit umfasst sowohl den Attributnamen (binäre Länge mit UTF-8-Codierung) als auch den Attributwert (ebenfalls binäre Länge). Der Attributname wird bei der Größenbeschränkung berücksichtigt. Stellen Sie sich beispielsweise ein Element mit zwei Attributen vor: ein Attribut mit dem Namen „Country-Code“ mit dem Wert „IN“ und ein weiteres Attribut namenscountry-phone-prefix "" mit dem Wert „91". Die Gesamtgröße dieses Elements beträgt 36 Byte.

Problemumgehung

Wenn ein Element mit vielen Attributen und Eigenschaften oder einer großen Datenmenge verknüpft ist, kann seine Größe 400 KB überschreiten. In diesem Fall können Sie das serialisierte Element in Amazon Simple Storage Service (Amazon S3) im JSON-Format speichern und die Amazon S3-Position als Attribut (S3Location) in dem Element speichern. Lese- und Schreibvorgänge für dieses Element rufen das S3-Objekt ab und aktualisieren die JSON-Zeichenfolge. Der Primärschlüssel, der Sortierschlüssel und alle Attribute, die von lokalen Indizes und globalen Sekundärindizes verwendet werden, sollten zusammen mit demS3Location Attribut in der Tabelle gespeichert werden. Dies erfordert zusätzliche Logik in der Anwendung (Datenzugriffsebene), um nach demS3Location Attribut zu suchen und die vollständigen Artikeldaten von Amazon S3 abzurufen.

Backup und Backup

Die Unterstützung von Backup- und Wiederherstellungsfunktionen wird in jeder Datenbank häufig erwartet. DynamoDB unterstützt von Haus aus Sicherungs- und Wiederherstellungsvorgänge innerhalb desselben Kontos, Sie können jedoch mithilfe anderer Optionen oder Prozesse Tabellen für mehrere Konten kopieren. Diese Prozesse verbrauchen keine Lese-/Schreibkapazitätseinheiten. Weitere Informationen finden Sie im Leitfaden Kontoübergreifende Optionen zum Kopieren vollständiger Tabellen für Amazon DynamoDB auf derAWS Prescriptive Guidance-Website.

Einschränkungen

DynamoDB unterstützt derzeit die kontoübergreifende Sicherung und Wiederherstellung mithilfe AWS Backup, das Konto muss jedoch Teil derselben Organisation sein. Sie können diese Einschränkung beheben, indem Sie eine der folgenden Lösungen anwenden:

Sprach- und SDK-Unterstützung

Die AWSSDKs bieten eine vereinfachte Programmierschnittstelle fürAWS Dienste und Unterstützung für .NET, Java JavaScript, Node.js, Python, PHP und Ruby.

Sie können aus drei Mustern wählen, um mithilfe einesAWS SDK auf DynamoDB-Tabellen zuzugreifen: Objektpersistenzmodell (High-Level-Schnittstelle), Dokumentschnittstellen und Low-Level-Schnittstellen. Weitere Informationen finden Sie unter Zugriffsmuster weiter unten in diesem Leitfaden.