¿Qué es Azure Cosmos DB for Apache Gremlin?

SE APLICA A: Gremlin

Azure Cosmos DB es una base de datos NoSQL y relacional totalmente administrada para el desarrollo de aplicaciones modernas.

Azure Cosmos DB for Apache Gremlin es un servicio de base de datos de grafos que se puede usar para almacenar grafos muy grandes con miles de millones de vértices y bordes. Puede consultar los grafos con una latencia de milisegundos y evolucionar la estructura de los grafos con facilidad. La API para Gremlin se basa en Apache TinkerPop, un marco de computación de grafos que usa el lenguaje de consulta Gremlin.

Importante

El motor de grafos de Azure Cosmos DB sigue estrictamente la especificación de Apache TinkerPop. Sin embargo, hay algunas diferencias en los detalles de implementación que son específicas para Azure Cosmos DB. Algunas características compatibles con Apache TinkerPop no están disponibles en Azure Cosmos DB. Para más información sobre dichas características, consulte el artículo Compatibilidad con Apache TinkerPop.

La API para Gremlin combina la potencia de los algoritmos de base de datos de grafo con una infraestructura administrada altamente escalable. Este enfoque brinda una solución única y flexible para los problemas de datos comunes asociados a restricciones inflexibles o relacionales.

Sugerencia

¿Quiere probar la API para Gremlin sin compromiso? Cree una cuenta de Azure Cosmos DB con una prueba de Azure Cosmos DB gratuita.

Ventajas de la API para Gremlin

La API para Gremlin cuenta con ventajas adicionales al estar basada en Azure Cosmos DB:

  • Rendimiento y almacenamiento escalables de manera elástica: los gráficos en el mundo real necesitan escalarse más allá de la capacidad de un único servidor. Azure Cosmos DB admite bases de datos de grafos de escalabilidad horizontal que pueden tener un tamaño ilimitado en términos de almacenamiento y rendimiento aprovisionado. A medida que crece la escala de la base de datos de grafos, los datos se distribuirán automáticamente mediante la creación de particiones de grafos.

  • Replicación en varias regiones: Azure Cosmos DB puede replicar automáticamente los datos de grafo en cualquier región de Azure del mundo. La replicación global simplifica el desarrollo de aplicaciones que requieren acceso global a los datos. Además de minimizar la latencia de lectura y escritura en cualquier lugar del mundo, Azure Cosmos DB proporciona un mecanismo de conmutación por error regional administrada por el servicio. Dicho mecanismo puede garantizar la continuidad de la aplicación en el caso excepcional de que se produzca una interrupción del servicio en una región.

  • Consultas rápidas y recorridos con el estándar de consulta de grafos más ampliamente adoptado: almacene vértices y bordes heterogéneos y consúltelos mediante una conocida sintaxis de Gremlin. Gremlin es un lenguaje de consulta imperativo y funcional que proporciona una interfaz enriquecida para implementar algoritmos comunes de grafo. La API para Gremlin permite realizar consultas y recorridos enriquecidos en tiempo real sin necesidad de especificar sugerencias de esquemas, índices secundarios ni vistas. Para obtener más información, vea Consulta de grafos mediante Gremlin.

  • Base de datos de grafos totalmente administrada: Azure Cosmos DB elimina la necesidad de administrar recursos de bases de datos y máquinas. La mayoría de las plataformas de base de datos de grafos existentes están supeditadas a las limitaciones de su infraestructura y a menudo requieren un alto grado de mantenimiento para garantizar su funcionamiento. Al ser un servicio totalmente administrado, Cosmos DB evita la necesidad de administrar las máquinas virtuales, actualizar el software del entorno de ejecución, administrar el particionamiento o la replicación o realizar complejas actualizaciones en el nivel de datos. Se hacen copias de seguridad de todos los grafos, además de protegerlos ante errores regionales. Esta administración permite a los desarrolladores centrarse en la utilidad de la aplicación, en lugar de dedicarse al funcionamiento y la administración de sus bases de datos de grafos.

  • Indexación automática: de manera predeterminada, la API para Gremlin indexa automáticamente todas las propiedades de los nodos (también llamados vértices) y los bordes del grafo y no espera ni requiere ningún esquema ni la creación de índices secundarios. Para obtener más información, consulte Indexación en Azure Cosmos DB.

  • Compatibilidad con Apache TinkerPop: la API para Gremlin admite el estándar de código abierto Apache TinkerPop. El estándar Apache TinkerPop tiene un amplio ecosistema de aplicaciones y bibliotecas que se pueden integrar fácilmente con la API.

  • Niveles de coherencia ajustables: Azure Cosmos DB proporciona cinco niveles de coherencia bien definidos para lograr el equilibrio adecuado entre la coherencia y el rendimiento de la aplicación. Para las consultas y las operaciones de lectura, Azure Cosmos DB ofrece cinco niveles de coherencia diferentes: segura, obsolescencia limitada, sesión, prefijo coherente y posible. Estos niveles de coherencia bien definidos y pormenorizados le permiten realizar equilibrios razonables entre la coherencia, la disponibilidad y la latencia. Para obtener más información, vea Niveles de coherencia de datos ajustables en Azure Cosmos DB.

Escenarios comunes de la API para Gremlin

