DynamoDB supporta GraphQL?
Sì, tramite AWS AppSync. AppSync è il servizio GraphQL gestito di AWS, e DynamoDB è una delle sue origini dati native: i resolver mappano ogni query o mutation GraphQL su un'operazione DynamoDB come GetItem, Query o PutItem. DynamoDB di per sé non ha alcun endpoint GraphQL — il livello GraphQL gira davanti a lui.
Come funziona l'accoppiata
In AppSync registri una tabella DynamoDB come origine dati, poi colleghi un resolver a ogni campo del tuo schema GraphQL. Il gestore della richiesta del resolver traduce gli argomenti GraphQL in arrivo in una chiamata DynamoDB, e il gestore della risposta rimodella l'Item o gli Item restituiti da DynamoDB nella risposta GraphQL. AWS elenca AppSync per prima tra le integrazioni serverless di DynamoDB proprio per questo pattern.
Perché è uno stack comune
Entrambe le metà sono serverless: AppSync scala il livello API mentre DynamoDB scala storage e throughput, senza server da nessuna delle due parti. Le subscription GraphQL in tempo reale si sposano naturalmente con le scritture in millisecondi a una cifra di DynamoDB.
Quanto costa un solo campo annidato
Un resolver per campo significa una richiesta DynamoDB per campo. posts { author { name } } risolve la lista una volta, poi risolve author una volta per post, e ciascuna di quelle è fatturata separatamente.
Misurato con ReturnConsumedCapacity su una tabella che contiene 25 post in una sola item collection e 25 Item autore, ciascuno di circa 920 byte:
Query, the 25 posts ConsumedCapacity 3.0
25 GetItem calls, one author each ConsumedCapacity 12.5
1 BatchGetItem, the same 25 author keys ConsumedCapacity 12.5Il campo annidato costa oltre quattro volte la query che ha prodotto la lista. Il batching non lo cambia: BatchGetItem (un'operazione di resolver AppSync a pieno titolo, con un tetto di 100 chiavi e 16 MB per chiamata) comprime 25 round trip in uno solo, ma legge comunque 25 Item e fattura 25 letture. Compra latenza, non capacità.
A dieci di quelle query GraphQL al secondo fanno 50,92 $ al mese di unità di richiesta di lettura in us-east-1 on-demand, di cui 41,06 $ solo per il campo author — il calcolatore dei prezzi fa la stessa aritmetica sui tuoi numeri.
Ed è per questo che la soluzione sta nella progettazione delle chiavi e non nel resolver. Proietta ciò che il campo annidato restituisce dentro l'Item padre o dentro un GSI, così la query sulla lista lo porta già con sé e al resolver figlio non resta nulla da recuperare.
L'alternativa: portati il tuo server
Nulla obbliga a usare AppSync — qualsiasi server GraphQL (Apollo, Yoga e altri) può risolvere i campi chiamando DynamoDB attraverso l'AWS SDK, esattamente come chiamerebbe qualsiasi altro backend. Il compromesso è che il livello GraphQL lo gestisci tu.
Approfondisci
I resolver GraphQL ricadono comunque sotto le stesse regole dei pattern di accesso — la guida alla modellazione dei dati spiega come progettare chiavi che servano le tue query, l'expression builder genera la sintassi delle condizioni sottostanti, e DynoTable ti permette di ispezionare cosa hanno scritto davvero i tuoi resolver.
Riferimenti
- Data sources — AWS AppSync Developer Guide
- Resolver mapping template reference for DynamoDB — AWS AppSync Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- BatchGetItem — Amazon DynamoDB API Reference
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.
Cifre di capacità misurate il 2026-07-28 su DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 su Node 24.18.0; i valori di ConsumedCapacity qui sopra sono del motore stesso. I costi sono calcolati dal prezzo on-demand per unità di richiesta in us-east-1 presente nella nostra tabella prezzi AWS sincronizzata.