Saltar al contenido
CLF-C02Sesión 10 · Bases de datos

Hazlo tú (15 min)

Creas una tabla de DynamoDB en modo bajo demanda, guardas tres pedidos, comparas una Query con un Scan y borras la tabla. RDS no se crea: lo dimensionas en papel en la parte D.

Costo: $0 a tu tarjeta. Bajo demanda cobra 0,625 dólares por millón de escrituras y 0,125 por millón de lecturas en Norte de Virginia: tus pocas operaciones no llegan a una milésima de centavo, y salen de tus créditos (Sesión 2). Los 25 GB de almacenamiento “siempre gratis” de DynamoDB cubren tus pocos bytes. No crees una base en RDS ni en Aurora: cobran cada hora que existen.

Por qué bajo demanda. La franquicia “siempre gratis” de lecturas y escrituras es solo para el modo aprovisionado. Pero la consola, por defecto, puede crearla aprovisionada y con Auto Scaling, que añade alarmas de monitoreo. Esas alarmas pueden cobrar y no se borran con la tabla. Bajo demanda no crea nada aparte, y su costo aquí es despreciable.

Plan gratuito: DynamoDB figura entre los servicios gratuitos del registro simplificado, pero AWS no lo confirma para toda cuenta del plan gratuito. Si tu cuenta no te deja crear la tabla, no pases al plan de pago: haz la parte D.

Parte A · Crear la tabla (con el rol).

  1. Entra con estudio-diario, elige tu Región de la Sesión 2 y luego Switch role › laboratorio.
  2. Abre DynamoDB, elige Tables y luego Create table.
  3. En Table name escribe pedidos-s10. En Partition key escribe cliente, tipo String. En Sort key escribe pedido, tipo String.
  4. En Table settings elige Customize settings. Deja Table class en DynamoDB Standard.
  5. En Read/write capacity settings elige On-demand. No actives Deletion protection ni copias continuas (point-in-time recovery); en cifrado deja la opción que viene marcada, que no cobra.
  6. Elige Create table y espera a que su estado sea Active.

Parte B · Guardar y consultar (con el rol).

  1. Abre pedidos-s10 y elige Explore table items, o Explore items en el menú izquierdo.
  2. Elige Create item. Escribe ana en cliente y 001 en pedido. Elige Add new attribute › Number, nómbralo total y escribe 25. Elige Create item.
  3. Repite con ana, 002, total 40, y con luis, 001, total 15. Tres elementos; el de luis podría tener otros atributos y la tabla lo aceptaría.
  4. En Scan or query items, elige Query. En la clave de partición escribe ana y elige Run: salen sus dos pedidos, ordenados por pedido.
  5. Cambia a Scan y elige Run: salen los tres. Scan recorrió la tabla entera; para encontrar solo los de ana habría leído también el de luis y lo habría descartado.

Comprueba: explicas por qué Query es lo normal y Scan, la excepción: Query lee solo la partición pedida; Scan lee y cobra toda la tabla. Con tres elementos no se nota; con diez millones, sí.

Parte C (opcional) · Ver lo leído en CloudShell (con el rol). Ejecuta estos dos comandos y compara Count, los elementos devueltos, con ScannedCount, los leídos: 2 y 2 en la Query; 2 y 3 en el Scan con filtro.

aws dynamodb query \
 --table-name pedidos-s10 \
 --key-condition-expression "cliente = :c" \
 --expression-attribute-values \
 '{":c":{"S":"ana"}}'

aws dynamodb scan \
 --table-name pedidos-s10 \
 --filter-expression "cliente = :c" \
 --expression-attribute-values \
 '{":c":{"S":"ana"}}'

Limpieza (con el rol, antes de Switch back):

  1. En Tables, marca pedidos-s10 y elige Delete. Si el cuadro ofrece crear una copia de seguridad, deja esa opción sin marcar. Escribe la palabra que pide y confirma.
  2. Comprueba en Backups que no quedó ninguna copia de pedidos-s10: una copia guardada cobra por GB cada mes.
  3. Elige Switch back: vuelves a ser estudio-diario, solo lectura.

Parte D · En papel (5 min). Nébula usa RDS para MySQL en una sola AZ. Pide tres cosas: seguir funcionando si cae su AZ; que los reportes de ventas dejen de frenar la tienda; y poder levantar la base en otra Región si cae la suya. Elige una solución para cada una y di si es síncrona o asíncrona.

Comprueba: Multi-AZ para la caída de AZ (síncrona, cambio automático); una réplica de lectura para los reportes (asíncrona); una réplica de lectura en otra Región que promoverías en un desastre (asíncrona, RPO de segundos o minutos). Pasar a Aurora resolvería las dos primeras con sus réplicas en varias AZ.

124