Principiante5 min di lettura

Azioni item-based di DynamoDB: GetItem, PutItem, UpdateItem, DeleteItem

L'API di DynamoDB si divide in tre famiglie: le azioni item-based che operano su un singolo Item tramite la sua chiave primaria, Query che legge un intervallo all'interno di una sola partizione e Scan che legge tutto. Questa guida tratta la prima famiglia — le quattro operazioni che userai di più: GetItem, PutItem, UpdateItem, DeleteItem. Sono le chiamate più economiche e veloci che DynamoDB offre, e cogliere bene le loro distinzioni (specialmente Put vs Update) previene un'intera classe di bug da perdita accidentale di dati.

Cosa sono le operazioni item-based di DynamoDB?

Le operazioni item-based di DynamoDB sono le quattro chiamate che agiscono su un singolo Item tramite la sua chiave primaria completa: GetItem lo legge, PutItem lo crea o lo sostituisce completamente, UpdateItem modifica attributi specifici sul posto e DeleteItem lo rimuove. Ciascuna indirizza esattamente un Item, il che le rende le chiamate più veloci ed economiche — a differenza di Query e Scan, che ne leggono molti.

  • GetItem — legge un Item tramite la sua chiave primaria completa.
  • PutItem — crea o sostituisce completamente un Item.
  • UpdateItem — crea o modifica attributi specifici di un Item sul posto.
  • DeleteItem — rimuove un Item tramite la sua chiave primaria completa.
  • Tutte e quattro richiedono la chiave primaria completa (partition key, più sort key se la tabella ne ha una) — indirizzano esattamente un Item.
  • PutItem sovrascrive l'intero Item; UpdateItem è chirurgico — confonderli è il modo in cui gli attributi spariscono silenziosamente.

Il tratto distintivo: un Item, chiave completa

Ogni azione item-based ha come bersaglio un singolo Item tramite la sua chiave primaria completa. È questo che le rende veloci ed economiche — DynamoDB calcola l'hash della partition key, va dritto all'Item, fatto. Nessun filtro, nessuno scan. Se non conosci la chiave completa, questi non sono lo strumento giusto; per quello ci sono Query e Scan.

Supponi di gestire account utente con chiave USER#<id>:

PK: USER#204   email, displayName, plan, createdAt
  • GetItem su USER#204 → quell'utente, direttamente.
  • DeleteItem su USER#204 → rimuove quell'utente.

Entrambe richiedono la chiave esatta. Niente chiave, niente azione item-based.

PutItem vs UpdateItem — quella che ti frega

Questa è la distinzione che vale la pena interiorizzare:

  • PutItem scrive l'intero Item. Se USER#204 esiste già e fai un PutItem con solo {email, displayName}, gli attributi esistenti plan e createdAt spariscono — un put sostituisce l'intero Item, non lo fonde.
  • UpdateItem cambia solo ciò che indichi. Un UpdateItem con un SET email = … lascia intatti tutti gli altri attributi e crea l'Item se non esisteva (un upsert).
Replace whole itemChange some attributes, keep therestModify one existing item?PutItemUpdateItem

Regola pratica: ricorri a UpdateItem per modificare un Item esistente e usa PutItem solo quando intendi davvero «scrivere questo Item come stato completo nuovo». Sia PutItem sia UpdateItem accettano una condition expression così puoi rendere la scrittura condizionale («solo se non esiste già»).

Le azioni item-based in DynoTable

Vuoi le chiamate API grezze dietro queste azioni? Assembla le espressioni e le mappe di valori tipizzati nel generatore di espressioni DynamoDB, e converti un Item in JSON semplice nel formato tipizzato dell'API con il convertitore DynamoDB JSON.

In DynoTable, lo stesso lavoro è visivo: apri un Item nella griglia per leggerlo (un GetItem), modifica gli attributi ed esegui il commit (un UpdateItem), aggiungi o sostituisci una riga (un PutItem), oppure ne elimini una — un Item alla volta.

Lettura di un singolo Item nella Quick View di DynoTable, con le azioni Edit Item e Copy as JSON.
Lettura di un singolo Item nella Quick View di DynoTable, con le azioni Edit Item e Copy as JSON.

Trappole e prossimi passi

  • PutItem sostituisce l'intero Item — per modificare alcuni campi senza perdere il resto, usa UpdateItem.
  • Devi conoscere la chiave primaria completa — niente chiave significa Query/Scan, non un'azione su Item.
  • Molti Item in una volta? Non eseguirle in ciclo una per una — le operazioni batch le raggruppano in meno round trip.
  • Ti serve indietro il valore vecchio/nuovo? Imposta ReturnValues invece di un GetItem successivo.
  • Correlati: query vs scan tratta il lato lettura-multipla.

Vuoi leggere, scrivere ed eliminare Item senza scrivere una riga di codice API? Scarica DynoTable e lavora con le tue tabelle direttamente.

Aggiornato