Estos son algunos escenarios donde puede resultar útil la compatibilidad con grafos de Azure Cosmos DB:

  • Redes sociales/Servicio de atención al cliente 365: al combinar datos sobre los clientes y sus interacciones con otras personas, puede desarrollar experiencias personalizadas, predecir el comportamiento de los clientes o conectar a personas con otras que tengan intereses similares. Azure Cosmos DB puede utilizarse para administrar redes sociales y realizar un seguimiento de los datos y las preferencias de los usuarios.

  • Motores de recomendaciones: este escenario suele usarse en el sector minorista. Al combinar información sobre productos, usuarios e interacciones de usuario, como comprar, examinar o clasificar un artículo, puede generar recomendaciones personalizadas. Azure Cosmos DB, con su latencia baja, escalado elástico y compatibilidad nativa con grafos, es ideal para estos escenarios.

  • Entorno geoespacial: muchas aplicaciones en telecomunicaciones, logística y programación de viajes necesitan encontrar una ubicación de interés dentro de un área o localizar la mejor ruta entre dos ubicaciones o la más corta. Azure Cosmos DB es una opción natural para estos problemas.

  • Internet de las cosas: con la red y las conexiones entre dispositivos IoT modeladas como un grafo, se puede conocer mejor el estado de los dispositivos y recursos. También se puede ver de qué manera los cambios en una parte de la red pueden afectar a otra.

Introducción a las bases de datos de grafos

Los datos, tal y como aparecen en el mundo real, están conectados naturalmente. El modelado de datos tradicional se centra en definir por separado las entidades y calcular sus relaciones en tiempo de ejecución. Aunque este modelo tiene sus ventajas, los datos muy conectados pueden resultar complicados de administrar con sus restricciones.

Un enfoque de base de datos de grafo se basa en las relaciones persistentes en la capa de almacenamiento en su lugar, lo que da lugar a operaciones de recuperación de grafo muy eficaces. La API para Gremlin admite el modelo de grafo de propiedades.

Objetos de grafos de propiedad

Un grafo es una estructura que está formada por vértices y bordes. Ambos objetos pueden tener un número arbitrario de pares de clave-valor como propiedades.

  • Vértices/nodos: los vértices denotan entidades discretas, como una persona, un lugar o un evento.

  • Bordes/relaciones: los bordes representan las relaciones entre los vértices. Por ejemplo, es posible que una persona conozca a otra, haya participado en un evento o haya estado recientemente en una ubicación.

  • Propiedades: expresan información (o metadatos) sobre los bordes y los vértices. Puede haber cualquier número de propiedades tanto en los vértices como en los bordes, y se pueden usar para describir y filtrar los objetos en una consulta. Algunas propiedades de ejemplo incluyen un vértice con un nombre y una edad, o un borde, que tiene una marca de tiempo o un peso.

  • Etiqueta: una etiqueta es un nombre o el identificador de un vértice o de un borde. Las etiquetas pueden agrupar varios vértices o bordes de modo que todos los vértices o bordes de un grupo tienen una etiqueta determinada. Por ejemplo, un grafo puede tener varios vértices con la etiqueta "persona".

Las bases de datos de grafos suelen incluirse en la categoría de base de datos NoSQL o no relacional, porque no hay ninguna dependencia de un esquema o modelo de datos restringido. Esta falta de esquema permite el modelado y almacenamiento de estructuras conectadas de forma natural y eficaz.

Ejemplo de una base de datos de grafos

Vamos a usar un grafo de ejemplo para entender cómo se expresan las consultas en Gremlin. La siguiente ilustración muestra una aplicación empresarial que administra datos de usuarios, intereses y dispositivos en forma de grafo.

Grafo de propiedades de ejemplo en el que se muestran personas, dispositivos e intereses.

Este grafo tiene los siguientes tipos de vértices. Estos tipos también se denominan etiquetas en Gremlin:

  • Personas: el grafo tiene tres personas (Robin, Thomas y Ben).

  • Intereses: sus intereses; en este ejemplo, el fútbol americano.

  • Dispositivos: dispositivos que usan las personas.

  • Sistemas operativos: sistemas operativos que se ejecutan en los dispositivos.

  • Lugar: lugar(es) en el/los que se accede a los dispositivos.

Las relaciones entre estas entidades se representan con las siguientes etiquetas o tipos de bordes:

  • Conoce a: representa familiaridad. Por ejemplo, Thomas conoce a Robin.

  • Tiene interés en: representa los intereses de las personas del grafo. Por ejemplo, Ben tiene interés en el fútbol americano.

  • EjecutaSO: representa qué sistema operativo se ejecuta en un dispositivo. Por ejemplo, el portátil ejecuta el sistema operativo Windows.

  • Usa: representa el dispositivo que una persona usa. Por ejemplo, Robin usa un teléfono Motorola con número de serie 77.

  • Se encuentra en: representa la ubicación desde la que se accede a los dispositivos.

La consola Gremlin es un terminal interactivo ofrecido por Apache TinkerPop que se usa para interactuar con los datos del grafo. Para obtener más información, consulte el inicio rápido de la consola de Gremlin. También puede realizar estas operaciones mediante controladores de Gremlin en la plataforma que elija (Java, Node.js, Python o .NET). En los siguientes ejemplos se muestra cómo ejecutar consultas con los datos de este grafo mediante la consola de Gremlin.

En primer lugar, veamos la creación, lectura, actualización y eliminación (CRUD). La siguiente instrucción de Gremlin inserta el vérticeThomas en el grafo con algunas propiedades:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

Sugerencia

Si sigue estos ejemplos, puede usar cualquiera de estas propiedades (age, firstName o lastName) como clave de partición al crear el grafo. La propiedad id no se admite como una clave de partición en un grafo.

La siguiente instrucción de Gremlin inserta un borde conoce a entre Thomas y Robin.

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

La consulta siguiente devuelve los vértices persona en orden descendente de sus nombres:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

En el lugar donde brillan los grafos es donde se necesita responder preguntas como "¿Qué sistemas operativos usan los amigos de Thomas?". Puede ejecutar este recorrido de Gremlin para obtener esa información del grafo:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Pasos siguientes