Partager via


Extension AGE avec Azure Database pour PostgreSQL

Apache AGE (extension de graphe) est une extension PostgreSQL puissante conçue pour intégrer en toute transparence les fonctionnalités de base de données de graphe dans l’écosystème PostgreSQL. AGE permet aux utilisateurs de stocker et d'interroger les données de graphe de manière efficace et expressive en prenant en charge le langage de requête intuitif openCypher, lorsqu'AGE est développé sous le projet Apache Incubator. Il permet aux développeurs de gérer des relations complexes et de découvrir des insights que les bases de données traditionnelles peuvent avoir du mal à révéler.

Les données de graphe, représentées par des nœuds (entités) et des arêtes (relations), sont de plus en plus reconnues comme essentielles pour les applications telles que les réseaux sociaux, les systèmes de recommandation, la détection des fraudes, l’analyse du réseau et les graphiques de connaissances. Apache AGE fournit une solution robuste pour la gestion de ces données interconnectées, ce qui permet des analyses avancées et une gestion simplifiée des données.

Déverrouillage des fonctionnalités de données de graphe avec Apache AGE

Le déverrouillage des fonctionnalités de données de graphe avec Apache AGE permet aux développeurs d’exploiter le plein potentiel des données interconnectées dans PostgreSQL. Apache AGE permet une exploration et une analyse transparentes des relations complexes en intégrant directement la fonctionnalité de base de données de graphe dans la base de données relationnelle. Cette fonctionnalité est précieuse pour les applications nécessitant des insights approfondis sur les connexions de données, telles que les réseaux sociaux, la détection des fraudes et les systèmes de recommandation. Avec sa prise en charge du langage de requête openCypher et de la base PostgreSQL robuste, Apache AGE fournit une solution évolutive et efficace pour la gestion et l’interrogation des données de graphe.

Fonctionnalités clés d’Apache AGE

  • Intégration des données relationnelles et graphiques : AGE permet une interaction transparente entre les données relationnelles et graphiques dans PostgreSQL.
  • openCypher Query Language : AGE prend en charge ce langage de requête largement reconnu pour les bases de données de graphe, ce qui simplifie l’écriture et la maintenance des requêtes.
  • Scalabilité et fiabilité : sous l’architecture éprouvée de PostgreSQL, AGE hérite de sa scalabilité et de sa robustesse de niveau entreprise.

Pourquoi utiliser une base de données de graphe ?

Les bases de données graphes excellent lors de la représentation et de l’interrogation de relations complexes et hautement interconnectées. Contrairement aux bases de données relationnelles, qui nécessitent plusieurs jointures ou bases de données de documents qui ne sont pas optimisées pour une traversée de relation approfondie, les bases de données de graphiques modélisent naturellement les relations entre les entités. Par exemple, dans une base de données de graphes, l’interrogation de « amis d’amis » ou du « chemin le plus court entre deux points » est plus intuitive et plus efficace.

AGE utilise le système transactionnel compatible ACID de PostgreSQL, garantissant ainsi la fiabilité et l’atomicité pour les requêtes de graphe. Cette intégration facilite les applications avancées telles que Knowledge Graphs, qui prennent en charge la recherche basée sur l’IA et la génération de données en structurant des faits et des concepts en tant que nœuds et leurs interconnexions en tant que périphéries.

Les clients Azure peuvent activer l’extension AGE

Azure Database pour PostgreSQL inclut Apache AGE comme extension.

Ces étapes vous aident à activer l’extension dans votre instance de serveur flexible :

Paramètres du serveur d’accès

Dans le portail Azure, accédez à l’instance du serveur flexible PostgreSQL et sélectionnez l’option Paramètres du serveur.

Ajustez les paramètres suivants :

  • azure.extensions : recherchez et activez AGE parmi les extensions disponibles dans le filtre de paramètres.
  • shared_preload_libraries : recherchez et activez AGE dans le filtre de paramètres.

Sélectionnez Enregistrer pour appliquer ces modifications. Le serveur redémarre automatiquement pour activer l’extension AGE.

Remarque

L’échec de l’activation de shared_preload_libraries entraîne l’erreur suivante lorsque vous tentez d’utiliser le schéma AGE dans une requête : « ERREUR : erreur d’appel de fonction de chiffrement (cstring) non gérée lors de la première requête de chiffrement »

