CosmosDB es la oferta NoSQL de Microsoft exclusiva de Microsoft Azure. Antes se llamaba DocumentDB, pero cambiaron el nombre y añadieron algunas características nuevas interesantes. Vamos a profundizar un poco más en ella y explorar su estrategia, documentación, lo que los desarrolladores han estado hablando, y cómo se compara con Couchbase Capella.

¿Una base de datos para gobernarlos a todos?

Microsoft afirma que CosmosDB es una base de datos NoSQL capaz de hacer literalmente todo: Es una base de datos de documentos, un almacenamiento columnar, un almacén clave-valor y una base de datos gráfica. Todo ello gracias a una abstracción del formato de datos denominada secuencia átomo-record (ARS).

Veamos cómo se organizan los datos según cada modelo. En primer lugar, tienes que elegir la API que te gustaría utilizar (SQL, MongoDB API, Microsoft Azure Table, Cassandra o Gremlin) y ceñirte a ella, ya que no se puede cambiar más tarde. Pero entre bastidores, parece ser un formato JSON personalizado.

CosmosDB intenta competir con las principales bases de datos NoSQL, lo que puede ser una estrategia arriesgada. Por un lado, este enfoque puede limitar las características que CosmosDB puede ofrecer en última instancia. Hay un único denominador común, y eso no puede alejarse demasiado. Además, las API como MongoDB y Cassandra no están definidas ni planificadas por Microsoft. Esto significa que Microsoft siempre estará poniéndose al día con las últimas versiones y, en última instancia, nunca alcanzará la compatibilidad 100%. Microsoft mantiene documentación sobre qué funciones de MongoDB son compatibles y cuáles no (y lo mismo para Cassandra). Un todo en uno Una solución como CosmosDB puede ser buena para aplicaciones sencillas con pocas demandas de funcionalidad, pero todas esas abstracciones tienen un coste y, en última instancia, repercutirán en la simplicidad, el rendimiento y estarán limitadas por las características. 

Couchbase vs CosmosDB - Comparando Manzanas con "Manzanas"

 Esta comparación se centrará sobre todo en los escenarios en los que tiene sentido comparar ambas tecnologías (por ejemplo, Couchbase no es una base de datos gráfica, por lo que la comparación no tendría sentido).

Otra nota importante: Couchbase Capella es la oferta DBaaS (base de datos como servicio) de Couchbase, disponible en AWS y GCP (pronto también en Azure). Es básicamente una versión gestionada de Couchbase Server, que todavía está disponible para su descarga, por lo que son muy similares. A menos que se indique lo contrario, la columna "Couchbase" se aplica tanto a Capella como a Server.

Característica CosmosDB Couchbase Capella
Licencias Propietario, de código cerrado pero disponible en versión libre.  Prueba gratuita de Capella, Couchbase Community y Enterprise disponibles para su descarga, BSL
Tipo
  • Clave-valor
  • Documento
  • Gráfico
  • Columnar
  • Clave-valor
  • Documento
  • Caché integrada
  • Móvil
Modelo
  • Límite de 2 MB por documento
  • Límite de 16 MB sólo para el modo Mongo
  • Límite de documentos de 20 MB
Buscar en
  • Requiere un producto propietario independiente: Azure Cognitive Search
Indexación
Integridad de los datos Hay cinco opciones de configuración disponibles:

  • Fuerte
  • Estancamiento limitado
  • Sesión (por defecto)
  • Prefijo coherente
  • Eventual
  • Gran coherencia
  • La coherencia de las consultas puede especificarse para cada una de ellas.
Escalabilidad Alta escalabilidad Alta escalabilidad
Móvil No hay planes de CosmosDB para móviles o dispositivos o cualquier soporte fuera de línea
  • Couchbase Lite proporciona una base de datos móvil/dispositivo/borde.
  • Sync Gateway sincroniza automáticamente con el centro de datos
Despliegue Sólo Azure, sólo totalmente gestionado.

Existe una versión de desarrollo (actualmente sólo para Windows).

Puede desplegarse en cualquier lugar, incluyendo Azure, on-premises, Kubernetes, Docker, VM, bare-metal.

Couchbase Capella ofrece una DBaaS totalmente gestionada

Bloqueo Bloqueo optimista y pesimista disponible Bloqueo optimista y pesimista disponible
Copia de seguridad y restauración Modo de copia de seguridad continua durante 30 días

Modo de copia de seguridad periódica (por defecto)

Automático copia de seguridad y restauración servicio con asistente de copia de seguridad configurable

Copia de seguridad continua disponible mediante XDCR

Consulta de En función del modo elegido.

Ejemplo 1: La API SQL es un subconjunto extremadamente limitado del SQL estándar

Ejemplo 2: La API de MongoDB es un subconjunto no-100% de la API de Mongo

Aplicación completa de SQL llamado SQL++ (con JOIN, agregados, CTE, funciones de ventana, operaciones CRUD, etc.) - anteriormente conocido como "N1QL".
Replicación de centros de datos Replicación maestro-maestro global mediante pulsador entre centros de datos Azure compatibles XDCR permite cualquier combinación de replicación unidireccional y bidireccional entre cualquier implementación de Couchbase, incluido el filtrado de datos.
Velocidad/rendimiento Sólo se obtiene más velocidad y rendimiento aumentando RUsque a menudo será prohibitivamente caro  Operaciones de lectura y escritura en memoria.

Capa de caché integrada.

Puede ajustarse aumentando la memoria, el disco o añadiendo un nuevo nodo.

Índices de memoria optimizada disponibles

