DynamoDB supporta i join?
Non nel database stesso. Essendo un database non relazionale, DynamoDB non ha alcuna operazione JOIN e PartiQL non ne aggiunge una, quindi per le letture di produzione si modellano invece i dati correlati: denormalizzare (duplicarlo o incorporarlo in modo che ogni modello di accesso sia una query) o utilizzare la progettazione a tabella singola per co-localizzare gli elementi correlati sotto un'unica chiave di partizione. Ma puoi comunque eseguire un vero join sulle tue tabelle DynamoDB da un client: SQL Workbench di DynoTable esegue JOIN, GROUP BY effettivi e query aggregate sui tuoi dati in tempo reale.
Perché il database non ha join
DynamoDB è progettato per letture prevedibili di una sola cifra nell'ordine dei millisecondi su qualsiasi scala. L'adesione in fase di lettura farebbe dipendere la latenza dalla quantità di dati correlati esistenti, il che infrange tale garanzia. Pertanto, per i tuoi modelli di accesso modellati, l'unione viene eseguita da te al momento della scrittura.
Cosa succede se ci provi
PartiQL rifiuta l'istruzione nel parser, prima di leggere qualsiasi cosa. Sia il join esplicito che il cross-join con virgola falliscono allo stesso modo:
SELECT o."total", c."name" FROM "Orders" o JOIN "Customers" c ON o."pk" = c."id"
SELECT * FROM "Orders", "Customers"ValidationException: Only select from a single table or index is supported.
HTTP 400Quindi non c’è alcun fallback lento ma funzionante da scoprire nella produzione. Un'istruzione che nomina due tabelle è un errore di sintassi e il lavoro deve spostarsi altrove: nel modello dati o in un client che esegue autonomamente la parte relazionale.
Cosa fare per i modelli di accesso modellati
- Denormalizzazione: copia o incorpora i dati correlati letti insieme.
- Design a tabella singola: memorizza più tipi di entità in una tabella con chiavi sovraccaricate, in modo che una raccolta di elementi li legga insieme in un unico Query.
- Elenchi di adiacenze: modella le relazioni molti-a-molti come elementi Query per chiave.
Questi mantengono la produzione legge una singola richiesta. Procedura dettagliata completa in DynamoDB join.
Esegui un vero JOIN con DynoTable
Per la domanda ad hoc incrociata per la quale non hai modellato: "quali clienti dell'UE hanno speso più di $ 500 il mese scorso?" su una tabella Orders e una tabella Customers: DynoTable esegue l'unione per te. È un client DynamoDB desktop e il suo SQL Workbench esegue query reali JOIN, GROUP BY e aggregate: legge gli elementi tramite il normale DynamoDB API, quindi esegue la parte relazionale della query nel client. Quindi funziona, rispetto a tabelle che non hanno alcuna relazione definita e un motore di query senza parola chiave JOIN:
SELECT c.name, SUM(o.total) AS spend
FROM Customers c
JOIN Orders o ON o.customerId = c.id
WHERE c.region = 'EU'
GROUP BY c.namePreferisci non scrivere SQL? Smart Table sono la corsia visiva per lo stesso motore di unione: disegna una linea di relazione tra due tabelle su un'area di disegno e sfoglia le righe unite.
L'onesto avvertimento, "entro le regole del modello di accesso di DynamoDB": Workbench legge ancora attraverso DynamoDB, quindi i join più veloci sono quelli il cui attributo ON o clausola WHERE colpisce una chiave di partizione o GSI su almeno un lato, consentendo a DynamoDB di eseguire un Query invece di una scansione completa. Vedere /docs/dynamodb-sql-workbench per il comportamento Workbench e /docs/smart-tables per l'area di unione visiva. DynoTable ti consente di porre la domanda di partecipazione invece di inserire manualmente i risultati nel codice; non abroga i vincoli di cui sopra. Tra i client GUI DynamoDB è l'unico "sì, puoi unirti" che è effettivamente vero: PartiQL e NoSQL Workbench di AWS si fermano entrambi al muro a tabella singola.
Per letture di tabelle singole che evitano completamente i join, disegna le chiavi sovraccaricate nel file strumento di progettazione a tabella singola prima di modellare copie denormalizzate dei dati correlati.
Il compromesso
Per i percorsi di lettura di produzione si esegue un lavoro più attento sulle scritture per rendere le letture economiche e costanti.
Approfondisci
Leggere join DynamoDB, progettazione a tabella singola e relazioni uno-a-molti. Scarica DynoTable per eseguire un vero JOIN sulle tue tabelle, in SQL o visivamente con Smart Table.
Riferimenti
- Dati Query in DynamoDB (da SQL a NoSQL) — Guida per sviluppatori di Amazon DynamoDB
- Istruzioni di selezione PartiQL per DynamoDB - Guida per sviluppatori Amazon DynamoDB
- Best practice per la progettazione NoSQL: Guida per sviluppatori Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale AWS collegata sopra.
L'ValidationException riportato sopra è stato riprodotto il 28-07-2026 rispetto a DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 ed è citato testualmente.