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ística | DynamoDB | Amazon S3 |
|---|---|---|
| Propósito principal | Base de datos NoSQL de clave-valor / documentos para registros estructurados | Almacenamiento de objetos para archivos, blobs y datos no estructurados |
| Unidad de datos | Item (un conjunto de atributos tipados), direccionado por clave primaria | Objeto (bytes + metadatos), direccionado por una clave dentro de un bucket |
| Tamaño máx. por unidad | 400 KB por Item (nombres + valores de atributos) | 5 TB por objeto (PUT único de hasta 5 GB; las cargas mayores usan multiparte) |
| Consulta / acceso | GetItem, 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 latencia | Lecturas/escrituras de milisegundos de un solo dígito para Items individuales a cualquier escala | Rendimiento de objetos duradero; latencia por solicitud mayor que una base de datos clave-valor, no búsquedas de registros en milisegundos |
| Consistencia | Eventualmente consistente por defecto; lecturas fuertemente consistentes disponibles por solicitud | Consistencia fuerte de lectura tras escritura para todos los objetos y todas las solicitudes (desde 2020) |
| Modelo de precios | Capacidad de lectura/escritura (RCU/WCU — bajo demanda o aprovisionada) + almacenamiento de datos por GB-mes | Almacenamiento por GB-mes (por clase de almacenamiento) + cargos por solicitud (PUT/GET/LIST) + recuperación / transferencia de datos |
| Cargas ideales | Perfiles de usuario, sesiones, carritos, registros de evento/estado, metadatos, acceso de tipo OLTP de alto rendimiento | Medios, 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
- Aprende: el límite de tamaño de Item de DynamoDB · Cuándo usar DynamoDB
- Construye solicitudes visualmente con el DynamoDB Expression Builder.
- Dimensiona registros con la calculadora de tamaño de Item de DynamoDB.
- Descarga DynoTable para trabajar con tus tablas de DynamoDB.
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.