Fragmentación / partición Las claves de partición deben crearse y gestionarse manualmente, por lo que es necesario que un experto las configure y diseñe correctamente para alcanzar los objetivos de rendimiento/escala. La fragmentación es completamente automático
Arquitectura Desconocido / propietario Cada nodo es un maestro en Couchbase, haciendo un uso más eficiente de los recursos
SDK compatibles .NET (principal, más completo)

Otros SDK:

  • Java
  • Node.js
  • Python

     (Otros a través de Mongo/Cassandra)

.NETC / C++

Vaya a

Java

Node.js

PHP

Python

Ruby

Scala

Kotlin

Éxito en el mundo real

Esta comparación puede favorecer a Couchbase, pero ¿qué ocurre con las experiencias reales de una organización que utilizaba CosmosDB y se ha pasado a Couchbase?

Facet Digital reduce sus costes de bases de datos por 50%, y mejoró su rendimiento en 100x cambiando a Couchbase Capella.

¿Cómo ha sido posible?

  • Tiempo de implantación más rápido
  • Fácil integración de la búsqueda
  • Indexación más rápida
  • Mejor automatización de DevOps (definiciones de índices CI/CD)
  • Sintaxis SQL completa y conocida

Facet digital couchbase story

Resumen

CosmosDB tiene una visión única, pero como consecuencia natural de construir algo centrado en múltiples campos a la vez, el soporte de CosmosDB para todas las características deseadas puede ser desigual.

Una de las características más destacadas es la posibilidad de elegir entre varios niveles de consistencia eventual: Constancia limitada, Sesión, Prefijo consistente y Eventualmente consistente. El hecho de que Sesión como consistencia por defecto dice mucho sobre la forma recomendada de utilizar CosmosDB. Podría significar que no es la mejor solución si necesitas una fuerte consistencia de datos (y quizás Microsoft querría dirigirte de nuevo hacia su base de datos insignia SQL Server).

La primacía de la memoria es una de las razones por las que Couchbase es tan rápido. CosmosDB tiene un caché integrada (actualmente en versión preliminar), pero al igual que con la búsqueda, es un producto independiente que debe añadirse. Couchbase ha dado prioridad a la memoria desde su creación.

Con CosmosDB, todos los campos se indexan en sus índices secundarios globales (GSI). Parece una exageración. Puede ser más fácil especificar qué campos indexar que especificar qué campos no para indexar. Tan pronto como tu JSON sea mucho más grande que un puñado de propiedades (y especialmente cuando se anidan objetos JSON), estos índices van a ser definitivamente exagerados, con los costes repercutidos por defecto. Demasiados índices significan demasiadas RUs, lo que significa demasiados dólares.

La partición parece ser una de las cosas más complicadas en CosmosDB. Las particiones se mueven automáticamente entre nodos, pero hay que especificar una clave de partición. Un inconveniente de este enfoque es que cada partición es indivisible, con un tamaño máximo de 10 Gb. Si eliges una mala clave de partición, muchos documentos a los que se accede con frecuencia pueden acabar en la misma partición, lo que limita el rendimiento de tus lecturas/escrituras en función de la capacidad del nodo en el que se almacena la partición.

La clave de partición también es inmutable, por lo que para cambiarla, tendrás que copiar todos tus datos a otra colección. En Couchbase, los documentos se distribuyen uniformemente entre los vBuckets para evitar este problema, y también para aumentar su rendimiento de lectura/escritura.

Con CosmosDB, la aceleración se realiza únicamente aumentando las unidades de petición (RU). El problema de este enfoque es que no es un buen predictor del rendimiento de la consulta y dificulta aún más la aceleración de una consulta. específico comportamiento como aumentar sólo la capacidad de escritura. Para algunos casos de uso, puede que un equipo necesite una persona que trabaje en las EF a tiempo completo para resolver y mantener las consultas correctamente.

Microsoft ha puesto mucho empeño en intentar que las EF sean más fáciles de entender, pero es habitual que los desarrolladores subestimen sus EF (véase aquí o aquí) y acaban pagando una factura mucho más alta de lo esperado. En Couchbase, la aceleración es muy flexible, se puede hacer mediante escalado vertical y/u horizontal, ejecutando servicios específicos según el hardware del nodo, manteniendo índices en memoria, etc.

CosmosDB también proporciona un botón de distribución de datos global que hace que sea muy sencillo replicar datos en múltiples centros de datos de todo el mundo. Sin embargo, también se puede lograr fácilmente en cuestión de minutos en Couchbase Server sin la limitación de ejecutar sólo en Azure.

La evaluación comparativa es difícil, debido al modelo de UI de CosmosDB, pero una evaluación comparativa de terceros mediante el método YCSB muestra la clara ventaja de Couchbase Capella en rendimiento y latencia.

El precio de CosmosDB es atractivo si tienes una base de datos pequeña con pocas lecturas/escrituras por segundo. Pero cualquier cosa por encima de eso puede costar mucho. La calculadora de precios de CosmosDB muestra que con una mezcla 50/50 de lecturas y escrituras, más un puñado de consultas por segundo, puede sumar miles al mes. CosmosDB ofrece un calculadora útilpero es poco fiable, debido a la dificultad de predecir las UI (como ya se ha mencionado). Además, la calculadora no tiene en cuenta el modelo de consistencia que vas a utilizar, por lo que tienes que añadir unos cuantos dólares extra a esta cifra para la Consistencia-Fuerte.

Precios de Couchbase Capella es mucho más predecible y, a menudo, tendrá un coste inferior, especialmente para los casos de uso de misión crítica de mayor envergadura.

 

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Dejar una respuesta