Uso de bases de datos de documentos - Modelado de datos flexible con Amazon DocumentDB y DynamoDB
Explicamos los métodos de diseño y operación de bases de datos de documentos utilizando Amazon DocumentDB y DynamoDB.
Concepto básico de bases de datos de documentos y opciones de servicios AWS
Una base de datos de documentos es una base de datos NoSQL diseñada para almacenar y buscar estructuras de datos flexibles en formato JSON o BSON. A diferencia de las bases de datos relacionales, no es necesario definir estrictamente un esquema de antemano, permitiendo cambiar la estructura de datos de forma flexible a medida que evoluciona la aplicación. En AWS, dos servicios cubren los casos de uso de bases de datos de documentos: Amazon DocumentDB y Amazon DynamoDB. DocumentDB proporciona una API compatible con MongoDB, permitiendo migrar aplicaciones MongoDB existentes prácticamente sin modificaciones. Por otro lado, DynamoDB es un servicio completamente administrado que soporta tanto el modelo clave-valor como el de documentos, logrando latencia consistente en milisegundos. Al operar un clúster MongoDB on-premises, se genera una gran carga operativa como la configuración de replica sets, diseño de sharding, automatización de backups y aplicación de parches de seguridad, pero los servicios administrados de AWS automatizan todo esto.
Características de Amazon DocumentDB
Amazon DocumentDB es un servicio de base de datos administrado compatible con MongoDB 3.6, 4.0 y 5.0. El almacenamiento se expande automáticamente hasta 128 TiB, manteniendo 6 copias distribuidas en 3 zonas de disponibilidad, logrando alta durabilidad y disponibilidad. Se pueden agregar hasta 15 réplicas de lectura, facilitando la distribución de la carga de lectura. El motor de almacenamiento de DocumentDB está basado en SSD y adopta replicación basada en quórum donde la escritura se completa cuando se confirma en 4 de las 6 copias. La función de clúster global permite la replicación en hasta 5 regiones, logrando tanto recuperación ante desastres como rendimiento de lectura global. A continuación se muestra un ejemplo de comando CLI para crear un clúster DocumentDB. aws docdb create-db-cluster \ --db-cluster-identifier my-docdb-cluster \ --engine docdb \ --engine-version 5.0.0 \ --master-username admin \ --master-user-password MySecurePassword123 \ --storage-encrypted
Modelo de documentos de DynamoDB y casos de uso
DynamoDB también demuestra excelentes capacidades para almacenar datos de tipo documento. Cada ítem puede tener una estructura JSON anidada de hasta 400 KB, combinando libremente atributos de tipo mapa y lista para representar documentos. Usando PartiQL, un lenguaje de consulta compatible con SQL, se pueden escribir intuitivamente búsquedas y actualizaciones de campos específicos dentro de documentos anidados. En el modo de capacidad bajo demanda de DynamoDB, escala automáticamente según el tráfico, y el costo durante períodos sin solicitudes es prácticamente cero. Es ideal para casos de uso donde los patrones de acceso son claros y se requiere escalabilidad, como perfiles de jugadores en juegos, catálogos de productos de comercio electrónico y datos de telemetría de dispositivos IoT. Combinando DynamoDB Streams con Lambda, se puede construir una arquitectura dirigida por eventos que detecta cambios en documentos en tiempo real y los propaga a sistemas downstream. La función de tablas globales también permite configuraciones activo-activo en múltiples regiones. Para aprender exhaustivamente sobre modelado de datos con guías prácticas de MongoDB, consulte libros técnicos (Amazon).
Diferenciación entre DocumentDB y DynamoDB
Tanto DocumentDB como DynamoDB pueden manejar datos de documentos, pero sus casos de uso óptimos difieren. DocumentDB es adecuado cuando se necesitan patrones de consulta complejos. Se pueden aprovechar directamente las ricas funciones de consulta de MongoDB como consultas ad-hoc, pipelines de agregación, búsqueda de texto y consultas geoespaciales. También es ideal como destino de migración para aplicaciones MongoDB existentes. Por otro lado, DynamoDB es adecuado para cargas de trabajo donde los patrones de acceso se pueden definir de antemano y se requiere latencia consistente en milisegundos. Demuestra su verdadero valor en casos de uso donde el alto rendimiento y la baja latencia son importantes, como gestión de sesiones, carritos de compra y sistemas de pujas en tiempo real. Al migrar desde MongoDB on-premises, el criterio general es seleccionar DocumentDB según la complejidad de los patrones de consulta, y seleccionar DynamoDB cuando la escalabilidad es la máxima prioridad en nuevos desarrollos. Ambos servicios soportan cifrado, integración con VPC y autenticación IAM, cumpliendo requisitos de seguridad de nivel empresarial.
Comparación de precios entre DocumentDB y DynamoDB
DocumentDB db.r6g.large cuesta aproximadamente 199 dólares mensuales, y el almacenamiento aproximadamente 0.10 dólares por GB al mes. El modo bajo demanda de DynamoDB cuesta aproximadamente 0.25 dólares por millón de unidades de lectura y aproximadamente 1.25 dólares por millón de unidades de escritura. DynamoDB es serverless con un costo mínimo cercano a cero, mientras que DocumentDB tiene costos fijos de instancia. Si los patrones de acceso son simples y se requiere alto rendimiento, elija DynamoDB; si se necesitan consultas complejas y agregaciones, elija DocumentDB.
Resumen - Optimización de la estrategia de base de datos de documentos
DynamoDB proporciona escalabilidad serverless y baja latencia consistente, con integración nativa con Lambda que facilita la construcción de arquitecturas dirigidas por eventos. Al diferenciar ambos servicios según las características de la carga de trabajo, se puede lograr tanto modelado de datos flexible como alto rendimiento. La selección de base de datos de documentos se juzga en tres ejes: complejidad de patrones de consulta, requisitos de escalabilidad y aprovechamiento de activos existentes.