Una nueva forma de llevar datos y aplicaciones de MongoDB a Azure Cosmos DB
Imagen: Granero fotográfico/Adobe Stock
Cosmos DB, denominada «Base de datos a escala planetaria» de Microsoft, es uno de los servicios básicos de Azure, que impulsa tanto sus propias aplicaciones como las suyas. Diseñado específicamente para el desarrollo de aplicaciones distribuidas, Cosmos DB ofrece una gama de modelos de coherencia y, lo que es más interesante, una gama de funciones diferentes que le permiten utilizarlo como cualquier otro conjunto familiar de bases de datos.
Estos incluyen una API compatible con PostgreSQL, bases de datos gráficas como Neo4j, su propio modelo de base de datos de documentos y soporte para la conocida base de datos distribuida Apache Cassandra. Una de las características más populares es un conjunto de API diseñadas para proporcionar la mayor parte de la funcionalidad de la popular base de datos MongoDB NoSQL. La última opción es interesante porque le permite tomar rápidamente las aplicaciones modernas existentes en las instalaciones y llevarlas a la nube rápidamente, listas para rediseñarse globalmente.
Salta a:
Comprender los costos de facturación por solicitud en Cosmos DB
Un problema que a menudo confunde a los desarrolladores de entornos de desarrollo más tradicionales: además de los cargos de almacenamiento estándar de Azure, Cosmos DB maneja la facturación utilizando el concepto de unidades de solicitud.
Las RU son una forma de describir cómo las bases de datos como Cosmos DB usan y cobran los recursos de Azure. Combina cómputo, E/S y memoria, utilizando estos recursos para lecturas de 1 KB en un solo elemento, como base para lo que se considera la moneda interna propia de Cosmos DB.
Una sola lectura de un solo elemento se mide como 1 RU, y todas las demás operaciones se facturan de manera similar, agrupando sus operaciones y el uso de recursos como valores en RU. Compra paquetes RU y los usa para operaciones de base de datos, al igual que comprar tokens para juegos como Roblox. Las RU se pueden usar para operaciones de administración, se puede usar una cantidad fija por segundo para sus operaciones o se puede usar para pagar operaciones sin servidor. También puede usar RU para permitir que su base de datos se escale según sea necesario, pero esto significa que una aplicación particularmente ocupada puede volverse muy costosa de ejecutar de repente.
Si bien el modelo RU es lógico para los servicios nativos de la nube, puede ser difícil predecir el costo de ejecutar Cosmos DB si está acostumbrado a los modelos de costos tradicionales. Si bien se pueden crear herramientas para ayudar a predecir los costos, debe considerar más que solo las operaciones que usa su base de datos, ya que el tipo de modelo de consistencia que elija afecta el rendimiento disponible.
Presentación de núcleos virtuales en Cosmos DB
Microsoft ahora ofrece una alternativa al modelo RU para los desarrolladores que incorporan aplicaciones basadas en MongoDB a Cosmos DB. En lugar de pagar por RU y almacenamiento, ahora tiene la opción de concentrarse en la combinación más familiar de instancias de aplicaciones y discos asignados. Esto le brinda acceso a un modelo más cercano al servicio de nube Atlas administrado de MongoDB, lo que permite migraciones más predecibles desde las instalaciones u otras nubes.
Como Azure Cosmos DB para MongoDB vCore, esta nueva versión de la base de datos NoSQL de Microsoft es una parte integral de su infraestructura de Azure, lo que le permite fragmentar e integrar automáticamente con la interfaz de línea de comandos de Azure y otras herramientas de administración.
Microsoft lo describe como una forma de «modernizar MongoDB con una arquitectura familiar». El objetivo es proporcionar un conjunto de API compatibles lo más cercano posible, sin dejar de proporcionar extensibilidad. Por ejemplo, Microsoft nos dice,
«Azure Cosmos DB para MongoDB vCore permite consultas de bases de datos más ricas y complejas, como la búsqueda de texto completo para chatbots basados en la nube».
Migrar aplicaciones de MongoDB a Cosmos DB
Si su código usa el lenguaje de consulta de MongoDB para procesar sus datos, debería funcionar como antes, el requisito principal es cambiar los puntos finales a las direcciones de Azure adecuadas.
Cobertura de lectura obligada para desarrolladores
Sin embargo, no todos los comandos están disponibles en Cosmos DB, ya que la funcionalidad subyacente no se asigna entre las dos bases de datos. Vale la pena estar atento a la lista de comandos admitidos, especialmente si confía en la función de control de sesión de MongoDB, ya que Cosmos DB actualmente no proporciona la mayoría de ellos. También debe cambiar cualquier autenticación a las herramientas nativas de Azure.
Mover datos entre los dos debería ser fácil, ya que las herramientas de exportación e importación de MongoDB le permiten guardar datos como JSON para exportaciones parciales o BSON más compactos para bases de datos completas. Esto puede ser costoso si está moviendo grandes cantidades de datos en formato JSON, ya que se le cobrará por la transferencia de datos.
Los precios se basan en la infraestructura virtual de Azure estándar, con sistemas de alta o baja disponibilidad. Si no necesita un sistema HA, puede ahorrar hasta un 50 % en el precio de HA. El almacenamiento base del sistema vCore Cosmos DB es de 128 GB, lo que debería ser adecuado para muchas cargas de trabajo comunes. Puede optar por comenzar con dos vCPU y 8 GB de RAM y expandirse a 32 con 128 GB de RAM.
Si bien la mayoría de las aplicaciones funcionarán con modificaciones menores, como la versión RU, la versión vCore compatible con MongoDB de Cosmos DB tiene algunas diferencias con la API oficial. Preguntamos si Microsoft tenía algún plan para agregar más cobertura en futuras versiones en lugar de pasar a vCore a través de serverless.
«En la mayoría de los casos, esto hace que las dos tecnologías sean totalmente compatibles. Según los comentarios de los clientes, uno de los mayores puntos débiles con respecto a la compatibilidad entre MongoDB y Azure Cosmos DB es la necesidad de rediseñar y remodelar sus bases de datos MongoDB para adaptarse a Azure Cosmos. La forma en que DB está diseñado. Esta versión elimina ese problema ya que las dos bases de datos ahora tienen esencialmente la misma «forma». Además, tenemos una gran compatibilidad de funciones entre los dos y continuaremos implementando más funciones, a medida que pasa de la versión preliminar a la disponibilidad general, «, respondió un vocero.
Esta nueva opción de MongoDB debería facilitar la transferencia de sus cargas de trabajo de MongoDB ya escritas a Cosmos DB, lo que le evitaría tener que ejecutar su propia infraestructura de MongoDB, o le permitiría integrar el uso de Cosmos DB como su base de datos en la nube, trayendo la base de datos de otros proveedores de la nube. a Azure, donde puede usar todos los demás recursos y servicios de Azure que los proveedores más pequeños como MongoDB no ofrecen.