Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa le istruzioni batch in Amazon Keyspaces
Puoi combinare più INSERT DELETE operazioni e in un'UPDATEunica dichiarazione. BATCH LOGGEDi batch sono l'impostazione predefinita.
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
Quando si esegue un'istruzione batch, il driver combina tutte le istruzioni del batch in un'unica operazione batch.
Per decidere quale tipo di operazione batch utilizzare, è possibile prendere in considerazione le seguenti linee guida.
- Utilizzate i batch registrati quando:
-
-
Avete bisogno di garanzie atomiche sulle transazioni.
-
Latenze leggermente più elevate sono un compromesso accettabile.
-
- Utilizza batch non registrati quando:
-
-
È necessario ottimizzare le operazioni a partizione singola.
-
Vuoi ridurre il sovraccarico della rete.
-
Hai requisiti di throughput elevati.
-
Per informazioni sulle quote delle dichiarazioni in batch, vedere. Quote per Amazon Keyspaces (per Apache Cassandra)
Batch non registrati
Con i batch non registrati, Amazon Keyspaces elabora più operazioni come un'unica richiesta senza mantenere un registro batch. Con un'operazione batch non registrata, è possibile che alcune azioni abbiano successo mentre altre falliscano. I batch non registrati sono utili quando si desidera:
-
Ottimizza le operazioni all'interno di una singola partizione.
-
Riduci il traffico di rete raggruppando le richieste correlate.
La sintassi per un batch non registrato è simile a quella di un batch registrato, con l'aggiunta della parola chiave. UNLOGGED
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;
Batch registrati
Un batch registrato combina più azioni di scrittura in un'unica operazione atomica. Quando si esegue un batch registrato:
-
Tutte le azioni hanno successo insieme o falliscono insieme.
-
L'operazione è sincrona e idempotente.
-
Puoi scrivere su più tabelle Amazon Keyspaces, purché si trovino nello stesso AWS account e. Regione AWS
I batch registrati possono avere latenze leggermente superiori. Per applicazioni ad alto rendimento, prendi in considerazione l'utilizzo di batch non registrati.
Non sono previsti costi aggiuntivi per l'utilizzo di batch registrati in Amazon Keyspaces. Paghi solo per le scritture che fanno parte delle tue operazioni in batch. Amazon Keyspaces esegue due scritture sottostanti per ogni riga del batch: una per preparare la riga per il batch e una per eseguire il commit del batch. Quando pianifichi la capacità per le tabelle che utilizzano batch registrati, ricorda che ogni riga di un batch richiede una capacità doppia rispetto a un'operazione di scrittura standard. Ad esempio, se l'applicazione esegue un batch registrato al secondo con tre righe da 1 KB, è necessario fornire sei unità di capacità di scrittura (WCUs) rispetto alle sole tre WCUs per singole scritture o batch non registrati.
Per informazioni sui prezzi, consulta i prezzi di Amazon Keyspaces (per Apache Cassandra
Le migliori pratiche per le operazioni in batch
Prendi in considerazione le seguenti pratiche consigliate per l'utilizzo di operazioni batch di Amazon Keyspaces.
-
Abilita il ridimensionamento automatico per assicurarti di disporre di una capacità di throughput sufficiente per consentire alle tabelle di gestire le operazioni in batch e i requisiti di throughput aggiuntivi dei batch registrati.
-
Utilizzate operazioni singole o batch non registrati quando le operazioni possono essere eseguite indipendentemente senza influire sulla correttezza dell'applicazione.
-
Progetta l'applicazione in modo da ridurre al minimo gli aggiornamenti simultanei alle stesse righe, poiché le operazioni batch simultanee possono entrare in conflitto e fallire.
-
Per l'ingestione di grandi quantità di dati ad alta velocità senza requisiti di atomicità, utilizzate operazioni di scrittura individuali o batch non registrati.
Coerenza e concorrenza
Amazon Keyspaces applica le seguenti regole di coerenza e concorrenza per i batch registrati:
-
Tutte le operazioni in batch utilizzano il livello di coerenza.
LOCAL_QUORUM -
I batch simultanei che interessano righe diverse possono essere eseguiti contemporaneamente.
Le
DELETEoperazioniINSERTsimultaneeUPDATEo sulle righe coinvolte in un batch in corso hanno esito negativo a causa di un conflitto.
Operatori e condizioni supportati
- Operatori
WHEREdi clausola supportati: -
Uguaglianza (=)
- Operatori non supportati:
-
Operatori di intervallo (>, <, >=, < =)
Operatore
INOperatore
LIKEOperatore
BETWEEN
- Non supportato nei batch registrati:
-
Dichiarazioni multiple che riguardano la stessa riga
Controoperazioni
Range cancella
Condizioni di errore delle istruzioni batch registrate
Un'operazione batch registrata può fallire in uno dei seguenti casi:
-
Le espressioni condizionali (come
IF NOT EXISTSoIF) restituiscono false. -
Una o più operazioni contengono parametri non validi.
-
La richiesta è in conflitto con un'altra operazione batch in esecuzione sulle stesse righe.
-
La tabella non dispone di una capacità predisposta sufficiente.
-
Una riga supera il limite massimo di dimensione.
-
Il formato dei dati di input non è valido.
Istruzioni Batch e replica in più regioni
Nelle distribuzioni in più regioni:
-
Le operazioni della regione di origine sono sincrone e atomiche.
-
Le operazioni della regione di destinazione sono asincrone.
-
È garantita la replica di tutte le operazioni in batch, ma potrebbe non essere possibile mantenere l'isolamento durante l'applicazione.
Monitora le operazioni in batch
Puoi monitorare le operazioni in batch utilizzando i CloudWatch parametri di Amazon per tenere traccia di prestazioni, errori e modelli di utilizzo. Amazon Keyspaces fornisce i seguenti CloudWatch parametri per il monitoraggio delle operazioni batch per tabella:
SuccessfulRequestCount— Tieni traccia delle operazioni batch riuscite.Latency— Misura le prestazioni delle operazioni in batch.ConsumedWriteCapacityUnits— Monitora il consumo di capacità delle operazioni in batch.
Per ulteriori informazioni, consulta Parametri di Amazon Keyspaces.
Oltre ai CloudWatch parametri, puoi utilizzarli AWS CloudTrail per registrare tutte le azioni dell'API Amazon Keyspaces. Ogni azione API nel batch viene registrata, CloudTrail semplificando il monitoraggio e la verifica delle operazioni batch nelle tabelle Amazon Keyspaces.
Esempi di operazioni in batch
Di seguito è riportato un esempio di istruzione batch di base registrata.
BEGIN BATCH INSERT INTO users (id, firstname, lastname) VALUES (1, 'John', 'Doe'); INSERT INTO users (id, firstname, lastname) VALUES (2, 'Jane', 'Smith'); APPLY BATCH;
Questo è un esempio di batch che include DELETE istruzioni INSERTUPDATE, e.
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;
Questo è un esempio di batch che utilizza timestamp lato client.
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;
Questo è un esempio di batch condizionale.
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;
Questo è un esempio di batch che utilizza Time to Live (TTL).
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;
Questo è un esempio di istruzione batch che aggiorna più tabelle.
BEGIN BATCH INSERT INTO users (id, firstname) VALUES (1, 'John'); INSERT INTO user_emails (user_id, email) VALUES (1, 'john@example.com'); APPLY BATCH;
Questo è un esempio di operazione batch che utilizza tipi definiti dall'utente (UDTs). L'esempio presuppone che l'addressUDT esista.
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;