DynamoDB vs Amazon S3

DynamoDB y Amazon S3 resuelven problemas distintos, así que la respuesta honesta a "¿cuál?" suele ser ambos. DynamoDB es una base de datos de clave-valor y documentos para registros estructurados que buscas, consultas y actualizas por clave. Amazon S3 es almacenamiento de objetos para archivos y blobs — imágenes, copias de seguridad, logs, vídeos — que almacenas y recuperas enteros. Son complementarios, no uno u otro.

¿Debería usar DynamoDB o S3?

Usa DynamoDB cuando tienes muchos registros estructurados pequeños que consultas, filtras y actualizas por clave con latencia de milisegundos de un solo dígito. Usa Amazon S3 cuando almacenas y sirves archivos o blobs enteros — imágenes, copias de seguridad, exportaciones — y los recuperas por nombre. Son complementarios: un patrón muy común almacena el objeto en S3 y sus metadatos en DynamoDB.

DynamoDB vs Amazon S3 de un vistazo

CaracterísticaDynamoDBAmazon S3
Propósito principalBase de datos NoSQL de clave-valor / documentos para registros estructuradosAlmacenamiento de objetos para archivos, blobs y datos no estructurados
Unidad de datosItem (un conjunto de atributos tipados), direccionado por clave primariaObjeto (bytes + metadatos), direccionado por una clave dentro de un bucket
Tamaño máx. por unidad400 KB por Item (nombres + valores de atributos)5 TB por objeto (PUT único de hasta 5 GB; las cargas mayores usan multiparte)
Consulta / accesoGetItem, Query, Scan, BatchGetItem, PartiQL, índices secundarios (GSI/LSI)GET / PUT / DELETE por clave, LIST de un bucket; consulta in situ mediante Amazon Athena (o S3 Select para clientes existentes)
Perfil de latenciaLecturas/escrituras de milisegundos de un solo dígito para Items individuales a cualquier escalaRendimiento de objetos duradero; latencia por solicitud mayor que una base de datos clave-valor, no búsquedas de registros en milisegundos
ConsistenciaEventualmente consistente por defecto; lecturas fuertemente consistentes disponibles por solicitudConsistencia fuerte de lectura tras escritura para todos los objetos y todas las solicitudes (desde 2020)
Modelo de preciosCapacidad de lectura/escritura (RCU/WCU — bajo demanda o aprovisionada) + almacenamiento de datos por GB-mesAlmacenamiento por GB-mes (por clase de almacenamiento) + cargos por solicitud (PUT/GET/LIST) + recuperación / transferencia de datos
Cargas idealesPerfiles de usuario, sesiones, carritos, registros de evento/estado, metadatos, acceso de tipo OLTP de alto rendimientoMedios, copias de seguridad, archivos de data-lake, activos estáticos, exportaciones grandes, archivado

Cada celda de arriba está extraída de la documentación oficial de AWS (consulta la nota de procedencia al principio de este archivo).

Cuándo usar DynamoDB

Recurre a DynamoDB cuando tus datos son registros estructurados a los que accedes por clave:

  • Muchos Items pequeños (cada uno por debajo del límite de 400 KB) que lees, escribes y actualizas individualmente.
  • Búsquedas predecibles y de baja latencia — DynamoDB apunta a lecturas y escrituras de milisegundos de un solo dígito para Items individuales a cualquier escala.
  • Patrones de acceso que puedes expresar con una clave primaria e índices secundarios: obtener por id, consultar una partición, filtrar dentro de una partición.
  • Alto rendimiento de escritura con actualizaciones granulares (cambiar un atributo sin reescribir todo el registro).

Si te encuentras intentando almacenar un archivo de 5 MB dentro de un Item, esa es la señal de que has llegado al límite de DynamoDB — consulta el límite de tamaño de Item de DynamoDB.

Cuándo usar S3

Recurre a Amazon S3 cuando tus datos son un archivo o blob entero que recuperas por nombre:

  • Imágenes, PDF, vídeos, audio y otros activos binarios.
  • Copias de seguridad, exportaciones de base de datos y archivos de data-lake (Parquet, CSV, JSON) consultados más tarde con una herramienta como Amazon Athena.
  • Objetos grandes — S3 almacena objetos de hasta 5 TB cada uno, mucho más allá de cualquier registro de base de datos individual.
  • Activos de sitio web estático y contenido servido directamente a los usuarios.

