Si te estás preguntando qué es Cosmos DB y qué diferencia a este servicio de Azure, no te preocupes. En este artículo revisamos las características de esta base de datos gestionada en la nube de Azure, sus ventajas y comparamos las APIs disponibles para diferentes casos de uso. No te lo pierdas.
Contenidos
¿Qué es Cosmos DB?
Azure Cosmos DB es una base de datos NoSQL escalable y distribuida globalmente totalmente gestionada. Nos permite usar varios tipos de modelos de datos, como documentos, clave-valor o grafos. También, permite almacenar datos con y sin esquema definido y realizar consultas en el lenguaje SQL.
Cosmos DB tiene varias opciones para almacenar y acceder a los datos. A continuación tienes una lista con las APIs disponibles para que puedas elegir la que más convenga en función del proyecto.
- SQL: Es la API por defecto en Cosmos DB. Usa el lenguaje SQL para realizar las consultas a los datos y almacenar documentos JSON. También nos permite leer valores especificando su id y clave de partición, lo que reduce el tiempo de consulta.
- MongoDB: Esta API soporta el protocolo de MongoDB, por lo que es compatible directamente con estos clientes con unos cambios mínimos.
- Cassandra: API compatible con el protocolo de Cassandra y los drivers de Apache CQLv4. Generalmente, bastará con cambiar en nuestra aplicación la cadena de conexión para realizar la migración.
- Table: Compatible con las aplicaciones que interaccionan con Azure Tables.
- Gremlin: Compatible con el lenguaje de consulta Gremlin y datos de grafos con el framework Apache TinkerPop (Gremlin).
¿Qué API de Cosmos DB elegir?
Para elegir la API adecuada con la que usar Cosmos DB debemos analizar si ya tenemos alguna aplicación desarrollada que implemente alguna conexión con bases de datos como MongoDB o Cassandra. En este caso, podríamos mantener la API que estamos usando en nuestra aplicación para reducir el esfuerzo de migración. En el caso de migrar desde una base de datos MongoDB, también deberemos prestar atención a los niveles de consistencia e indexado de datos.
Por otro lado, en el caso de que en nuestro sistema detectemos que el esquema de los datos va a cambiar con frecuencia, podemos elegir la API SQL o de MongoDB con una base de datos de documentos, lo que nos facilitará mucho el trabajo.
Para los casos de uso en los que busquemos rendimiento con grandes cantidades de datos en tiempo real deberemos considerar la API de Cassandra. Esta API nos permitirá continuar usando el lenguaje CQL (Cassandra Query Language) y herramientas de línea de comandos como cqlsh para probar nuestras consultas. Además, podremos usar el conector de Apache Spark para Cassandra si tenemos que hacer analítica o agregaciones de datos avanzadas.
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.
Por último, si nuestro modelo de datos consiste en relaciones entre entidades en forma de grafo con metadatos asociados usaremos la API de Gremlin. Por ejemplo, si queremos implementar un modelo para dar recomendaciones de productos o con información geoespacial.
Ventajas de Cosmos DB
A continuación, se listan las ventajas más notables que caracterizan a esta base de datos:
- Distribución de datos y escrituras multi-región: Cosmos DB puede escalar el almacenamiento independientemente entre regiones de Azure. También replica automáticamente los datos que sean necesarios.
- Integración con otros servicios de Azure como Azure Functions, Synapse Analytics o AKS (Azure Kubernetes Service) de forma sencilla.
- Proporciona numerosas APIs de consulta, que proporcionan la flexibilidad necesaria en función del caso de uso.
- Implementa Indexación automática de los datos sin esquema para reducir los tiempos de consulta.
- Reduce el tiempo de gestión y de mantenimiento. Cosmos DB gestiona todas las actualizaciones y operaciones de escalado de forma transparente.
Casos de Uso Comunes
Entre los casos de uso más comunes de esta base de datos en Azure se encuentran los servicios que se benefician de la distribución geográfica de sus datos y de un reducido tiempo de implementación y de gestión. Por ejemplo el comercio electrónico, las aplicaciones y juegos móviles y los servicios IoT. Estos casos de uso deben encontrar una solución con una alta disponibilidad que garantice un tiempo de inactividad mínimo (Cosmos DB proporciona un SLA de 99.999%).
En el caso del comercio electrónico (ecommerce) puede beneficiarse de usar una API que proporcione la flexibilidad necesaria para mantener un modelo semi-estructurado de los datos. Esto tiene ventajas respecto a un modelo relacional, en el que es más costoso evolucionar el esquema de los datos y podría ocasionar tiempos periodos de inactividad o cambios en las consultas.
Siguientes Pasos y Formación
Cosmos DB es un servicio de base de datos en Azure. Aunque es sencillo de usar, debes comprender cómo ponerlo en marcha y configurarlo de la manera adecuada. Además, deberás comprender los conceptos básicos de Azure para desenvolverte correctamente. Mi recomendación, es que hagas el curso que detallo a continuación. No tardarás demasiado y te ofrecerá una base muy sólida.
Curso oficial Microsoft Azure Cosmos DB
Este curso es ofrecido por Microsoft en la plataforma de formación online Coursera. Te enseñará los conceptos que necesitarás de bases de datos en cloud y en concreto de Cosmos DB. Forma parte del curso de especialización en Azure y preparación al examen Azure Data Fundamentals DP-900.
Conclusión
Azure Cosmos DB es una base de datos gestionada que merece la pena explorar para nuestros proyectos. Nos proporciona numerosas opciones en cuanto a APIs y mecanismos de consulta, así como una gran flexibilidad que puede resultarnos muy útil.
Debemos analizar con cuidado las opciones que tiene en función de nuestros requisitos y casos de uso antes de iniciar el proceso de migración de nuestras aplicaciones.
Preguntas Frecuentes Cosmos DB – FAQ
¿Qué casos de uso son adecuados para Azure Cosmos DB?
Entre los casos de uso más adecuados y comunes para Azure Cosmos DB se encuentran las aplicaciones y juegos web y móvil, así como los escenarios y casos de uso de IoT. Estas, se benefician de una base de datos NoSQL, gestionada y escalable globalmente.
¿En qué se diferencia Cosmos DB de MongoDB?
Ambas son bases de datos NoSQL. Cosmos DB nos permite escalar el servicio de una manera más potente que MongoDB Atlas. Cosmos DB también se puede usar con el driver de MongoDB, por lo que con compatibles y reduce su esfuerzo de migración.
¿Cosmos DB soporta el lenguaje SQL?
La API Core por defecto de Cosmos DB proporciona soporte para el lenguaje de consulta SQL para leer datos en formato JSON.
A continuación, el vídeo-resumen. ¡No te lo pierdas!