🗄️
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
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)
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
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
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)
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