¿Admite DynamoDB joins?
No en la base de datos en sí. Como base de datos no relacional, DynamoDB no tiene
operación JOIN, y PartiQL no añade una, así que para lecturas de producción modelas
los datos relacionados en su lugar: desnormalizas (duplicas o incrustas para que cada
patrón de acceso sea una consulta) o usas diseño de tabla única para co-localizar Items
relacionados bajo una clave de partición. Pero aún puedes ejecutar un join real sobre tus
tablas DynamoDB desde un cliente: el SQL Workbench de DynoTable ejecuta
consultas reales de JOIN, GROUP BY y agregaciones sobre tus datos en vivo.
Por qué la base de datos no tiene join
DynamoDB está construido para lecturas predecibles de milisegundos de un solo dígito a cualquier escala. Unir en tiempo de lectura haría que la latencia dependiera de cuántos datos relacionados existen, lo que rompe esa garantía. Así que para tus patrones de acceso modelados el join se hace en tiempo de escritura, por ti.
Qué ocurre si lo intentas
PartiQL rechaza la sentencia en el analizador, antes de leer nada. Tanto el join explícito como el cross-join con coma fallan igual:
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 400Así que no hay un fallback lento pero funcional que descubrir en producción. Una sentencia que nombra dos tablas es un error de sintaxis, y el trabajo tiene que moverse a otro sitio: a tu modelo de datos, o a un cliente que haga la parte relacional por sí mismo.
Qué haces para patrones de acceso modelados
- Desnormalización — copia o incrusta los datos relacionados que lees juntos.
- Diseño de tabla única — almacena varios tipos de entidad en una tabla con claves sobrecargadas, para que una colección de Items los lea juntos en una Query.
- Listas de adyacencia — modela relaciones muchos a muchos como Items que consultas por clave.
Esto mantiene las lecturas de producción en una sola solicitud. Recorrido completo en Joins en DynamoDB.
Ejecuta un JOIN real con DynoTable
Para la pregunta ad hoc entre tablas que no modelaste — «¿qué clientes de la UE
gastaron más de 500 $ el mes pasado?» entre tablas Orders y Customers —
DynoTable ejecuta ese join por ti. Es un cliente de escritorio para
DynamoDB, y su SQL Workbench ejecuta consultas reales de JOIN, GROUP BY y
agregaciones: lee los Items a través de la API normal de DynamoDB y luego ejecuta la
parte relacional de la consulta en el cliente. Así que esto funciona, contra tablas sin
relación definida y un motor de consultas sin palabra clave 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¿Prefieres no escribir SQL? Las Smart Tables son el carril visual para el mismo motor de joins: dibuja una línea de relación entre dos tablas en un lienzo y explora las filas unidas.
La advertencia honesta, «dentro de las reglas de patrones de acceso de DynamoDB»: el
Workbench sigue leyendo a través de DynamoDB, así que los joins más rápidos son los cuyo
ON o cláusula WHERE alcanza una clave de partición o GSI
en al menos un lado, dejando que DynamoDB ejecute una Query en lugar de un Scan completo.
Consulta /docs/dynamodb-sql-workbench para el
comportamiento del Workbench y /docs/smart-tables para el lienzo
visual de joins. DynoTable te deja hacer la pregunta del join en lugar de coser
resultados a mano en código; no deroga las restricciones anteriores. Entre clientes GUI
de DynamoDB es el único «sí, puedes unir» que es realmente cierto: PartiQL y el propio
NoSQL Workbench de AWS se detienen en el muro de tabla única.
Para lecturas de tabla única que evitan joins por completo, esboza claves sobrecargadas en la herramienta de diseño de tabla única antes de modelar copias desnormalizadas de datos relacionados.
La compensación
Para rutas de lectura de producción haces más trabajo cuidadoso en escrituras para que las lecturas sean baratas y de tiempo constante.
Profundiza
Lee Joins en DynamoDB, diseño de tabla única y relaciones uno a muchos. Descarga DynoTable para ejecutar un JOIN real sobre tus tablas, en SQL o visualmente con Smart Tables.
Referencias
- Query data in DynamoDB (SQL to NoSQL) — Amazon DynamoDB Developer Guide
- PartiQL select statements for DynamoDB — Amazon DynamoDB Developer Guide
- Best practices for NoSQL design — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.
La ValidationException anterior se reprodujo el 2026-07-28 contra DynamoDB Local 3.3.0 vía @aws-sdk/client-dynamodb 3.1095.0 y se cita literalmente.