🗄️

Bases de Datos - RDS, DynamoDB, Aurora

RDS, Aurora, DynamoDB y ElastiCache

⏱️ Tiempo estimado de lectura: 25 minutos

Amazon RDS - Relational Database Service

RDS es un servicio de base de datos relacional gestionado que facilita la configuración, operación y escalado de bases de datos en la nube.

Motores soportados:
- Amazon Aurora: MySQL y PostgreSQL compatible (AWS propio)
- MySQL: Versiones 5.7, 8.0
- PostgreSQL: Versiones 11-15
- MariaDB: Compatible con MySQL
- Oracle: Standard y Enterprise editions
- SQL Server: Express, Web, Standard, Enterprise

Ventajas sobre base de datos auto-gestionada:
- Provisionamiento automático, parches de OS
- Backups continuos con restauración point-in-time
- Dashboards de monitoreo
- Read Replicas para escalado de lectura
- Multi-AZ para disaster recovery
- Ventanas de mantenimiento para upgrades
- Escalado vertical y horizontal

Puntos Clave

  • No puedes hacer SSH a instancias RDS (totalmente gestionado)
  • Almacenamiento respaldado por EBS (gp2, gp3, io1)
  • Backups automáticos habilitados por defecto (1-35 días retención)
  • Snapshots manuales no expiran automáticamente
  • Read Replicas pueden ser en misma AZ, cross-AZ o cross-region

RDS Multi-AZ y Read Replicas

RDS ofrece dos mecanismos principales para alta disponibilidad y escalado:

Multi-AZ (Disaster Recovery):
- Réplica síncrona en otra AZ automática
- Un único DNS name, failover automático a standby
- Standby no puede usarse para lecturas (solo failover)
- No downtime para enable Multi-AZ (desde snapshot)
- Protege contra pérdida de AZ, pérdida de red, fallo de almacenamiento

Read Replicas (Escalado de lecturas):
- Réplica asíncrona (hasta 15 read replicas por master)
- Aplicaciones deben actualizar connection string para usar replicas
- Pueden ser cross-AZ o cross-region
- Se puede promover a base de datos standalone
- Uso: Analytics, reporting sin impactar producción

Diferencias clave:
- Multi-AZ = Disaster Recovery (failover automático)
- Read Replica = Performance/Scaling (manual application changes)

Puntos Clave

  • Multi-AZ es síncrono, Read Replica es asíncrono
  • Multi-AZ no tiene cargo de transferencia de datos intra-AZ
  • Read Replicas cross-region tienen cargo de transferencia
  • Puedes tener Multi-AZ + Read Replicas simultáneamente
  • Failover Multi-AZ toma ~60-120 segundos

Amazon Aurora

Aurora es una base de datos relacional propietaria de AWS compatible con MySQL y PostgreSQL, optimizada para la nube.

Ventajas sobre RDS MySQL/PostgreSQL:
- 5x mejor rendimiento que MySQL, 3x que PostgreSQL
- Almacenamiento auto-escalable: crece automáticamente en incrementos de 10GB (hasta 128TB)
- Hasta 15 read replicas (vs 5 en RDS)
- Failover instantáneo (<30 segundos)
- Costo ~20% más que RDS, pero más eficiente

Arquitectura:
- 6 copias de datos en 3 AZ (4/6 para escrituras, 3/6 para lecturas)
- Auto-healing con peer-to-peer replication
- Almacenamiento striped en cientos de volúmenes
- Un master para escrituras
- Hasta 15 read replicas con auto-scaling

Características especiales:
- Aurora Serverless: Capacidad auto-escalable, pago por segundo
- Aurora Global Database: Cross-region, <1 segundo de replication lag
- Aurora Multi-Master: Múltiples instancias de escritura
- Backtrack: Restaurar datos en cualquier punto sin backups

Puntos Clave

  • Aurora es cloud-native, no es MySQL/PostgreSQL con mejoras
  • Separación de cómputo y almacenamiento
  • Backups, failover y recuperación son más rápidos
  • Aurora Serverless ideal para cargas impredecibles/intermitentes
  • Global Database para DR y baja latencia global

Amazon DynamoDB

DynamoDB es una base de datos NoSQL completamente gestionada, de clave-valor y documentos, con latencia de milisegundos de un dígito a cualquier escala.

Características:
- Totalmente gestionado: Sin servidores que provisionar
- Rendimiento: Latencia consistente <10ms
- Escalado: Millones de requests/segundo, trillones de filas, 100TB de datos
- Alta disponibilidad: Replicación multi-AZ por defecto
- Seguridad: IAM integration, encryption at rest y in transit

Conceptos clave:
- Primary Key: Partition Key (hash) o Partition Key + Sort Key (range)
- Partition Key: Determina partición física (debe tener alta cardinalidad)
- Sort Key: Permite queries ranged, datos ordenados
- Attributes: Datos adicionales (schema flexible)
- Item: Fila (máximo 400KB)

Capacidad:
- Provisioned: Especificas RCU (Read) y WCU (Write), más económico si predecible
- On-Demand: Pago por request, auto-scaling, ideal para tráfico impredecible

Puntos Clave

  • NoSQL = no joins, no aggregations complejas (usa SQL databases para eso)
  • Partition Key debe distribuir datos uniformemente
  • Global Secondary Index (GSI): nueva partition/sort key
  • Local Secondary Index (LSI): misma partition key, diferente sort key
  • DynamoDB Streams captura cambios (integra con Lambda)

💻 Operaciones básicas en DynamoDB

# Crear tabla
aws dynamodb create-table \n  --table-name Users \n  --attribute-definitions \n    AttributeName=UserId,AttributeType=S \n    AttributeName=Email,AttributeType=S \n  --key-schema \n    AttributeName=UserId,KeyType=HASH \n    AttributeName=Email,KeyType=RANGE \n  --billing-mode PAY_PER_REQUEST

# Insertar item
aws dynamodb put-item \n  --table-name Users \n  --item '{
    "UserId": {"S": "user123"},
    "Email": {"S": "[email protected]"},
    "Name": {"S": "Juan Pérez"}
  }'

Amazon ElastiCache

ElastiCache es un servicio de almacenamiento en caché en memoria totalmente gestionado que soporta Redis y Memcached.

Redis vs Memcached:

Redis:
- Estructuras de datos avanzadas (sets, sorted sets, listas)
- Persistencia de datos (snapshots, AOF)
- Replicación multi-AZ con failover automático
- Read Replicas para escalado de lectura
- Backup y restore
- Pub/Sub, Geospatial data, Lua scripting

Memcached:
- Arquitectura simple de clave-valor
- Multi-threaded (mejor para caching simple)
- No persistencia
- No replicación
- Sharding automático

Patrones de uso:
- Cache-Aside: App lee de cache, si miss lee de DB y escribe a cache
- Write-Through: App escribe a cache y cache escribe a DB
- Session Store: Almacenar sesiones de usuario (Redis con persistencia)

Puntos Clave

  • Redis para features avanzados y alta disponibilidad
  • Memcached para caching simple y multi-core
  • ElastiCache reduce latencia y carga en databases
  • Lazy Loading vs Write Through strategies
  • Redis Cluster mode para sharding horizontal