Las bases de datos de grafos pueden ayudarte a descubrir información valiosa modelando tus entidades de datos y las relaciones entre ellas. JanusGraph es una base de datos de grafos que permite trabajar con grandes cantidades de datos. En esta página se presentan conceptos que pueden ayudarte a ejecutar JanusGraph en Google Cloud con Google Kubernetes Engine como plataforma de orquestación y Bigtable como backend de almacenamiento.
Este documento está dirigido a arquitectos de sistemas, administradores de bases de datos y profesionales de DevOps que quieran ejecutar la base de datos de grafos JanusGraph enGoogle Cloud usando Bigtable como backend de almacenamiento. Se presupone que conoces Google Kubernetes Engine (GKE), los pods de Kubernetes, Bigtable y Elasticsearch.
Información general
En la terminología de los gráficos, las entidades se conocen como nodos o vértices, y las relaciones se conocen como aristas. En JanusGraph, tanto los vértices como las aristas pueden tener datos asociados adicionales que se ponen a disposición a través de las propiedades.
La ilustración anterior es un ejemplo de un gráfico de propiedades.
Las bases de datos de grafos te ayudan a modelar una gran variedad de dominios y actividades:
- Redes sociales
- Transacciones financieras (para análisis de fraudes)
- Redes de sistemas físicos o virtuales
Cuando creas bases de datos de grafos, a veces creas millones o incluso miles de millones de vértices y aristas. Cuando usas JanusGraph con Bigtable como capa de almacenamiento subyacente, puedes ejecutar consultas rápidas (conocidas como recorridos de gráficos) y escalar tu capa de almacenamiento de forma independiente según el tamaño y el rendimiento que necesites. JanusGraph también usa un backend de indexación conectable para proporcionar indexación de texto completo para las propiedades de vértices y aristas.
Puedes desplegar una infraestructura de JanusGraph escalable en GKE usando Elasticsearch como backend de indexación que se ejecuta en pods en un StatefulSet y usando Bigtable como backend de almacenamiento. Cuando hayas terminado, podrás recorrer las relaciones que existen en tus datos de gráfico.
En el siguiente diagrama se muestra cómo se complementan estos elementos.
En el diagrama anterior se muestra el despliegue de JanusGraph en GKE con Elasticsearch y Bigtable.
Datos de JanusGraph en Bigtable
JanusGraph almacena los datos de gráficos como una lista de adyacencia. Cada fila representa un vértice, los vértices adyacentes (aristas) y los metadatos de las propiedades de los vértices y las aristas. La clave de fila es el identificador único del vértice. Cada relación entre el vértice y otro vértice, así como las propiedades que definen la relación, se almacenan como una columna de arista o de propiedad de arista. Tanto el calificador de columna como el valor de columna almacenan datos que definen el borde, de acuerdo con las prácticas recomendadas de Bigtable. Cada propiedad de vértice se almacena como una columna independiente, de nuevo usando tanto el calificador de columna como el valor de columna para definir la propiedad.
En el siguiente diagrama se muestra esta estructura de almacenamiento.
El diagrama muestra la estructura de almacenamiento lógica de un pequeño fragmento de gráfico con detalles lógicos de dos filas de vértices. En el diagrama, las dos filas de ejemplo representan dos vértices. El primer vértice se etiqueta con una sola propiedad de vértice y está relacionado con otros dos vértices mediante dos aristas independientes. El segundo vértice contiene columnas con dos propiedades y una arista.
En la siguiente ilustración del modelo de datos lógico de arista de vértice se ofrece información detallada sobre los calificadores y los valores de columna de una arista o de una propiedad de arista.
En cada vértice adyacente, una columna almacena los metadatos de esa arista. El calificador de columna contiene metadatos sobre la relación de arista y sobre la dirección de la arista, así como un puntero al vértice adyacente. El valor de la columna contiene la etiqueta del borde y las propiedades de borde adicionales. Como los recorridos se pueden seguir en ambas direcciones, las aristas se almacenan dos veces, una por cada extremo de la relación de arista. El almacenamiento de aristas bidireccional aumenta significativamente el rendimiento de los recorridos, pero conlleva algunas desventajas debido a la redundancia del espacio de almacenamiento adicional y a las mutaciones de aristas no atómicas.
El siguiente diagrama es el modelo de datos lógico de una columna de propiedad de vértice.
En la ilustración anterior se proporcionan detalles sobre los calificadores de columna y los valores de una columna de borde.
Cada propiedad de vértice se almacena como una columna independiente. El calificador de columna es un identificador único de la clave de propiedad. El valor de la columna contiene tanto un identificador de la propiedad como el valor de la propiedad.
JanusGraph también se basa en el orden lexicográfico de las filas y los calificadores de columna de Bigtable para mejorar el rendimiento de las consultas.
Siguientes pasos
- Consulta más información sobre JanusGraph y las bases de datos de gráficos.
- Consulta información sobre el framework de computación de grafos Apache TinkerPop y explora el lenguaje de recorrido de grafos Gremlin.
- Consulta más información sobre cómo almacena JanusGraph los datos en Bigtable.
- Profundiza en los casos prácticos de los gráficos implementando una aplicación de ejemplo de JanusGraph.