DynamoDB vs Amazon S3
DynamoDB e Amazon S3 risolvono problemi diversi, quindi la risposta onesta a "quale dei due" è di solito entrambi. DynamoDB è un database chiave-valore e a documenti per record strutturati che cerchi, interroghi e aggiorni per chiave. Amazon S3 è object storage per file e blob — immagini, backup, log, video — che archivi e recuperi per intero. Sono complementari, non alternativi.
Dovrei usare DynamoDB o S3?
Usa DynamoDB quando hai molti piccoli record strutturati che interroghi, filtri e aggiorni per chiave con latenza dell'ordine dei millisecondi a una cifra. Usa Amazon S3 quando archivi e servi interi file o blob — immagini, backup, export — e li recuperi per nome. Sono complementari: un pattern molto comune archivia l'oggetto in S3 e i suoi metadati in DynamoDB.
DynamoDB vs Amazon S3 in breve
| Caratteristica | DynamoDB | Amazon S3 |
|---|---|---|
| Scopo principale | Database NoSQL chiave-valore / a documenti per record strutturati | Object storage per file, blob e dati non strutturati |
| Unità di dato | Item (un insieme di attributi tipizzati), indirizzato per chiave primaria | Oggetto (byte + metadati), indirizzato per chiave all'interno di un bucket |
| Dimensione max per unità | 400 KB per Item (nomi + valori degli attributi) | 5 TB per oggetto (PUT singolo fino a 5 GB; upload più grandi usano multipart) |
| Query / accesso | GetItem, Query, Scan, BatchGetItem, PartiQL, indici secondari (GSI/LSI) | GET / PUT / DELETE per chiave, LIST di un bucket; interrogazione in loco tramite Amazon Athena (o S3 Select per i clienti esistenti) |
| Profilo di latenza | Letture/scritture dell'ordine dei millisecondi a una cifra per singoli Item a qualsiasi scala | Throughput di oggetti durevole; latenza per richiesta più alta di un database chiave-valore, non ricerche di record nell'ordine dei millisecondi |
| Coerenza | A coerenza eventuale per impostazione predefinita; letture a coerenza forte disponibili per richiesta | Coerenza forte read-after-write per tutti gli oggetti e tutte le richieste (dal 2020) |
| Modello di prezzi | Capacità di lettura/scrittura (RCU/WCU — on-demand o con provisioning) + storage dati per GB-mese | Storage per GB-mese (per classe di storage) + costi per richiesta (PUT/GET/LIST) + recupero / trasferimento dati |
| Carichi più adatti | Profili utente, sessioni, carrelli, record di eventi/stato, metadati, accesso ad alto throughput in stile OLTP | Media, backup, file di data-lake, asset statici, export di grandi dimensioni, archiviazione |
Ogni cella qui sopra è tratta dalla documentazione ufficiale di AWS (vedi la nota di provenienza in cima a questo file).
Quando usare DynamoDB
Ricorri a DynamoDB quando i tuoi dati sono record strutturati a cui accedi per chiave:
- Molti piccoli Item (ciascuno sotto il limite di 400 KB) che leggi, scrivi e aggiorni individualmente.
- Ricerche prevedibili e a bassa latenza — DynamoDB punta a letture e scritture dell'ordine dei millisecondi a una cifra per singoli Item a qualsiasi scala.
- Pattern di accesso che puoi esprimere con una chiave primaria e indici secondari: get-by-id, query-a-partition, filter-within-a-partition.
- Throughput di scrittura elevato con aggiornamenti a grana fine (cambiare un attributo senza riscrivere l'intero record).
Se ti ritrovi a provare a memorizzare un file da 5 MB dentro un Item, quello è il segnale che hai raggiunto il confine di DynamoDB — vedi limite di dimensione degli Item di DynamoDB.
Quando usare S3
Ricorri ad Amazon S3 quando i tuoi dati sono un intero file o blob che recuperi per nome:
- Immagini, PDF, video, audio e altri asset binari.
- Backup, export di database e file di data-lake (Parquet, CSV, JSON) interrogati in seguito con uno strumento come Amazon Athena.
- Oggetti di grandi dimensioni — S3 archivia oggetti fino a 5 TB ciascuno, ben oltre qualsiasi singolo record di database.
- Asset di siti web statici e contenuti serviti direttamente agli utenti.
S3 non è un database: non puoi interrogare il contenuto di oggetti arbitrari con indici ricchi come interroghi gli Item di DynamoDB. Il filtraggio in stile SQL in loco su un oggetto è disponibile tramite Amazon Athena (S3 Select resta disponibile per i clienti esistenti ma è stato chiuso ai nuovi clienti nel 2024).
Usarli insieme
I due servizi sono più potenti combinati. La stessa guida di AWS per i dati troppo grandi per un Item di DynamoDB è di archiviare l'oggetto in S3 e mantenere un puntatore in DynamoDB:
- Archivia il file di grandi dimensioni (immagine, documento, video) come oggetto in S3.
- Archivia i suoi metadati — la chiave dell'oggetto S3, il content type, il proprietario, i tag, i timestamp — come Item in DynamoDB, dove è interrogabile a basso costo.
- Cerca il record in DynamoDB per chiave, poi recupera l'oggetto da S3 usando l'identificatore memorizzato.
Un'avvertenza che AWS segnala: non ci sono transazioni che coprono DynamoDB e S3, quindi la tua applicazione gestisce i fallimenti parziali (per esempio, ripulendo un oggetto S3 orfano se la scrittura su DynamoDB fallisce).
Lavorare con DynamoDB
Una volta scelto DynamoDB per la metà strutturata dei tuoi dati, DynoTable è un client desktop DynamoDB per sfogliare, modificare e interrogare le tabelle su macOS, Windows e Linux. Legge la tua catena di credenziali AWS standard, quindi non c'è nulla di specifico per DynamoDB da migrare — puntalo alla tua region e alle tue tabelle e i tuoi dati restano in DynamoDB.
Quando devi costruire a mano le espressioni GetItem, Query, Update o di condizione che stanno alla base del pattern metadati-in-DynamoDB descritto sopra, il gratuito DynamoDB Expression Builder genera la richiesta nelle forme AWS SDK, CLI e boto3. Per dimensionare un Item rispetto al limite di 400 KB prima di decidere cosa appartiene a S3, il calcolatore di dimensione degli Item misura la dimensione in byte di un record.
FAQ
DynamoDB può memorizzare file o immagini?
Piccoli, entro i limiti. Un Item di DynamoDB può contenere dati binari, ma l'intero Item — ogni nome e valore di attributo — deve restare sotto i 400 KB. Per qualsiasi cosa più grande, la best practice documentata da AWS è archiviare il file come oggetto in Amazon S3 e mantenere la chiave dell'oggetto S3 (più i metadati) in un Item di DynamoDB.
S3 è più economico di DynamoDB?
Hanno prezzi diversi, quindi dipende dal carico di lavoro anziché da una risposta univoca. S3 addebita lo storage per GB-mese più i costi per richiesta e recupero, ed è generalmente la casa più economica per grandi volumi di byte a cui si accede raramente. DynamoDB addebita la capacità di lettura/scrittura più lo storage ed è costruito per l'accesso ad alto throughput e bassa latenza a molti piccoli record. Archiviare grandi blob in DynamoDB è sia limitato nelle dimensioni sia comparativamente costoso — motivo per cui la divisione oggetto-in-S3-più-metadati-in-DynamoDB è il pattern standard.
DynamoDB o S3 per JSON?
Se il JSON è un record strutturato che interroghi e aggiorni per chiave — un utente, un ordine, una sessione — DynamoDB è adatto, e mappa il JSON in attributi tipizzati e supporta PartiQL. Se il JSON è un intero documento o file di data-lake che archivi e più tardi scansioni in blocco (per esempio interrogandolo con Amazon Athena), è adatto S3. Un ibrido frequente mantiene i campi interrogabili in DynamoDB e il payload JSON completo come oggetto in S3.
Correlati
- Impara: limite di dimensione degli Item di DynamoDB · Quando usare DynamoDB
- Costruisci richieste visivamente con il DynamoDB Expression Builder.
- Dimensiona i record con il calcolatore di dimensione degli Item di DynamoDB.
- Scarica DynoTable per lavorare con le tue tabelle DynamoDB.
Ultima verifica 2026-07-12 rispetto alla documentazione ufficiale di AWS DynamoDB e Amazon S3. Amazon S3, DynamoDB e Athena sono servizi di Amazon Web Services, indicati qui solo a scopo identificativo.