Amazon DynamoDB
Servicio de base de datos NoSQL completamente administrado que garantiza latencia de milisegundos y escala automáticamente ante cualquier volumen de tráfico
Descripción general
Amazon DynamoDB es un servicio de base de datos NoSQL completamente administrado que soporta tanto el modelo de datos clave-valor como el de documentos. Independientemente del volumen de datos o la cantidad de solicitudes, mantiene un rendimiento consistente de un solo dígito de milisegundos y escala automáticamente la capacidad. Soporta tablas globales para replicación multi-región, transacciones ACID, TTL (Time to Live) para expiración automática de ítems, DynamoDB Streams para procesamiento basado en eventos y backup continuo con recuperación point-in-time.
Diseño de partition key y prevención de hot partitions
El rendimiento de DynamoDB depende fundamentalmente del diseño de la partition key. Los datos se distribuyen en múltiples particiones según el valor hash de la partition key, y si las solicitudes se concentran en una partición específica (hot partition), se produce throttling. El principio de diseño es seleccionar una partition key con alta cardinalidad (muchos valores únicos) que distribuya las solicitudes uniformemente. Patrones problemáticos incluyen usar la fecha como partition key (las solicitudes se concentran en la fecha actual) o usar un ID de categoría con pocos valores. Soluciones incluyen agregar un sufijo aleatorio (write sharding) o usar claves compuestas. La función de capacidad adaptativa mitiga parcialmente los hot partitions redistribuyendo automáticamente la capacidad, pero no es una solución fundamental. Para patrones de acceso complejos, los índices secundarios globales (GSI) permiten crear patrones de acceso alternativos, pero cada GSI consume capacidad adicional y tiene un límite de 20 por tabla.
Criterios de decisión entre modo bajo demanda y modo provisionado
DynamoDB ofrece dos modos de capacidad: bajo demanda y provisionado. El modo bajo demanda cobra por solicitud de lectura/escritura sin necesidad de planificar capacidad, siendo ideal para cargas de trabajo impredecibles, nuevas aplicaciones o entornos de desarrollo. El modo provisionado define unidades de capacidad de lectura (RCU) y escritura (WCU) por adelantado, y con Auto Scaling ajusta automáticamente dentro de los límites configurados. El modo provisionado es más económico para cargas de trabajo predecibles con tráfico estable. La diferencia de costo es significativa: el modo bajo demanda cuesta aproximadamente 5-7 veces más por solicitud que el provisionado con capacidad reservada. Un patrón práctico es comenzar con modo bajo demanda para nuevas aplicaciones, analizar los patrones de tráfico durante unas semanas y luego cambiar a modo provisionado con Auto Scaling una vez que los patrones se estabilizan.
Optimización operativa con DAX, TTL y backups
DAX (DynamoDB Accelerator) es una caché en memoria que reduce la latencia de lectura de milisegundos a microsegundos. Es efectivo para cargas de trabajo con lecturas repetitivas de las mismas claves, como tablas de clasificación de juegos o catálogos de productos. TTL permite la expiración automática de ítems especificando un atributo de timestamp, siendo útil para datos de sesión, tokens temporales o logs con período de retención. Los ítems expirados se eliminan automáticamente sin consumir capacidad de escritura. Para backups, el backup continuo con recuperación point-in-time permite restaurar a cualquier segundo dentro de los últimos 35 días. Los backups bajo demanda se retienen indefinidamente y son útiles antes de migraciones o cambios de esquema. DynamoDB Streams captura los cambios en la tabla en tiempo real, permitiendo arquitecturas event-driven con Lambda para materializar vistas, sincronizar con ElastiCache o replicar a otros almacenes de datos.