Présentation de Spanner Graph

Spanner Graph est une fonctionnalité de Spanner et Spanner Omni qui vous permet de créer des graphes de propriétés et de les interroger à l'aide d'une base de données de graphes directement dans Spanner. Spanner Graph combine l'évolutivité et la fiabilité de Spanner avec la puissance de la modélisation et de l'interrogation de graphes.

Les graphes de propriétés modélisent les données sous forme de nœuds (entités) et d'arêtes (relations entre les entités), qui peuvent tous deux avoir des propriétés (libellés et métadonnées). Cela est particulièrement utile pour les données complexes et fortement connectées, comme les réseaux sociaux, la détection des fraudes et les moteurs de recommandations.

Les sujets abordés dans ce document s'appliquent à Spanner Omni de la même manière qu'à Spanner.

Configurer et interroger Spanner Graph

Pour commencer à utiliser Spanner Graph, vous devez d'abord créer un déploiement et une base de données Spanner Omni. Une fois la base de données créée, vous définissez un schéma de graphe de propriétés qui mappe les tables Spanner Omni existantes aux nœuds et aux arêtes du graphe.

Après avoir configuré le schéma et inséré des données dans les tables sous-jacentes, vous pouvez exécuter des requêtes de graphes à l'aide du langage GQL (Graph Query Language), une extension de GoogleSQL qui implémente la norme ISO GQL. Pour en savoir plus, consultez la section Configurer et interroger Spanner Graph dans la documentation Spanner.

Présentation du schéma Spanner Graph

Le schéma Spanner Graph interprète vos données relationnelles sous forme de graphe. Le schéma spécifie les tables de nœuds et les tables d'arêtes qui composent votre graphe. Chaque table mappe les lignes d'une table Spanner aux éléments du graphe. Les éléments peuvent avoir des libellés pour les catégoriser et des propriétés pour stocker des attributs. Pour en savoir plus, consultez la section Présentation du schéma dans la documentation Spanner.

Créer et gérer un schéma Spanner Graph

Vous utilisez des instructions LDD (langage de définition de données) pour créer, mettre à jour ou supprimer votre définition de graphe de propriétés. L'instruction CREATE PROPERTY GRAPH définit le graphe, en spécifiant les tables, les clés et les libellés sous-jacents. Pour en savoir plus, consultez la section Créer et gérer un schéma Spanner Graph dans la documentation Spanner.

Bonnes pratiques pour concevoir un schéma

Une conception de schéma efficace est essentielle pour les performances. Voici quelques bonnes pratiques :

  • Utiliser l'entrelacement pour colocaliser les arêtes avec leurs nœuds sources.

  • Utiliser des contraintes référentielles (clés étrangères) pour garantir l'intégrité du graphe.

  • Créer des index secondaires sur les propriétés fréquemment filtrées.

  • Choisir entre des conceptions schématisées et sans schéma en fonction de vos modèles de requêtes.

Pour en savoir plus, consultez la section Bonnes pratiques pour concevoir un schéma dans la documentation Spanner.

Utiliser des vues SQL pour créer un graphe de propriétés

Vous pouvez utiliser des vues SQL pour définir les nœuds et les arêtes de votre graphe. Pour en savoir plus sur les différences entre l'utilisation d'une vue SQL et d'une table pour créer un graphe, consultez la section Avantages de la création de graphes avec des vues plutôt qu'avec des tables dans la documentation Spanner.

Présentation des graphes créés à partir de vues SQL

L'utilisation de vues comme couche d'abstraction permet de contrôle des accès au niveau des lignes, de transformer les données de manière flexible et de passer plus facilement des modèles de données sans schéma aux modèles de données formalisés. Pour en savoir plus, consultez la section Présentation des graphes créés à partir de vues SQL.

Créer un graphe à partir de vues SQL

Pour créer un graphe à partir de vues, définissez les vues à l'aide du SQL standard. Ensuite, faites-y référence dans les clauses NODE TABLES ou EDGE TABLES de votre instruction CREATE PROPERTY GRAPH. Vous devez définir explicitement une KEY pour chaque élément basé sur une vue. La clause KEY spécifie les colonnes de la vue source qui identifient de manière unique chaque élément du graphe. Pour en savoir plus, consultez la section Créer un graphe à partir de vues SQL dans la documentation Spanner.

Gérer les données Spanner Graph

Vous gérez les données dans Spanner Graph en modifiant les tables sous-jacentes qui définissent le graphe. Pour en savoir plus, consultez la section Gérer les données Spanner Graph dans la documentation Spanner.

