Les bases de données orientées graphe peuvent vous aider à dégager des insights en modélisant vos entités de données et leurs relations. JanusGraph est une base de données orientée graphe qui permet de travailler sur de grands volumes de données. Cette page présente des concepts qui peuvent vous aider à exécuter JanusGraph sur Google Cloud avec Google Kubernetes Engine comme plate-forme d'orchestration et Bigtable comme backend de stockage.
Ce document est destiné aux architectes système, aux administrateurs de bases de données et aux professionnels DevOps qui souhaitent exécuter la base de données orientée graphe JanusGraph surGoogle Cloud à l'aide d'un Bigtable comme backend de stockage. Il part du principe que vous connaissez bien Google Kubernetes Engine (GKE), les pods Kubernetes, Bigtable et Elasticsearch.
Présentation
Dans la terminologie des graphes, les entités sont appelées nœuds ou sommets, et les relations sont appelées arêtes. Dans JanusGraph, les sommets et les arêtes peuvent posséder des données associées supplémentaires qui sont disponibles via des propriétés.
L'illustration précédente est un exemple de graphe de propriétés.
Les bases de données orientées graphe vous aident à modéliser divers domaines et activités :
- Réseaux sociaux
- Transactions financières (pour l'analyse de fraude)
- Réseaux de systèmes physiques ou virtuels
La création de bases de données orientées graphe conduit parfois à créer des millions, voire des milliards de sommets et d'arêtes. Lorsque vous utilisez JanusGraph avec Bigtable comme couche de stockage sous-jacente, vous pouvez à la fois exécuter des requêtes rapides (appelées balayages de graphe) et faire évoluer votre couche de stockage indépendamment en fonction de la taille et du débit dont vous avez besoin. JanusGraph utilise également un backend d'indexation connectable pour fournir une indexation en texte intégral des propriétés des sommets et des arêtes.
Vous pouvez déployer une infrastructure JanusGraph évolutive sur GKE, en utilisant Elasticsearch comme backend d'indexation exécuté dans des pods d'un StatefulSet, et Bigtable comme backend de stockage. Lorsque vous aurez terminé, vous pourrez parcourir les relations existant dans vos données de graphique.
Le schéma suivant montre comment ces éléments s'intègrent les uns aux autres.
Le schéma précédent montre le déploiement de JanusGraph sur GKE avec Elasticsearch et Bigtable.
Données JanusGraph dans Bigtable
Les données de graphe sont stockées par JanusGraph sous la forme d'une liste de contiguïté. Chaque ligne représente un sommet, tous les sommets adjacents (arêtes) et des métadonnées de propriété concernant les sommets et les arêtes. La clé de ligne est l'identifiant unique du sommet. Chaque relation entre le sommet et un autre sommet, ainsi que toutes les propriétés qui définissent davantage la relation, sont stockées sous forme d'arête ou de colonne de propriété d'arête. Le qualificatif de colonne et la valeur de colonne stockent tous deux les données qui définissent l'arête, conformément aux bonnes pratiques de Bigtable. Chaque propriété de sommet est stockée dans une colonne distincte, en utilisant à nouveau le qualificatif de colonne et la valeur de colonne pour définir la propriété.
Le schéma suivant illustre cette structure de stockage.
Le schéma montre la structure de stockage logique d'un petit fragment de graphe avec des détails logiques pour deux lignes de sommet. Dans le schéma, les deux exemples de lignes représentent deux sommets. Le premier sommet est étiqueté avec une propriété de sommet unique et est lié à deux autres sommets par deux arêtes distinctes. Le second sommet comporte des colonnes contenant deux propriétés et une arête.
L'illustration suivante du modèle de données logique de l'arête de sommet fournit des informations détaillées sur les qualificatifs et les valeurs d'une colonne d'arête ou de propriété d'arête.
Pour chaque sommet adjacent, une colonne stocke les métadonnées de cette arête. Le qualificatif de colonne contient des métadonnées sur la relation de l'arête et sur sa direction, ainsi qu'un pointeur vers le sommet adjacent. La valeur de la colonne contient l'étiquette de l'arête et toutes les propriétés d'arête supplémentaires. Étant donné que les balayages peuvent être suivis dans les deux sens, les arêtes sont stockées deux fois : une fois pour chaque extrémité de la relation d'arête. Le stockage d'arête bidirectionnel augmente considérablement les performances de balayage, mais présente certains compromis en raison de la redondance de l'espace de stockage supplémentaire et des mutations d'arête non atomiques.
Le schéma suivant est le modèle de données logique d'une colonne de propriété de sommet.
L'illustration précédente fournit des détails sur les qualificatifs et les valeurs d'une colonne d'arête.
Chaque propriété de sommet est stockée dans une colonne distincte. Le qualificatif de colonne est un identifiant unique pour la clé de propriété. La valeur de la colonne contient à la fois un identifiant de la propriété et la valeur de la propriété.
JanusGraph s'appuie également sur l'ordre lexicographique Bigtable des lignes et des qualificatifs de colonnes pour améliorer les performances des requêtes.
Étape suivante
- Apprenez-en plus sur JanusGraph et les bases de données orientées graphe.
- Découvrez le framework de calcul de graphe Apache TinkerPop et explorez le langage de balayage de graphe Gremlin.
- Découvrez comment JanusGraph stocke les données dans Bigtable.
- Approfondissez les cas d'utilisation de graphes en déployant un exemple d'application JanusGraph.