Azioni basate su DynamoDB Item
API di DynamoDB si divide in tre famiglie: azioni basate su oggetti che funzionano su un singolo
elemento tramite la sua chiave primaria, Query che legge un intervallo all'interno di una partizione e
Scan che legge tutto. Questa guida è la prima famiglia: le quattro operazioni
usi di più: GetItem, PutItem, UpdateItem, DeleteItem. Sono i più economici,
chiamate più veloci offerte da DynamoDB e ottenere le giuste distinzioni (in particolare Put
vs Update) previene una serie di bug di perdita accidentale dei dati.
Quali sono le operazioni basate sugli articoli di DynamoDB?
Le operazioni basate sugli elementi di DynamoDB sono le quattro chiamate che agiscono su un singolo elemento 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. Ciascuno indirizza esattamente un elemento, rendendoli le chiamate più veloci ed economiche, a differenza di Query e Scan, che ne leggono molti.
GetItem: legge un elemento tramite la sua chiave primaria completa.PutItem: crea o sostituisci completamente un articolo.UpdateItem: crea o modifica attributi specifici di un articolo in atto.DeleteItem: rimuove un elemento tramite la sua chiave primaria completa.- Tutti e quattro richiedono la chiave primaria completa (chiave di partizione, più chiave di ordinamento se il file la tabella ne ha uno) — riguardano esattamente un elemento.
PutItemsovrascrive l'intero elemento;UpdateItemè chirurgico: confonderli lo è come gli attributi scompaiono silenziosamente.
Il tratto distintivo: un oggetto, chiave completa
Ogni azione basata su un elemento prende di mira un singolo elemento tramite la sua chiave primaria completa. Questo è cosa li rende veloci ed economici: DynamoDB esegue l'hashing della chiave di partizione e va direttamente al file oggetto, fatto. Nessun filtraggio, nessuna scansione. Se non conosci la chiave completa, questi non sono i file strumento giusto; ecco a cosa servono Query e Scan.
Supponiamo che tu utilizzi account utente con chiave USER#<id>:
PK: USER#204 email, displayName, plan, createdAtGetItemsuUSER#204→ quell'utente, direttamente.DeleteItemsuUSER#204→ rimuove quell'utente.
Entrambi hanno bisogno della chiave esatta. Nessuna chiave, nessuna azione basata sugli elementi.
PutItem vs UpdateItem: quello che morde
Questa è la distinzione che vale la pena interiorizzare:
PutItemscrive l'intero elemento. SeUSER#204esiste già e tuPutItemcon solo{email, displayName}, gli attributiplanecreatedAtesistenti lo sono gone — un put sostituisce l'intero elemento, non si unisce.UpdateItemcambia solo il nome che dai.UpdateItemcon aSET email = …lascia ogni altro attributo intatto e crea l'elemento se non esistesse (un upsert).
Regola pratica: raggiungere UpdateItem per modificare un elemento esistente e utilizzare PutItem
solo quando intendi veramente "scrivi questo elemento come il nuovo stato completo". Entrambi
PutItem e UpdateItem accettano a
espressione condizionale in modo da poter effettuare la scrittura
condizionale ("solo se non esiste già").
Azioni basate su Item in DynoTable
Vuoi che dietro queste azioni ci siano le chiamate API grezze? Assemblare le espressioni e il valore digitato mappe nel costruttore di espressioni DynamoDB e converti un elemento JSON semplice nel formato digitato di API con il file Convertitore DynamoDB JSON.
In DynoTable, lo stesso lavoro è visivo: apri un elemento nella griglia per leggerlo (a
GetItem), modificare attributi e commit (un UpdateItem), aggiungere o sostituire una riga (a
PutItem) o eliminarne uno, un elemento alla volta.