Opération Description
Insérer Ajoutez des lignes aux tables de nœuds et d'arêtes à l'aide d'instructions INSERT ou d'API de mutation.
Mettre à jour Modifiez les propriétés existantes en mettant à jour les colonnes correspondantes dans les tables sous-jacentes.
Supprimer Supprimez des nœuds ou des arêtes en supprimant les lignes correspondantes. Utilisez ON DELETE CASCADE pour supprimer automatiquement les arêtes associées lorsque vous supprimez un nœud.

Requêtes Spanner Graph

Spanner Graph est compatible avec le langage GQL (Graph Query Language) pour les requêtes permettant de parcourir et d'analyser vos données de graphes.

Présentation des requêtes

Les requêtes de graphes utilisent la clause GRAPH pour spécifier le graphe cible et la clause MATCH pour définir les modèles que vous souhaitez trouver. Vous pouvez renvoyer des propriétés de nœuds et d'arêtes, ou effectuer des agrégations sur les résultats. Pour en savoir plus, consultez la section Présentation des requêtes dans la documentation Spanner.

Utiliser des chemins

Les chemins représentent des séquences de nœuds et d'arêtes dans le graphe. Vous pouvez trouver tous les chemins entre deux nœuds, trouver le chemin le plus court ou filtrer les chemins en fonction de leurs propriétés ou de leur longueur à l'aide de fonctions telles que PATH_LENGTH(), NODES() et EDGES(). Pour en savoir plus, consultez la section Utiliser des chemins dans la documentation Spanner.

Bonnes pratiques pour optimiser les requêtes

Pour optimiser vos requêtes de graphes :

  • Commencez vos parcours à partir de nœuds de cardinalité inférieure.

  • Spécifiez explicitement les libellés pour tous les modèles de nœuds et d'arêtes.

  • Utilisez la fonction IS_FIRST() pour limiter le nombre d'arêtes parcourues à partir de super nœuds de cardinalité élevée.

Pour en savoir plus, consultez la section Bonnes pratiques pour optimiser les requêtes dans la documentation Spanner.

Spanner Graph s'intègre aux fonctionnalités de recherche en texte intégral de Spanner, ce qui vous permet de rechercher des nœuds ou des arêtes en fonction de propriétés de texte non structurées à l'aide de la fonction SEARCH(). Pour en savoir plus, consultez la section Utiliser la recherche en texte intégral avec Spanner Graph dans la documentation Spanner.

Vous pouvez effectuer des recherches de similarité vectorielle sur vos données de graphes pour trouver les k plus proches voisins (KNN) ou les plus proches voisins approximatifs (ANN). Cela est utile pour les recommandations basées sur la similarité et les applications basées sur l'IA. Pour en savoir plus, consultez la section Utiliser la recherche vectorielle avec Spanner Graph dans la documentation Spanner.

Gérer les données sans schéma avec Spanner Graph

Pour les applications dont les modèles de données évoluent, Spanner Graph est compatible avec la gestion des données sans schéma. Vous pouvez stocker tous les nœuds et toutes les arêtes dans des tables génériques uniques avec des colonnes JSON pour les propriétés, ce qui vous permet d'ajouter de nouveaux types et attributs sans modifier le LDD. Pour en savoir plus, consultez la section Gérer les données sans schéma avec Spanner Graph dans la documentation Spanner.

Migrer vers Spanner Graph

Vous pouvez migrer vos données de graphes existantes d'autres bases de données vers Spanner Graph. Ce processus implique généralement d'exporter vos données sous forme de fichiers CSV ou JSON, puis de les importer dans les tables Spanner qui sauvegardent votre nouveau graphe de propriétés. Pour en savoir plus, consultez la section Migrer vos données vers Spanner Graph dans la documentation Spanner.

Référence Spanner Graph pour les utilisateurs d'openCypher

Si vous avez l'habitude d'utiliser openCypher, l'implémentation GQL dans Spanner Graph vous sera familière, mais il existe quelques différences de syntaxe. Cette référence vous aide à mapper les concepts et les requêtes openCypher à la sémantique MATCH et RETURN de Spanner Graph. Pour en savoir plus, consultez la section Référence Spanner Graph pour les utilisateurs d'openCypher dans la documentation Spanner.

Résoudre les problèmes liés à Spanner Graph

Les problèmes courants dans Spanner Graph incluent les violations de l'intégrité référentielle (arêtes orphelines) et les requêtes lentes. La résolution des problèmes implique d'inspecter les définitions de votre schéma, de vérifier si des nœuds ou des arêtes sont manquants et d'utiliser des plans de requêtes pour identifier les goulots d'étranglement des performances. Pour en savoir plus, consultez la section Résoudre les problèmes liés à Spanner Graph dans la documentation Spanner.

Étape suivante