Operazioni in blocco efficienti
Quando usare questo modello
Questi modelli sono utili per eseguire in modo efficiente aggiornamenti in blocco sugli elementi di DynamoDB.
DynamoDB-Shell non è un caso d’uso supportato per la produzione.
TransactWriteItems: fino a 100 aggiornamenti singoli con o senza condizioni, eseguiti come un pacchetto ACID “tutto o niente”Compromesso: viene utilizzato throughput aggiuntivo, 2 WCU per 1 KB di scrittura.
PartiQL
BatchExecuteStatement: fino a 25 aggiornamenti con o senza condizioniCompromesso: è necessaria una logica aggiuntiva per distribuire le richieste in batch da 25.
AWS Step Functions: operazioni in blocco a velocità limitata per gli sviluppatori che hanno dimestichezza con AWS Lambda.
Compromesso: il tempo di esecuzione è inversamente proporzionale al limite di velocità. Limitazione data dal timeout massimo della funzione Lambda. La funzionalità prevede che le modifiche ai dati che si verificano tra la lettura e la scrittura possano essere sovrascritte. Per ulteriori informazioni, consulta Backfilling an Amazon DynamoDB Time to Live attribute using Amazon EMR: Part 2
. -
AWS Glue e Amazon EMR: operazioni in blocco a velocità limitata con parallelismo gestito. Per le applicazioni o gli aggiornamenti non sensibili al fattore temporale, queste opzioni possono essere eseguite in background consumando solo una piccola percentuale del throughput. Entrambi i servizi utilizzano il connettore emr-dynamodb per eseguire operazioni DynamoDB. Questi servizi eseguono una lettura approfondita seguita da una scrittura approfondita degli elementi aggiornati con un’opzione per limitare la velocità.
Compromesso: il tempo di esecuzione è inversamente proporzionale al limite di velocità. La funzionalità prevede che le modifiche ai dati che si verificano tra la lettura e la scrittura possano essere sovrascritte. Non è possibile la lettura dagli indici secondari globali (GSI). Consulta Backfilling an Amazon DynamoDB Time to Live attribute using Amazon EMR: Part 2
. -
DynamoDB Shell: operazioni in blocco a velocità limitata attraverso query di tipo SQL. È possibile la lettura dai GSI per una maggiore efficienza.
Compromesso: il tempo di esecuzione è inversamente proporzionale al limite di velocità. Consulta Rate limited bulk operations in DynamoDB Shell
.
Utilizzo del modello
Gli aggiornamenti in blocco possono avere implicazioni significative in termini di costi, soprattutto se si utilizza la modalità di throughput on demand. Esiste un compromesso tra velocità e costi se si utilizza la modalità di throughput allocato. L’impostazione molto rigorosa del parametro del limite di velocità può portare a tempi di elaborazione molto lunghi. È possibile determinare approssimativamente la velocità di aggiornamento utilizzando la dimensione media dell’elemento e il limite di velocità.
In alternativa, è possibile determinare la quantità di throughput necessaria per il processo in base alla durata prevista del processo di aggiornamento e alla dimensione media degli elementi. I riferimenti del blog condivisi con ogni modello forniscono dettagli sulla strategia, l’implementazione e i limiti dell’utilizzo del modello. Per ulteriori informazioni, consulta Cost-effective bulk processing with Amazon DynamoDB
Esistono diversi approcci per eseguire aggiornamenti in blocco su una tabella DynamoDB attiva. L’approccio adatto dipende da fattori quali i requisiti ACID e/o di idempotenza, il numero di elementi da aggiornare e la familiarità con le API. È importante considerare il rapporto tra costi e tempi: la maggior parte degli approcci sopra descritti prevede un’opzione per limitare il throughput utilizzato dal processo di aggiornamento in blocco.