DocumentDB
📘 ¿Qué es Amazon DocumentDB?
Amazon DocumentDB es un servicio de base de datos de documentos gestionada diseñado para ejecutar cargas de trabajo que usan MongoDB. AWS ofrece compatibilidad con las APIs de MongoDB, pero con un backend propietario optimizado para rendimiento, escalabilidad y disponibilidad.
-
⚙️ Servicio gestionado: backups automáticos, escalado, parches, replicación.
-
📄 Soporta documentos JSON estilo MongoDB.
-
🔄 Compatible con controladores y herramientas de MongoDB (mongo shell, Mongoose, etc.).
🔍 Características clave
| Característica | Descripción |
|---|---|
| Compatibilidad MongoDB | Compatible con versiones 3.6, 4.0 y 5.0 (no 100% igual). |
| Alta disponibilidad | Arquitectura con almacenamiento distribuido en 3 AZs. |
| Escalado | Escalado vertical y hasta 15 réplicas de lectura. |
| Backups | Automáticos, con retención configurable hasta 35 días. |
| Seguridad | VPC, TLS en tránsito, KMS para cifrado en reposo. |
| Monitoreo | Integración con CloudWatch y logs de auditoría. |
🧱 Arquitectura de DocumentDB
-
Separación entre capa de cómputo y almacenamiento (diseño similar a Aurora).
-
Tres copias de datos replicadas automáticamente en diferentes zonas de disponibilidad.
-
Escritorio principal (writer) + hasta 15 réplicas (readers).
-
Acceso a través de endpoint de clúster, o individual por nodo.
🛠️ Creación desde AWS Console o CLI
Vía consola:
-
Ir a Amazon DocumentDB > “Create cluster”
-
Elegir engine (ej: MongoDB 5.0)
-
Elegir instancia, tamaño, réplica, configuración de red/VPC
-
Habilitar backups, logging, etc.
Vía AWS CLI:
aws docdb create-db-cluster \
--db-cluster-identifier docdb-cluster \
--engine docdb \
--master-username admin \
--master-user-password clave123 \
--vpc-security-group-ids sg-xxxxx
aws docdb create-db-instance \
--db-instance-identifier docdb-instancia1 \
--db-cluster-identifier docdb-cluster \
--engine docdb \
--db-instance-class db.r5.large
🧑💻 Conexión desde cliente MongoDB
Amazon DocumentDB requiere:
-
Conexión segura por TLS
-
Estar dentro del VPC (o usar EC2 Bastion host)
-
Usar la cadena de conexión con formato:
mongo "mongodb://admin:<password>@docdb-cluster-endpoint:27017/?tls=true&tlsCAFile=rds-combined-ca-bundle.pem"
🔐 El archivo
rds-combined-ca-bundle.pemes necesario para TLS, descargable desde AWS.
📚 Compatibilidad con MongoDB
| Funcionalidad | Soportado en DocumentDB |
|---|---|
| Operaciones CRUD | ✅ |
| Agregaciones básicas | ✅ |
| Índices | ✅ |
| Transacciones multi-doc | ❌ (limitado) |
| Change Streams | ✅ (desde MongoDB 4.0) |
MongoDB Shell (mongo) | ✅ |
| Mongoose | ✅ (dependiendo del uso) |
| Triggers / Stored JS | ❌ |
🛡️ Seguridad
-
VPC: Solo accesible desde la red privada de AWS.
-
Grupos de seguridad: Controlan acceso por IP/puerto.
-
Cifrado en reposo: Activado con KMS.
-
TLS en tránsito: Requiere certificados CA.
-
IAM Authentication: No disponible aún (solo usuario/password).
🔄 Backups y recuperación
-
Automáticos: Activados por defecto, retención hasta 35 días.
-
Snapshots manuales: Se pueden crear/restaurar desde consola o CLI.
-
Point-in-time recovery (PITR): Recuperación a un punto exacto dentro del período de retención.
📈 Monitoreo y logs
-
CloudWatch Metrics: CPU, uso de almacenamiento, conexiones activas, etc.
-
Logs: Se pueden publicar en CloudWatch Logs (audit, profiler, slow query).
-
Eventos: Notificaciones mediante EventBridge o SNS.
💵 Precios
Se paga por:
-
Instancias (por hora según tipo y tamaño)
-
Almacenamiento utilizado (GB/mes)
-
Backups adicionales
-
Transferencia de datos (salida de la VPC)
💡 DocumentDB puede ser más costoso que MongoDB en EC2 o ECS, pero ofrece facilidad de operación y mantenimiento.
🎯 Casos de uso
-
Aplicaciones que usan MongoDB pero necesitan alta disponibilidad y escalabilidad.
-
Migración de MongoDB on-premise a AWS.
-
Almacenamiento de catálogos, usuarios, perfiles, contenido JSON semi-estructurado.
-
Aplicaciones web con Node.js y Mongoose.
🔁 Comparación con otros servicios
| Servicio | Tipo | Comentario |
|---|---|---|
| DocumentDB | NoSQL documental | Alta compatibilidad MongoDB, gestión total AWS |
| DynamoDB | NoSQL clave-valor | Más rápido y serverless, pero con API propietaria |
| RDS MySQL | Relacional | SQL tradicional, no soporta documentos JSON complejos |
| MongoDB Atlas | NoSQL documental | Gestión por MongoDB Inc., más compatibilidad y features |
🎓 Preguntas tipo certificación
-
¿Cuál es el protocolo de conexión de DocumentDB?
- ✅ Compatible con protocolo MongoDB
-
¿DocumentDB permite ejecución de código JavaScript (stored procedures)?
- ❌ No
-
¿Puedes acceder a DocumentDB desde Internet público?
- ❌ No, solo dentro del VPC o vía bastion/EC2
-
¿DocumentDB escala automáticamente el almacenamiento?
- ✅ Sí, hasta 64 TB