Activer AGE dans PostgreSQL

Une fois le serveur redémarré, connectez-vous à l’instance PostgreSQL à l’aide de l’interpréteur psql. Exécutez la commande suivante pour activer AGE :

CREATE EXTENSION IF NOT EXISTS AGE CASCADE;

Une fois réussie, vous voyez la sortie de la requête sous la forme CREATE EXTENSION.

Vous pouvez également interroger la table de catalogue pg_extension pour vérifier que AGE a été activé et vérifier la version de l’extension.

SELECT * FROM pg_extension WHERE extname = 'age';

Configurer des chemins de schéma

AGE ajoute un schéma appelé ag_catalog, essentiel pour la gestion des données de graphe. Vérifiez que ce schéma est inclus dans le chemin de recherche en exécutant :

SET search_path=ag_catalog,"$user",public;

Pour Python, vous pouvez définir le chemin du schéma en exécutant :

import psycopg as pg
with pg.Connection.connect(con_str + " options='-c search_path=ag_catalog,\"$user\",public'") as con:

Il peut également être configuré par programmation dans votre application.

En suivant ces étapes, vous vérifiez que votre instance PostgreSQL est correctement configurée pour utiliser les fonctionnalités de l’extension AGE. L’extension AGE fournit des fonctionnalités avancées de base de données de graphe directement dans PostgreSQL. Cette configuration permet une intégration transparente des requêtes de graphe dans vos applications, permettant de découvrir des relations de données puissantes et d'obtenir des perspectives précieuses. Une fois l’extension AGE activée et configurée, vous êtes maintenant prêt à explorer le plein potentiel de l’analytique des graphiques dans votre environnement PostgreSQL.

Tables importantes dans le schéma ag_catalog

  • ag_graph
  • ag_label

ag_graph

La table ag_graph dans le schéma ag_catalog d’Apache AGE sert de référentiel pour les métadonnées liées aux graphiques créés dans PostgreSQL via la ag_catalog.create_graph fonction. Plus précisément, il gère les détails tels que le nom du graphique et l’espace de noms associé, qui agit comme un schéma dans PostgreSQL. Cet espace de noms organise la structure du graphique et contient des tables pour le stockage des données de vertex et de périphérie.

\d+ ag_graph
                                          Table "ag_catalog.ag_graph"
 Column   |     Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
-----------+--------------+-----------+----------+---------+---------+-------------+--------------+-------------
 graphid   | oid |           | not null |         | plain   |             |              |
 name | name |           | not null |         | plain   |             |              |
 namespace | regnamespace |           | not null |         | plain   |             |              |
Indexes:
    "ag_graph_graphid_index" UNIQUE, btree (graphid)
    "ag_graph_name_index" UNIQUE, btree (name)
    "ag_graph_namespace_index" UNIQUE, btree (namespace)
Referenced by:
    TABLE "ag_label" CONSTRAINT "fk_graph_oid" FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap

ag_label

La table ag_label stocke les métadonnées relatives aux étiquettes utilisées dans les graphiques AGE. Il effectue le suivi de ces étiquettes, en les associant à leurs graphiques respectifs et en définissant s’ils représentent des sommets ou des arêtes. L’entrée inclut l’ID unique de l’étiquette, le graphique associé, tous les index et la table PostgreSQL sous-jacente qui stocke les données.

\d+ ag_label
                                   Table "ag_catalog.ag_label"
 Column  |    Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
----------+------------+-----------+----------+---------+---------+-------------+--------------+-------------
 name | name |           | not null |         | plain   |             |              |
 graph    | oid |           | not null |         | plain   |             |              |
 id       | label_id   |           |          |         | plain   |             |              |
 kind     | label_kind |           |          |         | plain   |             |              |
 relation | regclass   |           | not null |         | plain   |             |              |
 seq_name | name |           | not null |         | plain   |             |              |
Indexes:
"ag_label_graph_oid_index" UNIQUE, btree (graph, id)
"ag_label_name_graph_index" UNIQUE, btree (name, graph)
"ag_label_relation_index" UNIQUE, btree (relation)
"ag_label_seq_name_graph_index" UNIQUE, btree (seq_name, graph)
Foreign-key constraints:
- `fk_graph_oid` FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap