Batch-Anweisungen in Amazon Keyspaces verwenden - Amazon Keyspaces (für Apache Cassandra)

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.

Batch-Anweisungen in Amazon Keyspaces verwenden

Sie können mehrere INSERTUPDATE, und DELETE Operationen zu einer BATCH Anweisung kombinieren. LOGGEDBatches sind die Standardeinstellung.

batch_statement ::= BEGIN [ UNLOGGED ] BATCH [ USING update_parameter( AND update_parameter)* ] modification_statement ( ';' modification_statement )* APPLY BATCH modification_statement ::= insert_statement | update_statement | delete_statement

Wenn Sie eine Batch-Anweisung ausführen, fasst der Treiber alle Anweisungen im Batch zu einem einzigen Batch-Vorgang zusammen.

Bei der Entscheidung, welche Art von Batch-Operation verwendet werden soll, können Sie die folgenden Richtlinien berücksichtigen.

Verwenden Sie protokollierte Batches, wenn:
  • Sie benötigen atomare Transaktionsgarantien.

  • Etwas höhere Latenzen sind ein akzeptabler Kompromiss.

Verwenden Sie nicht protokollierte Batches in folgenden Fällen:
  • Sie müssen den Betrieb einzelner Partitionen optimieren.

  • Sie möchten den Netzwerk-Overhead reduzieren.

  • Sie haben Anforderungen an einen hohen Durchsatz.

Informationen zu Kontingenten für Batch-Kontoauszüge finden Sie unterKontingente für Amazon Keyspaces (für Apache Cassandra).

Nicht protokollierte Batches

Bei nicht protokollierten Batches verarbeitet Amazon Keyspaces mehrere Operationen als eine einzige Anfrage, ohne ein Batch-Protokoll zu führen. Bei einem nicht protokollierten Batch-Vorgang ist es möglich, dass einige der Aktionen erfolgreich sind, während andere fehlschlagen. Nicht protokollierte Batches sind nützlich, wenn Sie:

  • Optimieren Sie die Abläufe innerhalb einer einzelnen Partition.

  • Reduzieren Sie den Netzwerkverkehr, indem Sie verwandte Anfragen gruppieren.

Die Syntax für einen nicht protokollierten Batch ähnelt der eines protokollierten Batches, mit dem Zusatz des UNLOGGED Schlüsselworts.

BEGIN UNLOGGED BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith'); APPLY BATCH;

Protokollierte Batches

Ein protokollierter Batch kombiniert mehrere Schreibaktionen zu einer einzigen atomaren Operation. Wenn Sie einen protokollierten Batch ausführen:

  • Alle Aktionen sind entweder gemeinsam erfolgreich oder schlagen gemeinsam fehl.

  • Die Operation ist synchron und idempotent.

  • Sie können in mehrere Amazon Keyspaces-Tabellen schreiben, sofern sie sich im selben AWS Konto befinden und AWS-Region.

Protokollierte Batches können etwas höhere Latenzen aufweisen. Für Anwendungen mit hohem Durchsatz sollten Sie die Verwendung nicht protokollierter Batches in Betracht ziehen.

Für die Verwendung protokollierter Batches in Amazon Keyspaces fallen keine zusätzlichen Kosten an. Sie zahlen nur für die Schreibvorgänge, die Teil Ihrer Batch-Operationen sind. Amazon Keyspaces führt zwei grundlegende Schreibvorgänge für jede Zeile im Batch durch: einen, um die Zeile für den Batch vorzubereiten, und einen, um den Batch zu übergeben. Denken Sie bei der Kapazitätsplanung für Tabellen, die protokollierte Batches verwenden, daran, dass jede Zeile in einem Batch die doppelte Kapazität eines Standard-Schreibvorgangs benötigt. Wenn Ihre Anwendung beispielsweise einen protokollierten Batch pro Sekunde mit drei Zeilen mit 1 KB ausführt, müssen Sie sechs Schreibkapazitätseinheiten (WCUs) bereitstellen, während es WCUs für einzelne Schreibvorgänge oder nicht protokollierte Batches nur drei sind.

Preisinformationen finden Sie unter Amazon Keyspaces (für Apache Cassandra) — Preise.

Bewährte Methoden für Batch-Operationen

Beachten Sie bei der Verwendung von Amazon Keyspaces-Batchoperationen die folgenden empfohlenen Vorgehensweisen.

  • Aktivieren Sie die automatische Skalierung, um sicherzustellen, dass Sie über eine ausreichende Durchsatzkapazität für Ihre Tabellen verfügen, um Batch-Operationen und die zusätzlichen Durchsatzanforderungen protokollierter Batches abzuwickeln.

  • Verwenden Sie einzelne Operationen oder nicht protokollierte Batches, wenn Vorgänge unabhängig voneinander ausgeführt werden können, ohne die Richtigkeit der Anwendung zu beeinträchtigen.

  • Entwerfen Sie Ihre Anwendung so, dass die Anzahl gleichzeitiger Aktualisierungen derselben Zeilen minimiert wird, da gleichzeitige Batchvorgänge zu Konflikten führen und fehlschlagen können.

  • Verwenden Sie einzelne Schreibvorgänge oder nicht protokollierte Batches für die Massenaufnahme von Daten mit hohem Durchsatz ohne Atomizitätsanforderungen.

Konsistenz und Parallelität

