Unterstützt DynamoDB GraphQL?
Ja, über AWS AppSync. AppSync ist AWS' verwalteter GraphQL-Dienst, und DynamoDB ist eine seiner nativen Datenquellen: Resolver bilden jede GraphQL-Query oder -Mutation auf eine DynamoDB-Operation wie GetItem, Query oder PutItem ab. DynamoDB selbst hat keinen GraphQL-Endpoint — die GraphQL-Schicht läuft davor.
Wie das Zusammenspiel funktioniert
In AppSync registrierst du eine DynamoDB-Tabelle als Datenquelle und hängst dann an jedes Feld deines GraphQL-Schemas einen Resolver. Der Request-Handler des Resolvers übersetzt die eingehenden GraphQL-Argumente in einen DynamoDB-Aufruf, und sein Response-Handler formt das oder die von DynamoDB zurückgegebenen Items in die GraphQL-Antwort. AWS führt AppSync genau für dieses Muster an erster Stelle der Serverless-Integrationen von DynamoDB.
Warum das ein verbreiteter Stack ist
Beide Hälften sind serverless: AppSync skaliert die API-Schicht, während DynamoDB Speicher und Durchsatz skaliert, ohne Server auf einer der beiden Seiten. GraphQL-Subscriptions in Echtzeit passen natürlich zu DynamoDBs einstellig millisekundenschnellen Writes.
Was ein einziges verschachteltes Feld kostet
Ein Resolver pro Feld heißt eine DynamoDB-Anfrage pro Feld. posts { author { name } } löst die Liste einmal auf, dann author einmal pro Post — und jeder dieser Aufrufe wird einzeln abgerechnet.
Mit ReturnConsumedCapacity gemessen, gegen eine Tabelle mit 25 Posts in einer Item-Collection und 25 Autoren-Items zu je etwa 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.5Das verschachtelte Feld kostet mehr als das Vierfache der Abfrage, die die Liste erzeugt hat. Batching ändert daran nichts: BatchGetItem (eine eigenständige AppSync-Resolver-Operation, gedeckelt bei 100 Keys und 16 MB pro Aufruf) fasst 25 Round-Trips zu einem zusammen, liest aber weiterhin 25 Items und rechnet 25 Reads ab. Es kauft Latenz, keine Kapazität.
Bei zehn solcher GraphQL-Abfragen pro Sekunde sind das 50,92 $ pro Monat an Read Request Units in us-east-1 On-Demand, davon 41,06 $ allein für das Feld author — der Preisrechner macht dieselbe Rechnung mit deinen eigenen Zahlen.
Deshalb liegt die Lösung im Key-Design und nicht im Resolver. Projiziere das, was das verschachtelte Feld zurückgibt, in das Eltern-Item oder in einen GSI, damit die Listenabfrage es bereits mitbringt und der Kind-Resolver nichts mehr zu holen hat.
Die Alternative: eigener Server
Nichts zwingt dich zu AppSync — jeder GraphQL-Server (Apollo, Yoga und andere) kann Felder auflösen, indem er DynamoDB über das AWS SDK aufruft, genau wie er jedes andere Backend aufrufen würde. Der Preis dafür ist, dass du die GraphQL-Schicht selbst betreibst.
Tiefer einsteigen
GraphQL-Resolver unterliegen weiterhin denselben Zugriffsmuster-Regeln — der Leitfaden zur Datenmodellierung erklärt, wie du Keys entwirfst, die deine Abfragen bedienen, der Expression Builder erzeugt die zugrunde liegende Bedingungssyntax, und DynoTable lässt dich nachsehen, was deine Resolver tatsächlich geschrieben haben.
Referenzen
- 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
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.
Die Kapazitätszahlen wurden am 2026-07-28 gegen DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 auf Node 24.18.0 gemessen; die ConsumedCapacity-Werte oben sind die der Engine selbst. Die Kosten sind aus dem On-Demand-Request-Unit-Preis für us-east-1 in unserer synchronisierten AWS-Preistabelle berechnet.