Operazioni in blocco efficienti - Amazon DynamoDB

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.

  • PartiQLBatchExecuteStatement: fino a 25 aggiornamenti con o senza condizioni

    Compromesso: è 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.