Las bases de datos de grafos te ayudan a descubrir información valiosa mediante el modelado de 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 la plataforma de orquestación y Bigtable como el backend de almacenamiento.
El documento está dirigido a arquitectos de sistemas, administradores de bases de datos y profesionales de DevOps que estén interesados en ejecutar la base de datos de grafos de JanusGraph enGoogle Cloud con Bigtable como backend de almacenamiento. Se supone que conoces Google Kubernetes Engine (GKE), los Pods de Kubernetes, Bigtable y Elasticsearch.
Descripción general
En la terminología de los grafos, las entidades se conocen como nodos o vértices y las relaciones como aristas. En JanusGraph, tanto los vértices como las aristas pueden tener datos asociados adicionales que están disponibles a través de propiedades.
La ilustración anterior es un ejemplo de un grafo de propiedades.
Las bases de datos de grafos te ayudan a modelar diferentes dominios y actividades:
- Redes sociales
- Transacciones financieras (para análisis de fraudes)
- Redes de sistemas físicos o virtuales
Cuando se crean bases de datos de grafos, a veces se generan millones o incluso miles de millones de vértices y aristas. Cuando utilizas JanusGraph con Bigtable como la capa de almacenamiento subyacente, puedes ejecutar consultas rápidas (conocidas como recorridos de grafos) y escalar tu capa de almacenamiento de forma independiente según el tamaño. y la capacidad de procesamiento que necesites. JanusGraph también utiliza un backend de indexación conectable a fin de proporcionar indexación de texto completo para las propiedades de vértices y aristas.
Puedes implementar una infraestructura escalable de JanusGraph en GKE con Elasticsearch como el backend de indexación que se ejecuta en Pods en un StatefulSet, y Bigtable como el backend de almacenamiento. Cuando termines, podrás recorrer las relaciones que existen en tus datos de grafos.
En el siguiente diagrama, se muestra cómo estos elementos se conectan entre sí.
En el diagrama anterior, se muestra la implementación de JanusGraph en GKE con Elasticsearch y Bigtable.
Datos de JanusGraph en Bigtable
JanusGraph almacena los datos de grafos como una lista de adyacencia. Cada fila representa un vértice, cualquier vértice adyacente (aristas) y metadatos de propiedad sobre 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 y cualquier propiedad que defina aún más la relación, se almacena como una columna de arista o de propiedad de arista. El calificador de columnas y el valor de columna almacenan datos que definen la arista, de conformidad con las prácticas recomendadas de Bigtable. Cada propiedad de vértice se almacena como una columna separada, usando el calificador de columna y 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 para un fragmento de grafo pequeño con detalles lógicos para dos filas de vértices. En el diagrama, las dos filas de ejemplo representan dos vértices. El primer vértice está etiquetado con una sola propiedad de vértice y está relacionado con otros dos vértices mediante dos aristas independientes. El segundo vértice tiene columnas que contienen dos propiedades y una arista.
En la siguiente ilustración del modelo de datos lógicos de vértices, se proporcionan algunos detalles sobre los calificadores y los valores de columnas para una columna de arista o propiedad de arista.
Para cada vértice adyacente, una columna almacena los metadatos sobre esa arista. El calificador de columnas contiene metadatos sobre la relación de arista y la dirección de arista, y un puntero al vértice adyacente. El valor de la columna contiene la etiqueta de arista y cualquier propiedad de arista adicional. Debido a que los recorridos se pueden seguir en cualquier dirección, las aristas se almacenan dos veces, una para cada extremo de la relación de arista. El almacenamiento arista bidireccional aumenta significativamente el rendimiento del recorrido, pero conlleva algunas compensaciones debido a la redundancia del espacio de almacenamiento adicional y las mutaciones de arista no atómicas.
En el siguiente diagrama, se muestra 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 y los valores de una columna de arista.
Cada propiedad de vértice se almacena como una columna separada. El calificador de columna es un identificador único para la clave de propiedad. El valor de columna contiene un identificador para la propiedad y el valor de la propiedad.
JanusGraph también se basa en el orden lexicográfico de Bigtable de las filas y los calificadores de columna para mejorar el rendimiento de las consultas.
¿Qué sigue?
- Obtén más información sobre JanusGraph y las bases de datos de grafos.
- Obtén más información sobre el framework de procesamiento de grafos de Apache TinkerPop y explora el lenguaje de recorrido de grafos Gremlin.
- Obtén más información sobre cómo JanusGraph almacena datos en Bigtable.
- Profundiza sobre los casos de uso de grafos mediante la implementación de una aplicación de ejemplo de JanusGraph.