Amazon Keyspaces erzwingt die folgenden Regeln für Konsistenz und Parallelität für protokollierte Batches:

  • Alle Batch-Operationen verwenden die Konsistenzstufe. LOCAL_QUORUM

  • Gleichzeitige Batches, die sich auf verschiedene Zeilen auswirken, können gleichzeitig ausgeführt werden.

  • Gleichzeitige DELETE Operationen oder Operationen an Zeilen INSERTUPDATE, die an einem laufenden Batch beteiligt sind, schlagen fehl und führen zu einem Konflikt.

Unterstützte Operatoren und Bedingungen

Unterstützte WHERE Klauseloperatoren:
  • Gleichheit (=)

Nicht unterstützte Operatoren:
  • Bereichsoperatoren (>, <, >=, < =)

  • IN-Operator

  • LIKE-Operator

  • BETWEEN-Operator

Wird in protokollierten Batches nicht unterstützt:
  • Mehrere Anweisungen, die dieselbe Zeile betreffen

  • Gegenoperationen

  • Bereich wird gelöscht

Fehlerbedingungen protokollierter Batch-Anweisungen

Ein protokollierter Batch-Vorgang kann in einem der folgenden Fälle fehlschlagen:

  • Bedingungsausdrücke (wie IF NOT EXISTS oderIF) werden als falsch ausgewertet.

  • Eine oder mehrere Operationen enthalten ungültige Parameter.

  • Die Anforderung steht in Konflikt mit einem anderen Batch-Vorgang, der in denselben Zeilen ausgeführt wird.

  • In der Tabelle fehlt es an ausreichender bereitgestellter Kapazität.

  • Eine Zeile überschreitet die maximale Größenbeschränkung.

  • Das Eingabedatenformat ist ungültig.

Batch-Anweisungen und Replikation in mehreren Regionen

In Bereitstellungen mit mehreren Regionen:

  • Operationen in der Quellregion sind synchron und atomar.

  • Operationen in der Zielregion sind asynchron.

  • Es ist garantiert, dass alle Batch-Operationen repliziert werden, wobei die Isolation während der Anwendung möglicherweise nicht aufrechterhalten wird.

Überwachen Sie Batch-Operationen

Sie können Batch-Operationen mithilfe von CloudWatch Amazon-Metriken überwachen, um Leistung, Fehler und Nutzungsmuster nachzuverfolgen. Amazon Keyspaces bietet die folgenden CloudWatch Metriken für die Überwachung von Batch-Vorgängen pro Tabelle:

  • SuccessfulRequestCount— Verfolgen Sie erfolgreiche Batch-Operationen.

  • Latency— Messen Sie die Leistung von Batch-Vorgängen.

  • ConsumedWriteCapacityUnits— Überwachen Sie den Kapazitätsverbrauch von Batch-Vorgängen.

Weitere Informationen finden Sie unter Amazon-Keyspaces-Metriken.

Zusätzlich zu den CloudWatch Metriken können Sie AWS CloudTrail alle Amazon Keyspaces-API-Aktionen protokollieren. Jede API-Aktion im Batch wird protokolliert, CloudTrail was es einfacher macht, Batch-Operationen in Ihren Amazon Keyspaces-Tabellen zu verfolgen und zu prüfen.

Beispiele für Batch-Operationen

Im Folgenden finden Sie ein Beispiel für eine grundlegende protokollierte Batch-Anweisung.

BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith'); APPLY BATCH;

Dies ist ein Beispiel für einen Batch, der INSERT UPDATE ,- und DELETE Anweisungen enthält.

BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); UPDATE users SET firstname = 'Johnny' WHERE id = 2; DELETE FROM users WHERE id = 3; APPLY BATCH;

Dies ist ein Beispiel für einen Batch, der clientseitige Zeitstempel verwendet.

BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Stiles') USING TIMESTAMP 1669069624; INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Doe') USING TIMESTAMP 1669069624; APPLY BATCH; BEGIN BATCH UPDATE users USING TIMESTAMP 1669069624 SET firstname = 'Carlos' WHERE id = 1; UPDATE users USING TIMESTAMP 1669069624 SET firstname = 'Diego' WHERE id = 2; APPLY BATCH;

Dies ist ein Beispiel für einen bedingten Batch.

BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'Jane', 'Doe') IF NOT EXISTS; INSERT INTO users (id, firstname, lastname) VALUES (2, 'John', 'Doe') IF NOT EXISTS; APPLY BATCH; BEGIN BATCH UPDATE users SET lastname = 'Stiles' WHERE id = 1 IF lastname = 'Doe'; UPDATE users SET lastname = 'Stiles' WHERE id = 2 IF lastname = 'Doe'; APPLY BATCH;

Dies ist ein Beispiel für einen Batch, der Time to Live (TTL) verwendet.

BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe') USING TTL 3600; INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith') USING TTL 7200; APPLY BATCH;

Dies ist ein Beispiel für eine Batch-Anweisung, die mehrere Tabellen aktualisiert.

BEGIN BATCH INSERT INTO users (id, firstname) VALUES (1, 'John'); INSERT INTO user_emails (user_id, email) VALUES (1, 'john@example.com'); APPLY BATCH;

Dies ist ein Beispiel für eine Batch-Operation mit benutzerdefinierten Typen (UDTs). Das Beispiel geht davon aus, dass die UDT existiert. address

BEGIN BATCH INSERT INTO users (id, firstname, address) VALUES (1, 'John', {street: '123 Main St', city: 'NYC', zip: '10001'}); INSERT INTO users (id, firstname, address) VALUES (2, 'Jane', {street: '456 Oak Ave', city: 'LA', zip: '90210'}); APPLY BATCH; BEGIN BATCH UPDATE users SET address.zip = '10002' WHERE id = 1; UPDATE users SET address.city = 'Boston' WHERE id = 2; APPLY BATCH;