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.
Effizienter Massenbetrieb
Wann sollte dieses Muster verwendet werden
Diese Muster sind nützlich, um Massenaktualisierungen für DynamoDB-Elemente effizient durchzuführen.
DynamoDB-Shell ist kein Anwendungsfall, der für die Produktion unterstützt wird.
TransactWriteItems
— bis zu 100 einzelne Updates mit oder ohne Bedingungen, die als Alles-oder-Nichts-ACID-Paket ausgeführt werdenKompromiss — Es wird zusätzlicher Durchsatz verbraucht, 2 WCUs pro 1 KB Schreibvorgang.
PartiQL
BatchExecuteStatement
— bis zu 25 Updates mit oder ohne BedingungenKompromiss — Zusätzliche Logik ist erforderlich, um Anfragen in Batches von 25 zu verteilen.
AWS Step Functions — Massenoperationen mit begrenzter Geschwindigkeit für Entwickler, die damit vertraut sind. AWS Lambda
Kompromiss — Die Ausführungszeit ist umgekehrt proportional zur Ratenbegrenzung. Limitiert durch das maximale Timeout der Lambda-Funktion. Die Funktionalität beinhaltet, dass Datenänderungen, die zwischen dem Lesen und dem Schreiben auftreten, überschrieben werden können. Weitere Informationen finden Sie unter Backfilling eines Amazon DynamoDB-Time-to-Live-Attributs mithilfe von Amazon EMR
: Teil 2. -
AWS Glue und Amazon EMR — ratenbegrenzter Massenbetrieb mit verwalteter Parallelität. Bei Anwendungen oder Updates, die nicht zeitkritisch sind, können diese Optionen im Hintergrund ausgeführt werden und verbrauchen nur einen kleinen Prozentsatz des Durchsatzes. Beide Dienste verwenden die emr-dynamodb-connector, um DynamoDB-Operationen auszuführen. Diese Dienste führen umfangreiche Lesevorgänge aus, gefolgt von umfangreichen Schreibvorgängen an aktualisierten Elementen mit einer Option zur Ratenbegrenzung.
Kompromiss — Die Ausführungszeit ist umgekehrt proportional zum Ratenlimit. Die Funktionalität beinhaltet, dass Datenänderungen, die zwischen dem Lesen und dem Schreiben auftreten, überschrieben werden können. Sie können nicht aus globalen sekundären Indizes () GSIs lesen. Weitere Informationen finden Sie unter Backfilling eines Amazon DynamoDB-Time-to-Live-Attributs mithilfe von Amazon EMR
: Teil 2. -
DynamoDB Shell — ratenbegrenzte Massenoperationen mit SQL-ähnlichen Abfragen. Aus Effizienzgründen können Sie von dort lesen. GSIs
Kompromiss — Die Ausführungszeit ist umgekehrt proportional zum Ratenlimit. Weitere Informationen finden Sie unter Mengenoperationen mit begrenzter Rate in DynamoDB Shell
.
Das Muster verwenden
Massenaktualisierungen können erhebliche Auswirkungen auf die Kosten haben, insbesondere wenn Sie den On-Demand-Durchsatzmodus verwenden. Es gibt einen Kompromiss zwischen Geschwindigkeit und Kosten, wenn Sie den bereitgestellten Durchsatzmodus verwenden. Wenn Sie den Parameter für das Ratenlimit sehr streng festlegen, kann dies zu einer sehr langen Verarbeitungszeit führen. Anhand der durchschnittlichen Artikelgröße und der Ratenbegrenzung können Sie die Geschwindigkeit der Aktualisierung grob bestimmen.
Alternativ können Sie anhand der erwarteten Dauer des Aktualisierungsvorgangs und der durchschnittlichen Artikelgröße den für den Vorgang erforderlichen Durchsatz ermitteln. Die zu den einzelnen Mustern gehörenden Blog-Referenzen enthalten Einzelheiten zur Strategie, Implementierung und Einschränkungen bei der Verwendung des Musters. Weitere Informationen finden Sie unter Kostengünstige Massenverarbeitung mit Amazon DynamoDB
Es gibt mehrere Möglichkeiten, Massenaktualisierungen für eine dynamische DynamoDB-Tabelle durchzuführen. Der geeignete Ansatz hängt von Faktoren wie den Anforderungen an die and/or ACID-Idempotenz, der Anzahl der zu aktualisierenden Elemente und der Vertrautheit mit ihnen ab. APIs Es ist wichtig, den Kompromiss zwischen Kosten und Zeit zu berücksichtigen. Die meisten der oben erläuterten Ansätze bieten die Möglichkeit, den vom Massenaktualisierungsauftrag verwendeten Durchsatz zu begrenzen.