- pgRouting est une extension de Postgres, principalement utilisée dans les systèmes d'information géographique (GIS) pour trouver le plus court chemin entre deux points
- Cependant, pgRouting peut aussi être utilisé pour traiter divers types de données structurées en graphe au-delà des données géospatiales
- Il peut servir d'alternative légère à des bases de données graphe spécialisées comme Apache AGE ou Neo4j
Présentation de pgRouting
- pgRouting est une extension de PostGIS qui fournit des fonctionnalités de routage géospatial
- Il permet de calculer des plus courts chemins, d'effectuer des analyses de réseau et de résoudre des problèmes de routage complexes
- Il est surtout utilisé dans le GIS, par exemple pour trouver le plus court chemin entre deux emplacements
Lien avec les graphes
- L'un des points forts de pgRouting est qu'il peut fonctionner avec n'importe quelles données structurées sous forme de graphe
- Un graphe est constitué d'un réseau de points interconnectés, où :
- les nœuds représentent des entités
- les arêtes représentent les relations ou chemins entre les nœuds
- Sur une carte ou dans un GIS, les nœuds et les arêtes correspondent respectivement aux intersections et aux routes, mais ce modèle peut aussi s'appliquer à des systèmes abstraits comme les réseaux sociaux
Cas d'usage de pgRouting en dehors du GIS
-
Planification des tâches
- Dans un projet, il existe des dépendances entre les tâches, ce qui forme un graphe orienté acyclique (DAG)
- les nœuds représentent les tâches
- les arêtes représentent les dépendances
- L'un des principaux enjeux en gestion de projet consiste à trouver le « chemin critique » qui détermine la durée totale du projet
- On peut utiliser pgRouting pour modéliser les dépendances entre tâches et trouver le chemin critique à l'aide d'algorithmes de graphe
-
Routage de reverse proxy basé sur l'allocation de ressources
- Dans les systèmes distribués, il est important d'allouer efficacement les ressources entre les nœuds du réseau
- Chaque nœud représente un emplacement physique ou un processus de calcul, et les arêtes représentent les chemins de circulation des données entre les nœuds
- Par exemple, dans une infrastructure cloud, pgRouting peut être utilisé pour acheminer les données ou les tâches de calcul entre des serveurs distribués via le chemin le plus efficace
-
Moteurs de recommandation comme YouTube
- Dans les moteurs de recommandation ou les algorithmes de recherche utilisant des graphes de connaissances, pgRouting peut servir à construire les relations entre entités et événements
- Par exemple, dans l'algorithme de recommandation de YouTube :
- les nœuds représentent des entités comme les utilisateurs, les vidéos ou les catégories
- les arêtes représentent des relations comme les interactions entre utilisateurs et vidéos, ou le partage de catégories entre vidéos
- Cette structure en graphe permet de fournir des recommandations personnalisées aux utilisateurs
Informations complémentaires sur pgRouting
- pgRouting est une extension puissante de Postgres qui peut être utilisée pour résoudre divers problèmes fondés sur des graphes
- Pour en savoir plus, consultez la documentation officielle de pgRouting
2 commentaires
Quelqu’un a-t-il déjà mis en production
apache ageoupgRouting?L’entreprise est en train d’introduire une base de données graphe, et nous utilisons déjà Postgres comme SGBDR existant.
Les plugins/extensions permettent d’utiliser Postgres « comme si c’était une base graphe », mais on nous dit qu’en pratique les performances ne sont pas au rendez-vous, donc nous envisagions plutôt Neo4j ; pourtant, à voir les avis sur Hacker News, il semble aussi y avoir beaucoup d’insatisfaction envers Neo4j.
Commentaires Hacker News
Il y a cinq ans, j’avais été déçu par les bases de données et bibliothèques Graph, et j’avais essayé de placer plusieurs DBMS non orientés graphe derrière une interface Python similaire à NetworkX
Supabase continue de proposer d’excellents contenus autour de PostGIS
Je me suis toujours demandé pourquoi il n’existait pas de « SQLite pour les graphes »
Je travaille sur un projet simple de base de données Graph sous Postgres
J’aimerais avoir des avis sur l’idée de stocker des bitmaps roaring dans une colonne
byteaPostgres pour représenter une matrice d’adjacenceplrustet le SPI de PostgreSQL, il semble possible de construire cela aveccroaring-rsplrust, on pourrait stocker des bitmaps roaring dans lebyteadu serveur DB et utiliser le SPI pour minimiser la surcharge réseaupg_roaringbitmap, mais il utiliseint64et je préfère partir de RDSJe me demande si quelqu’un a un avis sur « Apache AGE »
Je me demande s’il existe une réelle différence entre une base de données « graphe » et une base de données « SQL classique » si l’on considère uniquement le modèle de données (et non le langage de requête, par exemple)
Je me demande si quelqu’un a de l’expérience avec la génération d’isochrones à l’aide de PgRouting
Postgres propose toujours des extensions qui ouvrent de nouvelles possibilités de modélisation des données