Insidie + passaggi successivi
PutItemsostituisce l'intero elemento — per modificare alcuni campi senza perdere il file resto, usaUpdateItem.- Devi conoscere la chiave primaria completa: nessuna chiave significa Query/Scan, non un'azione di un elemento.
- Molti elementi contemporaneamente? Non ripeterli uno per uno — operazioni batch raggruppale in meno viaggi di andata e ritorno.
- È necessario ripristinare il vecchio valore /new? Imposta
ReturnValuesinvece di unGetItemsuccessivo. - Correlato: query vs scan copre il lato read-many.
Vuoi leggere, scrivere ed eliminare elementi senza scrivere una riga di codice API? Scarica DynoTable e lavora direttamente con le tue tabelle.
Costo: un articolo, un salto
Le letture basate su Item rappresentano l'accesso indirizzabile più economico in DynamoDB. Un GetItem acceso
una riga da 2 KB consuma 1 RCU eventualmente consistente (un blocco da 4 KB, arrotondato
in alto). Un Query che restituisce la stessa riga perché conoscevi la chiave di partizione e
sort key costa la stessa capacità, ma se conosci solo la chiave di partizione e
filter nel codice dell'applicazione, paghi per ogni elemento nella partizione.
| Operazione | Chiavi richieste | Uso tipico | Forma della capacità |
|---|---|---|---|
GetItem | Chiave primaria completa | Punto letto da id | 1 blocco per articolo |
PutItem | Chiave primaria completa | Crea o sostituisci l'intero articolo | 1 WCU per KB, arrotondato |
UpdateItem | Chiave primaria completa | Attributi della patch | Fatture per la dimensione dell'articolo scritte |
DeleteItem | Chiave primaria completa | Rimuovi riga | Uguale a scrivere sulla dimensione dell'articolo |
Query + filtro | Partizione (+ condizione di ordinamento opzionale) | Molti elementi in una partizione | Somma degli elementi corrispondenti |
Incolla un elemento rappresentativo nel file
calcolatore delle dimensioni dell'articolo, quindi moltiplicare per
richieste al secondo nel
calcolatore dei prezzi quando utilizza un percorso caldo
GetItem in loop rispetto a un Query ben codificato.
Espressioni di condizioni sulle scritture
Sia PutItem che UpdateItem accettano optional
espressioni di condizione. Modelli tipici:
attribute_not_exists(pk)on put: inserimento di sola creazione senza gara.attribute_exists(pk)in aggiornamento: rifiuta di creare uno stub accidentalmente.plan = :oldin aggiornamento: concorrenza ottimistica; riprova se un altro scrittore prima ha cambiato il piano.
Anche DeleteItem supporta le condizioni: elimina solo se status = :closed, per
esempio. Le condizioni non aggiungono un costo di lettura separato; DynamoDB li valuta
contro l'elemento memorizzato durante il tentativo di scrittura.
Costruisci visivamente le condizioni nel file
Costruttore di espressioni DynamoDB; copia il
ConditionExpression più ExpressionAttributeNames e
ExpressionAttributeValues nella tua chiamata SDK.
Idempotenza e sicurezza di sovrascrittura
PutItem senza condizione è l'ultimo scrittore che vince sull'intero articolo. Per webhook
gestori o consumatori SQS, accoppia i put con attribute_not_exists su un elaborato
attributo marker o utilizzare UpdateItem con SET processed = :true protetto da
attribute_not_exists(processed).
Quando sono necessari i valori degli attributi precedenti per un registro di controllo, aggiungere
ReturnValues invece sullo stesso UpdateItem
di un GetItem precedente: un viaggio di andata e ritorno, nessuna corsa read/write.
Scegliere l'azione giusta per l'oggetto
| Intento | Chiama | Guardia |
|---|---|---|
| Leggi il profilo per ID utente | GetItem | — |
| Crea utente se assente | PutItem | attribute_not_exists(pk) |
| Cambia email, mantieni gli altri campi | UpdateItem | opzionale email <> :old |
| Sostituisci l'intero BLOB di configurazione | PutItem | solo quando il carico utile è completo |
| Rimuovi ticket chiuso | DeleteItem | status = :closed |
| Leggi 50 biglietti per chiavi conosciute | BatchGetItem | non 50× GetItem in seriale |
La gestione temporanea scrive in DynoTable
DynoTable mette in scena UpdateItem e PutItem localmente prima del commit. Tu recensisci
attributo diff, esegui controlli PartiQL opzionali, quindi esegui il commit, che si associa a
chiamate API reali sopra. La riga in blocco elimina il batch in
BatchWriteItem nascosto con nuovo tentativo
su articoli non lavorati.
Per la generazione del codice SDK, assemblare le clausole di aggiornamento nel file costruttore di espressioni e incolla il file emesso Snippet SDK v3 accanto ai test del gestore.


