VERSIÓN | FECHA | DESCRIPCIÓN | RESPONSABLE |
---|---|---|---|
1.0 | 21/07/2022 | creación del lineamiento | Juan Garcia |
• Permitir la Distribución de datos y escrituras multi-región, lo cual brinda un almacenamiento independientemente entre regiones de Azure así como la réplica automática de los datos que sean necesarios.
• Integrarse con otros servicios de Azure como Functions, Synapse Analytics o AKS (Azure Kubernetes Service) de forma sencilla.
• Utilizar diferentes Apis de consulta, que proporcionaran la flexibilidad necesaria en función de lo que se requiera realizar.
• Implementar Indexación automática de los datos sin esquema para reducir los tiempos de consulta.
• Reducir el tiempo de gestión y de mantenimiento ya que se gestionan las actualizaciones y operaciones de escalado de forma transparente.
3.1 Casos de Uso
Se recomienda Cosmos DB para los siguientes escenarios:
• Si los datos cambian mucho, sin importar si es esquema o Keyvalue.
• Si se tienen muchas transacciones por segundo.
• Si estamos usando el RDBMS para cosas “extrañas”.
• En general todos aquellos escenarios para los que los RBDMS nos son buenos.
3.2 Eleccion de API
Para la eleccion de la API se recomienda utilizar API Core (SQL) o API MongoDB segun sea el caso:
3.2.1 API Core (SQL)
• Si esquema cambia con mucha frecuencia, una base de datos de documentos tradicional es una buena opción en estos casos.
• Si los datos son simples pares clave-valor es la mejor opción, ya que ofrece una experiencia de consulta más completa, con indexación mejorada con respecto a Table API.
• Puede consultar documentos JSON jerárquicos con un lenguaje similar a SQL. Core (SQL) usa el sistema de tipos de JavaScript, la evaluación de expresiones y la invocación de funciones.
• Para los desarrolladores que tienen experiencia con el lenguaje de consulta SQL, Core (SQL) proporciona varias instrucciones y cláusulas SQL conocidas; por ejemplo:
SELECT - FROM - WHERE - BETWEEN - COUNT - SUM - MIN - MAX - ORDER BY
• Esta API tiene SDKs para los lenguajes Java, Python, .NET y Node.js.
3.2.2 API MongoDB
• La API de Azure Cosmos DB para MongoDB admite el protocolo de transferencia de MongoDB.
• Esta API permite que SDK de cliente de MongoDB, controladores y herramientas existentes interactúen con los datos de forma transparente, como si se ejecutaran sobre una base de datos de MongoDB real.
• Los datos se almacenan en formato de documento, que es lo mismo que usar Core (SQL).
• En la actualidad, la API de Azure Cosmos DB para MongoDB es compatible con la versión 3.2 del protocolo de transferencia de MongoDB.
• Versiones del API
- Versión de API 3.6
Considerar lo siguiente: Al crear cuentas de la API de Azure Cosmos DB for MongoDB, la versión 3.6 de la cuenta tiene el punto de conexión con el formato .mongo.cosmos.azure.com, mientras que la versión 3.2 de la cuenta tiene el punto de conexión con el formato .documents.azure.com. Para mas detalles de la version, por favor visitar API Mongo versión 3.6
• Diferencias entre MongoDB y CosmosDB Api MongoDB
Caracteristica | MongoDB | Api MongoDB |
---|---|---|
Elección de proveedores de nube | Si - AWS, Azure y Google Cloud, incluidos clústeres de varias nubes que abarcan las tres plataformas en la nube | No |
Admite todas las funciones de MongoDB con compatibilidad total con aplicaciones | Si - Corre nativo MongoDB | No - Reclama compatibilidad con API v4.2, en realidad más cerca de 3.6.Sin código del lado del servidor MongoDB.Falla en más del 66 % de las pruebas de compatibilidad |
Acceso a la última versión de MongoDB | Si - Ejecute la última versión de MongoDB o cualquier versión anterior compatible | No - Reclamaciones de compatibilidad con la API v4.2; muchas funciones no son compatibles, algunas con limitaciones significativas |
Nivel gratuito | Sí - Almacenamiento: 5 GB; Memoria RAM: Variable | Limitado - Solo por las primeras 400 RU/s. Sin espacio aislado, por lo que no hay forma de evitar costos si el uso aumenta más allá del límite de 400RU/s |
Migración en vivo | Sí | Solo para cuentas elegibles |
Elección de la configuración de la instancia | Sí - Clases y tamaños de instancias múltiples | No - Configuración basada en el rendimiento aprovisionado. No hay forma de seleccionar de forma independiente las configuraciones de hardware subyacentes |
Compatibilidad con transacciones ACID de varios documentos de MongoDB | Sí | Limitado - Las transacciones de varios documentos solo se admiten dentro de una única colección no fragmentada; falla en casi todas las pruebas de transacción de MongoDB |
Soporte de tipo de datos SON | BSON (JSON binario) JSON regular + largos, dobles, flotantes, decimales, fechas y horas | BSON Algunos tipos de datos tienen restricciones, incluida la incapacidad de modificarlos una vez establecidos |
Tamaño máximo del documento | 16mb | 2mb |
Esquema JSON para controles de gobierno de datos | Si | No - Todos los controles de esquema deben estar escritos en el nivel de la aplicación. |
Búsqueda de texto integrada y consultas gráficas | Sí - Pipeline de agregación de MongoDB y Atlas Search | Sin búsqueda de texto integrada |
Consulta integrada de datos en el almacenamiento de objetos en la nube | Sí - Atlas Data Lake | No |
Archivo en línea Nivele automáticamente los datos de la base de datos al almacenamiento de objetos en la nube | Si | No |
Combinar datos con combinaciones y uniones para consultas de análisis | Si | No |
Recomendaciones automáticas de rendimiento | Sí - Asesor de rendimiento con recomendaciones de esquemas e índices | No |
Lecturas cubiertas - Consultas enviadas a múltiples réplicas para una latencia baja constante | Sí | No |
Pausar y reanudar clústeres | Sí | No |
Explorador de datos | Sí - Directamente en la interfaz de usuario de Atlas o a través de MongoDB Compass | Si |
Conectividad basada en SQL | Sí - Conector MongoDB para Business Intelligence | Sí - Las consultas SQL nativas requieren una instancia separada de Cosmos DB con API SQL; no hay forma de ejecutar consultas SQL directamente en una instancia de Cosmos DB utilizando la API de imitación de MongoDB. Power BI y Qlik Sense permiten consultas de análisis SQL |
Visualización de datos nativos sin herramientas de BI de terceros | Sí - Gráficos MongoDB | No |
Base de datos compatible con implementaciones locales e híbridas | Sí - MongoDB Enterprise Avanzado | No |
Base de datos integrable con sincronización para dispositivos móviles | Sí - Sincronización de dispositivos MongoDB Atlas | No |
3.3 Configuración
Para una configuración por defecto al momento de crear el recurso se recomienda considerar los siguientes parametros:
• Copia de seguridad y restauración:
o Intervalo de copia de seguridad: 240 Minutos
o Retención de la copia de seguridad: 8 Horas
o Redundancia de almacenamiento de copias de seguridad: Almacenamiento de copias de seguridad con redundancia geográfica
• Replicación global de datos:
o Escrituras en varias regiones: Deshabilitar
o Región de escritura: East US 2
o Regiones de lectura: East US 2
• Coherencia predeterminada: SESIÓN
3.4 Costos
Se recomienda utilizar el Capacity Calculator para conocer una estimación rápida del costo de la carga de trabajo en Azure Cosmos
DB. Para obtener una estimación más precisa y la capacidad de ajustar más parámetros.
3.5 Eficiencia de Uso
• Se recomienda utilizar el Emulador de Azure Cosmos DB para desarrollar y probar una aplicación localmente, sin crear una suscripción de Azure o realizar algún gasto. Cuando se culmine las pruebas y verifique que el funcionamiento de la aplicación es el esperado, puede cambiar a una cuenta de Azure Cosmos en la nube. Considerar que algunas características no están incluidas en el Emulador::
o Admite una única cuenta fija y una clave principal ya conocida. No se puede regenerar la clave cuando se usa el emulador de Azure Cosmos DB; sin embargo, puede cambiar la clave predeterminada mediante la opción de la línea de comandos.
o Solo puede crear una cuenta de Azure Cosmos en modo de rendimiento aprovisionado. Actualmente no se admite el modo sin servidor.
o No es un servicio escalable y no admite un gran número de contenedores. Cuando se usa, de forma predeterminada se pueden crear hasta 25 contenedores de tamaño fijo a 400 RU/s (solo compatibles con los SDK de Azure Cosmos DB) o 5 contenedores ilimitados.
o No ofrece diferentes niveles de coherencia como lo hace el servicio en la nube.
o No ofrece replicación en varias regiones.
o El emulador admite un tamaño máximo de la propiedad ID de 254 caracteres.
• Cuando tengamos aplicaciones que usan Azure Table Storage podremos migrarlas directamente a Cosmos DB con la API de Tablas sin tener que cambiar el código. La ventaja que tiene migrar a Cosmos DB en este caso es la mejora en los tiempos de respuesta que nos proporciona. Al migrar los datos de tablas se indexan automáticamente todas sus propiedades. Esta API tiene SDKs para los lenguajes Java, Python, .NET y Node.js.
Nota: Mover la base de datos desde Azure Table Storage a Azure Cosmos DB con un bajo rendimiento supondría un ahorro de costes considerable, ya que Table Storage se cobra en función del tamaño de los datos, no de la frecuencia de acceso.
3.6 Seguridad
Para temas de seguridad, al momento de realizar consultas a través de azure functions o algún microservicio se recomienda utilizar Azure Key Vault para ayudar a almacenar y administrar de forma segura los secretos de la aplicación. Para lo cual es necesario:
• Creación de un almacén de claves.
• Adición de claves de acceso de Azure Cosmos DB en Key Vault.
• Creación de una aplicación web de Azure.
• Registro de la aplicación y concesión de permisos para leer el almacén de claves.