DynamoDB è un database NoSQL?
SÌ. DynamoDB è un database NoSQL: un archivio di documenti e valori-chiave non relazionale e completamente gestito. Contiene elementi senza schema anziché righe in tabelle a schema fisso e scambia join SQL e query ad hoc per prestazioni prevedibili di pochi millisecondi a una cifra e ridimensionamento orizzontale praticamente a qualsiasi dimensione.
Che tipo di NoSQL
DynamoDB supporta sia il modello chiave-valore che quello dei dati del documento. Ogni elemento è indirizzato da una chiave primaria e gli attributi possono annidarsi come mappe ed elenchi fino a 32 livelli di profondità: il lato documento del modello.
In cosa differisce da SQL
- Nessuno schema fisso: solo la chiave primaria è definita in anticipo; altri attributi variano in base all'articolo.
- Nessun join: invece denormalizzi e modelli in base ai modelli di accesso.
- Prestazioni prevedibili: legge una chiave di partizione target, quindi la latenza rimane invariata man mano che i dati crescono.
Cosa fa il motore con un JOIN
PartiQL fa sembrare DynamoDB a forma di SQL, quindi il confine è facile da perdere. La sintassi SELECT documentata di AWS è l'intera grammatica e non ha alcuna clausola JOIN:
SELECT {{expression}} [, ...]
FROM {{table}}[.{{index}}]
[ WHERE {{condition}} ] [ [ORDER BY {{key}} [DESC|ASC] , ...]Inviane comunque uno e il parser si ferma alla seconda tabella:
await client.send(
new ExecuteStatementCommand({
Statement: `SELECT o.pk FROM "orders" o JOIN "customers" c ON o.pk = c.pk`
})
);Produzione reale:
ValidationException: Only select from a single table or index is supported.
HTTP 400Il rifiuto avviene in fase di analisi, prima che i dati vengano letti, motivo per cui nessuna progettazione dell'indice ti consente di partecipare. Partecipare è il lavoro della tua applicazione in un negozio NoSQL.
Limita anche ciò che ogni cliente può offrire onestamente. SQL Workbench di DynoTable accetta INNER JOIN, LEFT JOIN, GROUP BY e COUNT/SUM/AVG/MIN/MAX.
Li compila in chiamate Query e Scan native, quindi unisce e aggrega i risultati sul tuo computer. DynamoDB continua a vedere solo letture a tabella singola.
Quando va bene
DynamoDB è progettato per carichi di lavoro OLTP: letture e scritture point-and-range note ad alto volume. L'analisi pesante appartiene a un archivio colonnare separato alimentato dall'esportazione.
I limiti NoSQL si sentono ancora in produzione
"NoSQL" descrive il modello di accesso, non la rimozione dei vincoli. DynamoDB ti limita ancora a 400 KB per articolo, 25 azioni per TransactWriteItems e 100 azioni di lettura o scrittura per transazione. Un documento nidificato può avere una profondità di 32 livelli. Il progetto GSI attribuisce solo il tuo nome; non esiste uno schema nascosto a cui ricorrere.
Questi limiti sono importanti perché non puoi unirti a loro per uscirne al momento della query. Si modella attorno ad essi in anticipo - indici sparsi, attributi denormalizzati e chiavi a tabella singola - quindi si legge per partizione. Il Query Builder trasforma un filtro nella richiesta Query o Scan che DynamoDB verrà effettivamente eseguita.
In DynoTable: quando una domanda relazionale è legittima, SQL Workbench compila JOIN e GROUP BY fino alle chiamate native Query e Scan sul tuo computer: DynamoDB vede ancora letture a tabella singola. Vedere SQL Workbench per la grammatica supportata e i limiti onesti.
Approfondisci
Scopri quando utilizzare DynamoDB e come modellare i dati con come modellare i dati in DynamoDB. Scarica DynoTable per sfogliare le tue tabelle NoSQL ed eseguire SQL su di esse rispettando le regole del modello di accesso di DynamoDB.
Riferimenti
- Cos'è Amazon DynamoDB? — Guida per gli sviluppatori di Amazon DynamoDB
- Componenti principali di Amazon DynamoDB: Guida per gli sviluppatori di Amazon DynamoDB
- Istruzioni di selezione PartiQL per DynamoDB - Guida per sviluppatori Amazon DynamoDB
- Database valori-chiave veloce NoSQL — Amazon DynamoDB — AWS
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale AWS collegata sopra; la grammatica dell'PartiQL SELECT è stata ricontrollata il 28-07-2026.
Riprodotto il 28-07-2026 rispetto a DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 sul nodo v24.18.0. L'ValidationException sopra riportato è l'output letterale del motore.