Contenido del curso

Cómo funciona DynamoDB en AWS

Resumen

Si estás diseñando una base de datos para una aplicación que crece rápido y necesita responder en milisegundos, Amazon DynamoDB es una de las opciones más potentes dentro de AWS. Aquí descubrirás cómo funciona esta base de datos NoSQL, qué la hace tan flexible y cómo aprovechar funciones como índices secundarios, streams y tablas globales para construir arquitecturas resilientes.

¿Qué es DynamoDB y por qué lo creó Amazon?

Amazon desarrolló DynamoDB porque las bases de datos transaccionales tradicionales no aguantaban el rendimiento ni la escala que la compañía necesitaba en eventos como Black Friday o Prime Day. Es una base de datos no relacional, lo que significa que no exige un esquema fijo: cada item dentro de una tabla puede tener atributos distintos y todos conviven sin problema [1:30].

Imagina una tabla con un libro que tiene nombre, autor y año, junto a un álbum que tiene nombre, autor y un track ID, y al lado una película con director y protagonista. Todo en la misma tabla. Esa flexibilidad de esquema es uno de los grandes diferenciales frente a una base relacional.

¿DynamoDB es SQL o NoSQL? Es NoSQL. No usa tablas con esquema fijo ni joins; cada item puede tener atributos distintos dentro de una misma tabla.

¿Cómo funcionan las primary keys, partition keys y sort keys?

La forma de acceder a cada item en DynamoDB es a través de una primary key, que se compone de una partition key y, opcionalmente, una sort key [2:35]. A diferencia de una base relacional, aquí no hay foreign keys ni relaciones entre tablas. El diseño depende completamente de cómo vayas a consultar los datos.

Por eso, elegir bien tu partition key y tu sort key desde el inicio es una decisión crítica. Puedes consultar por identificador de libro, por autor o por año, pero todo eso se define con la estructura de claves que armes.

¿Cuándo usar capacidad bajo demanda o aprovisionada?

DynamoDB escala automáticamente con picos de tráfico y te ofrece dos modelos para aprovisionar capacidad [3:45]:

  • Bajo demanda: las unidades de lectura y escritura crecen o decrecen solas. Ideal cuando la carga es impredecible.
  • Aprovisionada: defines desde el inicio cuántas lecturas y escrituras necesitas. Más económica si ya conoces tu patrón de uso.

Esa elección impacta directamente el costo y la previsibilidad de tu factura.

¿Qué diferencia hay entre local secondary index y global secondary index?

Una ventaja clave de DynamoDB es poder consultar los mismos datos por distintos patrones sin duplicar tablas. Para eso existen dos tipos de índices [5:30]:

  • Local secondary index (LSI): reutiliza la partition key de la tabla principal y cambia la sort key. Solo se puede crear al momento de crear la tabla y no se puede modificar después.
  • Global secondary index (GSI): permite definir partition keys y sort keys completamente distintas. Puedes crearlos, modificarlos y eliminarlos en cualquier momento.

Los GSI son tu mejor aliado cuando los patrones de acceso cambian con el tiempo o no los conoces desde el principio.

¿Cuándo conviene un GSI sobre un LSI? Cuando necesitas flexibilidad para cambiar los patrones de búsqueda después de crear la tabla, o cuando la partition key del nuevo índice debe ser distinta a la original.

¿Qué es la consistencia eventual en DynamoDB?

DynamoDB está diseñado para responder con latencia mínima y replicarse automáticamente. Cuando una tabla se replica en varias zonas o regiones, hay un trade-off importante con la consistencia de los datos [7:15].

Con consistencia eventual, tus lecturas son más rápidas y baratas, pero podrías leer datos que aún no reflejan la última escritura. Si necesitas siempre el dato más actualizado, debes pedir lecturas fuertemente consistentes, sacrificando algo de latencia.

¿Para qué sirve DynamoDB Streams?

DynamoDB Streams captura y guarda durante 24 horas todos los eventos que ocurren sobre una tabla: lecturas, escrituras y borrados [8:20]. Es la pieza clave para arquitecturas basadas en eventos.

Un flujo típico se ve así:

  • La aplicación escribe en una tabla de DynamoDB.
  • Streams captura el evento y dispara una función Lambda.
  • La Lambda procesa el dato y lo envía a otra tabla, a un bucket de S3 o a un servicio de notificaciones.

También puedes conectar Streams con Kinesis Data Streams para procesar eventos en tiempo real, enviarlos con Data Firehose a S3, consultarlos con Athena o cargarlos en un clúster de Amazon Redshift para análisis de big data. Y si necesitas búsquedas avanzadas, puedes integrarlo con OpenSearch o con SNS y SQS para notificaciones.

¿Qué son las tablas globales en DynamoDB?

La mayoría de servicios de AWS viven en una sola región y se replican entre zonas de disponibilidad dentro de esa región. DynamoDB rompe ese límite con las tablas globales [10:30]: activas la opción y AWS replica automáticamente tus tablas en otras regiones.

Esto te garantiza alta disponibilidad y resiliencia sin tener que diseñar pasos intermedios de replicación. Para una empresa de juegos en línea con usuarios distribuidos por el mundo, esa replicación global combinada con capacidad bajo demanda es la receta más rentable para mantener una experiencia fluida.

¿Cómo diseñarías tú la arquitectura para esa empresa de juegos? Déjame tu respuesta en los comentarios.