Saltar al contenido
← Catálogo
Bases de datosIntermedio

Amazon DynamoDB

Base de datos NoSQL totalmente gestionada, con latencia de milisegundos a cualquier escala.

En palabras simples

Es un casillero gigante: si sabes el número del casillero, abrirlo es instantáneo sin importar cuántos casilleros haya. Pero buscar "todos los casilleros con algo rojo adentro" es caro.

Cuándo aplicarlo

Cuando necesitas guardar y consultar datos con acceso predecible por clave —"dame el usuario X"— a alta velocidad y sin administrar servidores de base de datos.

  • ▸Guardar sesiones de usuario o carritos de compra
  • ▸Tablas de estado para aplicaciones serverless, junto a Lambda
  • ▸Datos de alto volumen con lecturas y escrituras simples y muy frecuentes
  • ▸Registro de asistencia a eventos del club

Vocabulario mínimo

Partition key
La clave principal por la que DynamoDB distribuye y localiza los datos. Elegirla mal es el error de diseño más común.
Sort key
Clave secundaria opcional que permite ordenar y filtrar dentro de una misma partition key.
Item
Un registro de la tabla. A diferencia de SQL, cada item puede tener atributos distintos.
On-demand vs. Provisioned
Dos modos de capacidad: pagar por petición realizada, o reservar capacidad fija por hora.

Costo y capa gratuita

Cómo se cobra
En modo on-demand, por lectura y escritura realizada. En modo provisioned, por capacidad reservada por hora. Más el almacenamiento por GB.
Capa gratuita
25 GB de almacenamiento y 25 unidades de capacidad de lectura y escritura al mes, de forma permanente (no expira a los 12 meses).

Cuidado con los créditos

  • ⚠Usar Scan en lugar de Query: Scan lee la tabla entera y se cobra por todo lo leído, no por lo que devuelve.
  • ⚠Dejar capacidad provisionada alta después de una prueba de carga.
  • ⚠Crear índices secundarios globales que no se usan: cada uno duplica el costo de escritura.

Descripción

DynamoDB es una base de datos NoSQL (clave-valor y documentos) completamente gestionada: no hay un servidor que administrar, ni versiones que actualizar, y escala automáticamente para soportar desde unas pocas consultas por segundo hasta millones.

A cambio de esa simplicidad operativa, pide que diseñes tus tablas pensando primero en cómo vas a consultarlas. No funciona como una base de datos relacional, donde modelas los datos y después escribes cualquier consulta que se te ocurra.

Cómo funciona

  1. Creas una tabla y defines su partition key (y opcionalmente una sort key).
  2. Insertas items: registros con los atributos que quieras, sin esquema fijo.
  3. Consultas con Query cuando conoces la clave — rápido y barato — o con Scan cuando no la conoces, que recorre toda la tabla y conviene evitar.
  4. DynamoDB reparte los datos internamente entre particiones sin que tú lo administres.

Manos a la obra

  • Crea una tabla AsistenciaEventos con partition key email y sort key fechaEvento.
  • Inserta tres items desde la consola.
  • Haz un Query por un email concreto y observa lo rápido y barato que resulta.
  • Haz un Scan con un filtro y compara las unidades de lectura consumidas: esa diferencia es la lección más importante del servicio.

Ejemplo visual

Registro de asistencia a un eventoPOST emailinvocaPutItemSocioformularioAPI Gatewayendpoint HTTPAWS Lambdavalida y escribeDynamoDBAsistenciaEventos
Registro de asistencia a un eventoUn socio del club envía su email desde un formulario. API Gateway recibe la petición e invoca una función Lambda, que escribe un item en la tabla de DynamoDB usando el email como partition key y la fecha del evento como sort key. Todo sin servidores propios y con costo prácticamente nulo al volumen de un club universitario.

La clave del diseño está en la tabla: con email como partition key y fechaEvento como sort key, consultar «a qué eventos vino esta persona» es un Query barato. Sin esa decisión, sería un Scan.

Cuándo NO es la mejor opción

  • Amazon RDS — si tus datos tienen relaciones complejas y necesitas consultas flexibles tipo SQL con joins y agregaciones.
  • Amazon S3 — si en realidad estás guardando archivos completos y no registros que se consultan por clave.

Se usa junto con

Aparece en certificaciones

  • AWS Certified Cloud Practitioner
  • AWS Certified Solutions Architect – Associate
  • AWS Certified Developer – Associate