S3 no es una base de datos: no puedes consultar el contenido de objetos arbitrarios con índices ricos como consultas los Items de DynamoDB. El filtrado de estilo SQL in situ sobre un objeto está disponible mediante Amazon Athena (S3 Select sigue disponible para clientes existentes pero se cerró a nuevos clientes en 2024).

Usarlos juntos

Los dos servicios son más potentes combinados. La propia orientación de AWS para datos demasiado grandes para un Item de DynamoDB es almacenar el objeto en S3 y mantener un puntero en DynamoDB:

  • Almacena el archivo grande (imagen, documento, vídeo) como un objeto en S3.
  • Almacena sus metadatos — la clave del objeto de S3, el tipo de contenido, el propietario, las etiquetas, las marcas de tiempo — como un Item en DynamoDB, donde es consultable de forma barata.
  • Busca el registro en DynamoDB por clave, luego obtén el objeto de S3 usando el identificador almacenado.

Una advertencia que AWS destaca: no hay transacciones que abarquen DynamoDB y S3, así que tu aplicación maneja los fallos parciales (por ejemplo, limpiar un objeto huérfano de S3 si la escritura de DynamoDB falla).

Trabajar con DynamoDB

Una vez que has elegido DynamoDB para la mitad estructurada de tus datos, DynoTable es un cliente de DynamoDB de escritorio para explorar, editar y consultar tablas en macOS, Windows y Linux. Lee tu cadena de credenciales estándar de AWS, así que no hay nada específico de DynamoDB que migrar — apúntalo a tu región y tablas y tus datos permanecen en DynamoDB.

Cuando necesitas construir a mano las expresiones GetItem, Query, Update o de condición que respaldan el patrón de metadatos-en-DynamoDB de arriba, el DynamoDB Expression Builder gratuito genera la solicitud en formato SDK de AWS, CLI y boto3. Para dimensionar un Item frente al límite de 400 KB antes de decidir qué pertenece a S3, la calculadora de tamaño de Item mide el tamaño en bytes de un registro.

FAQ

¿Puede DynamoDB almacenar archivos o imágenes?

Pequeños, dentro de los límites. Un Item de DynamoDB puede contener datos binarios, pero todo el Item — cada nombre y valor de atributo — debe mantenerse por debajo de 400 KB. Para cualquier cosa más grande, la práctica recomendada documentada por AWS es almacenar el archivo como un objeto en Amazon S3 y mantener la clave del objeto de S3 (más los metadatos) en un Item de DynamoDB.

¿Es S3 más barato que DynamoDB?

Facturan de forma diferente, así que depende de la carga de trabajo en vez de una respuesta plana. S3 cobra por almacenamiento por GB-mes más tarifas por solicitud y recuperación, y generalmente es el hogar más barato para grandes volúmenes de bytes de acceso poco frecuente. DynamoDB cobra por capacidad de lectura/escritura más almacenamiento y está construido para el acceso de alto rendimiento y baja latencia a muchos registros pequeños. Almacenar blobs grandes en DynamoDB está limitado en tamaño y es comparativamente caro — por eso la división de objeto-en-S3-más-metadatos-en-DynamoDB es el patrón estándar.

¿DynamoDB o S3 para JSON?

Si el JSON es un registro estructurado que consultas y actualizas por clave — un usuario, un pedido, una sesión — DynamoDB encaja, y mapea el JSON a atributos tipados y admite PartiQL. Si el JSON es un documento entero o archivo de data-lake que almacenas y luego escaneas en bloque (por ejemplo consultándolo con Amazon Athena), S3 encaja. Un híbrido frecuente mantiene los campos consultables en DynamoDB y la carga JSON completa como un objeto en S3.

Relacionado

Verificado por última vez el 2026-07-12 contra la documentación oficial de AWS DynamoDB y Amazon S3. Amazon S3, DynamoDB y Athena son servicios de Amazon Web Services, mencionados aquí solo a efectos de identificación.

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.