Día 29: TTL y Backups: Limpieza automática y protección de datos
⏳ Día 29: Datos que se autodestruyen y copias de seguridad
¡Llegamos al final de nuestra serie de DynamoDB! Ya sabemos crear tablas rápidas y reactivas, pero un buen arquitecto también sabe cuándo deshacerse de los datos que ya no sirven y cómo protegerse ante un desastre. Hoy aprenderás el TTL (Time to Live) para ahorrar espacio y los métodos de Backup para dormir tranquilo.
1. TTL (Time to Live): La papelera automática
¿Para qué pagar por guardar logs de hace 3 años o sesiones de usuario que ya expiraron?
- Ahorro total: AWS borra los items expirados automáticamente y no te cobra por esas escrituras de borrado.
- Cómo funciona: Eliges un atributo que contenga una fecha en formato Unix Timestamp. Cuando llega esa hora, DynamoDB marca el item para eliminarlo.
2. Backups y Point-in-Time Recovery (PITR)
- On-Demand Backups: Fotos completas de tu tabla que puedes guardar por años.
- PITR (Point-in-Time Recovery): Es como una máquina del tiempo. Si lo activas, puedes restaurar tu tabla a cualquier segundo exacto de los últimos 35 días. Ideal si un script mal programado borra media base de datos por error.
🛠️ El Código (CloudFormation)
Vamos a crear una tabla de “Sesiones” que tenga el PITR activado para seguridad y el TTL configurado para limpiar sesiones viejas.
1. Tabla con Auto-limpieza y Protección
TablaSesionesSegura:
Type: AWS::DynamoDB::Table
Properties:
TableName: "SesionesApp"
AttributeDefinitions:
- AttributeName: "SessionId"
AttributeType: "S"
KeySchema:
- AttributeName: "SessionId"
KeyType: "HASH"
BillingMode: PAY_PER_REQUEST
# 1. ACTIVAR EL TTL (Auto-borrado)
TimeToLiveSpecification:
AttributeName: "ExpiraEn" # Nombre del campo con la fecha
Enabled: true
# 2. ACTIVAR LA MÁQUINA DEL TIEMPO (PITR)
PointInTimeRecoverySpecification:
PointInTimeRecoveryEnabled: true
📚 Conceptos Nuevos Explicados
1. Unix Timestamp
Para que el TTL funcione, la fecha debe estar en segundos desde el 1 de enero de 1970 (ej: 1714834800). Si lo pones en formato normal (YYYY-MM-DD), DynamoDB lo ignorará.
2. Borrado Asíncrono
El TTL no borra el archivo exactamente al segundo que expira. Suele tardar entre unos minutos y 48 horas en desaparecer físicamente, pero para tu aplicación es como si ya no existiera.
3. Restauración de Tablas
Cuando restauras un Backup o usas PITR, AWS crea una tabla nueva. No sobreescribe la actual. Esto te permite comparar datos antes de decidir cuál conservar.
🚀 Cómo Desplegarlo
Protege tus datos y automatiza su limpieza con un solo comando:
aws cloudformation deploy \
--stack-name Dynamo-Final-D29 \
--template-file 29-dynamo-final.yaml
📈 Cómo probar el TTL
- Ve a la consola de DynamoDB → Tabla
SesionesApp. - En la pestaña Additional settings, verifica que el TTL está “Enabled” apuntando al campo
ExpiraEn. - Crea un Item y en el campo
ExpiraEnpon un número de hace 5 minutos (puedes buscar “Unix Timestamp converter” en Google). - En un rato (puede tardar), verás que el registro desaparece solo. ¡Magia serverless!
📂 Código Adjunto
Puedes bajar el template final con seguridad y TTL aquí: Ver archivo en GitHub
🎥 Video Tutorial
En el video de hoy te enseño cómo recuperar una tabla que fue borrada “accidentalmente” en menos de 5 minutos usando PITR:
💡 ¿Qué sigue?
Hemos terminado con las bases de datos NoSQL. Ahora que tenemos dónde guardar archivos (S3) y dónde guardar datos (DynamoDB), es momento de aprender a enviar mensajes entre ellos. ¡Próximo módulo: Amazon SNS y SQS para desacoplar nuestra arquitectura!