Traitement de graphiques avec SQL Server et Azure SQL Database

S’applique à : SQL Server 2017 (14.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed Instance

SQL Server offre des fonctionnalités de base de données de graphe pour modéliser des relations plusieurs-à-plusieurs. Les relations de graphe sont intégrées à Transact-SQL et bénéficient des avantages de l’utilisation de SQL Server comme système de gestion de base de données.

Qu’est-ce qu’une base de données de graphes ?

Une base de données de graphes est une collection de nœuds (ou sommets) et d’arêtes (ou relations). Un nœud représente une entité (par exemple, une personne ou une organisation) et une arête représente une relation entre deux nœuds qu’elle connecte (par exemple, des mentions j’aime ou des amis). Les nœuds et les arêtes peuvent avoir des propriétés associées. Voici quelques fonctionnalités qui rendent une base de données de graphe unique :

  • Les arêtes ou relations sont des entités de première classe dans une base de données de graphe, auxquelles des attributs ou des propriétés peuvent être associés.
  • Un simple arête peut connecter de manière flexible plusieurs nœuds dans une base de données de graphe.
  • Vous pouvez facilement exprimer des critères spéciaux et des requêtes de navigation sur plusieurs tronçons.
  • Vous pouvez facilement exprimer une fermeture transitive et des requêtes polymorphes.

Quand utiliser une base de données de graphe

Une base de données relationnelle peut obtenir tout ce qu’une base de données de graphe peut. Toutefois, une base de données de graphe facilite l’expression de certains types de requêtes. En outre, avec des optimisations spécifiques, certaines requêtes peuvent être plus performantes. Votre décision de choisir une base de données relationnelle ou graphe est basée sur les facteurs suivants :

  • Votre application a des données hiérarchiques. Le type de données HierarchyID peut être utilisé pour implémenter des hiérarchies, mais il présente certaines limitations. Par exemple, il ne vous permet pas de stocker plusieurs parents pour un nœud.
  • Votre application a des relations complexes plusieurs-à-plusieurs ; à mesure que l’application évolue, de nouvelles relations sont ajoutées.
  • Vous devez analyser des données et relations interconnectées.

Fonctionnalités de graphe introduites dans SQL Server 2017 (14.x)

Les fonctionnalités suivantes ont été introduites dans SQL Server 2017.

Créer des objets graphiques

Les extensions Transact-SQL permettent aux utilisateurs de créer des tables de nœud ou de périphérie. Les nœuds et les arêtes peuvent avoir des propriétés associées. Étant donné que les nœuds et les arêtes sont stockés en tant que tables, toutes les opérations prises en charge sur les tables relationnelles sont prises en charge sur une table de nœud ou de périphérie. Voici un exemple :

CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;

Le diagramme suivant montre comment les nœuds et les arêtes sont stockés en tant que tables.

Diagramme montrant les nœuds et les arêtes sont stockés sous forme de tables.

Extensions de langage de requête

Une nouvelle MATCH clause est introduite pour prendre en charge la correspondance de modèle et la navigation à plusieurs tronçons dans le graphe. La MATCH fonction utilise la syntaxe de style ASCII pour la correspondance de modèles. Par exemple, pour trouver des amis de « John » :

-- Find friends of John
SELECT Person2.Name 
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';

Entièrement intégré dans SQL Server moteur de base de données

Les extensions graph sont entièrement intégrées dans SQL Server moteur. Utilisez le même moteur de stockage, les mêmes métadonnées, le même processeur de requêtes, etc. pour stocker et interroger des données de graphe. Interrogez des données relationnelles et de graphe dans une requête unique. Combinaison des fonctionnalités de graphe avec d’autres technologies SQL Server telles que les index columnstore, la haute disponibilité, les services R, etc. SQL Graph prend également en charge toutes les fonctionnalités de sécurité et de conformité disponibles avec SQL Server.

Outils et écosystème

Tirez parti des outils et de l’écosystème existants que SQL Server offre. Des outils tels que la sauvegarde et la restauration, l’importation et l’exportation, BCP fonctionnent tout simplement. D’autres outils ou services tels que SSIS, SSRS ou Power BI fonctionnent avec des tables de graphiques, comme ils fonctionnent avec des tables relationnelles.

Contraintes d’arête

Une contrainte d’arête est définie sur une table d’arêtes de graphe et est une paire de tables de nœuds qu’un type d’arête donné peut connecter. Les contraintes edge aident les développeurs à restreindre le type de nœuds qu’une périphérie donnée peut connecter.

Pour en savoir plus sur la création et l’utilisation de contraintes de périmètre, consultez Contraintes de périmètre.

Fusionner DML

L’instruction MERGE effectue des opérations d’insertion, de mise à jour ou de suppression sur une table cible en fonction des résultats d’une jointure à une table source. Par exemple, vous pouvez synchroniser deux tables en insérant, en mettant à jour ou en supprimant des lignes dans une table cible en fonction des différences entre la table cible et la table source. L’utilisation de prédicats MATCH dans une instruction MERGE est désormais prise en charge sur Azure SQL Database et SQL Server vNext. Autrement dit, il est désormais possible de fusionner vos données de graphe actuelles (tables de nœud ou de périphérie) avec de nouvelles données à l’aide des prédicats MATCH pour spécifier les relations de graphe dans une instruction unique, au lieu d’instructions INSERT/UPDATE/DELETE distinctes.

Pour en savoir plus sur l’utilisation de la correspondance dans la fusion DML, reportez-vous à l’instruction MERGE.

Chemin le plus court

La fonction SHORTEST_PATH recherche le chemin le plus court entre deux nœuds d’un graphe ou à partir d’un nœud donné vers tous les autres nœuds du graphe. SHORTEST PATH peut également être utilisé pour trouver une fermeture transitive ou pour des traversées de longueur arbitraire dans le graphique.

Étapes suivantes