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 400

Quindi 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.name

Preferisci 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

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.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.