Amazon DynamoDB
Qué es: Amazon DynamoDB es la base de datos NoSQL serverless de AWS, de tipo clave-valor y documentos, que responde en milisegundos de un dígito a cualquier escala.
- Serverless: sin instancias que elegir, parchear ni escalar, y sin ventanas de mantenimiento. Copia tus datos en tres AZ.
- Tabla, elemento y clave: una tabla guarda elementos (items), cada uno con sus propios atributos. La clave de partición (partition key) identifica dónde vive cada elemento; una clave de ordenación (sort key) opcional ordena los que comparten partición.
- Query frente a Scan: Query va directo a una clave de partición; Scan lee la tabla entera. Por eso el diseño empieza por las preguntas que hará tu aplicación.
- Capacidad: bajo demanda (on-demand), pagas cada lectura y escritura y escala sola, incluso a cero; o aprovisionada, fijas lecturas y escrituras por segundo y pagas por hora, con Auto Scaling opcional.
- Extras: tablas globales, copiadas en varias Regiones con escritura en todas; copias continuas para restaurar a cualquier segundo de los últimos 35 días; y DAX, una caché que baja la respuesta a microsegundos.
Analogía: los casilleros numerados de una estación:
con el número abres el tuyo al instante, haya diez o diez millones.
Dónde falla la analogía: en los casilleros puedes
recorrerlos todos para buscar una maleta roja. En DynamoDB eso es un
Scan, y en una tabla grande es lento y caro; tampoco hay
JOIN entre tablas.
Ejemplo real: Juegos Pixelia lanza un juego móvil y
no sabe si tendrá mil o diez millones de jugadores. Guarda cada perfil
en DynamoDB con la clave jugador_id y la capacidad bajo
demanda: el día del lanzamiento la tabla absorbe el pico sin que nadie
toque servidores.
Úsalo cuando: accedas por clave, el tráfico sea
enorme o impredecible, quieras serverless o necesites latencia baja
constante: carritos, sesiones, perfiles, tablas de puntuación.
No lo uses cuando: necesites JOIN,
consultas libres por cualquier columna o reportes complejos: ahí va una
relacional.
En el examen: “NoSQL”, “clave-valor”, “milisegundos de un dígito”, “serverless” o “escala sin administrar servidores” para datos es DynamoDB. “Microsegundos para DynamoDB” es DAX.
Trampa común: DynamoDB no es relacional aunque
guarde “tablas”. Sus tablas no tienen esquema fijo ni JOIN,
y no se consulta igual que con SQL.