¿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 400

Así 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 CustomersDynoTable 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

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.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.