- pgRouting es una extensión de Postgres que se usa principalmente en sistemas de información geográfica (GIS) para encontrar la ruta más corta entre dos puntos
- Sin embargo, pgRouting también puede aprovecharse para procesar datos con diversas estructuras de grafo, además de los datos geoespaciales
- Puede usarse como una alternativa ligera a bases de datos de grafos especializadas como Apache AGE o Neo4j
Introducción a pgRouting
- pgRouting es una extensión de PostGIS que ofrece funciones de enrutamiento geoespacial
- Con esto es posible calcular rutas más cortas, realizar análisis de redes y resolver problemas complejos de enrutamiento
- Se utiliza sobre todo en GIS, por ejemplo para encontrar la ruta más corta entre dos ubicaciones
Relación con los grafos
- La fortaleza de pgRouting es que puede trabajar con cualquier dato estructurado como grafo
- Un grafo está compuesto por una red de puntos interconectados, donde:
- Los nodos representan entidades
- Las aristas representan relaciones o caminos entre nodos
- En mapas o GIS, nodos y aristas significan intersecciones y carreteras, respectivamente, pero también puede aplicarse a sistemas abstractos como las redes sociales
Casos de uso de pgRouting fuera de GIS
-
Programación de tareas
- En un proyecto existen dependencias entre tareas, lo que forma un grafo acíclico dirigido (DAG)
- Los nodos representan tareas
- Las aristas representan dependencias
- Uno de los desafíos principales en la gestión de proyectos es encontrar la 'ruta crítica (critical path)', que determina la duración total del proyecto
- Con pgRouting se pueden modelar las dependencias de las tareas y encontrar la ruta crítica mediante algoritmos de grafos
-
Enrutamiento de proxy inverso basado en asignación de recursos
- En sistemas distribuidos, es importante asignar eficientemente los recursos entre los nodos de la red
- Cada nodo representa una ubicación física o un proceso de cómputo, y las aristas representan las rutas de movimiento de datos entre nodos
- Por ejemplo, en infraestructura en la nube, pgRouting puede usarse para enrutar datos o cargas de cómputo entre servidores distribuidos por la ruta más eficiente
-
Motores de recomendación como YouTube
- En motores de recomendación o algoritmos de búsqueda que usan grafos de conocimiento, pgRouting puede emplearse para construir relaciones entre entidades y eventos
- Por ejemplo, en el algoritmo de recomendación de YouTube:
- Los nodos representan entidades como usuarios, videos y categorías
- Las aristas representan relaciones como interacciones entre usuarios y videos o categorías compartidas entre videos
- A través de esta estructura de grafo, se pueden ofrecer recomendaciones personalizadas a los usuarios
Información adicional sobre pgRouting
- pgRouting es una potente extensión de Postgres que puede usarse para resolver diversos problemas basados en grafos
- Más detalles disponibles en la documentación oficial de pgRouting
2 comentarios
¿Hay alguien que haya implementado realmente
apache ageopgRouting?En la empresa estamos introduciendo una Graph DB, y aunque ya usamos Postgres como RDB existente,
me dijeron que con plugins/extensiones se puede usar Postgres “como si fuera una Graph DB”, pero que en la práctica el rendimiento no da, así que estábamos considerando
neo4j; sin embargo, parece que en Hacker News también hay bastante descontento conneo4j.Opiniones de Hacker News
Hace cinco años, se sintió decepcionado con las bases de datos y bibliotecas de grafos, así que intentó colocar varios DBMS no orientados a grafos detrás de una interfaz de Python similar a NetworkX
Supabase sigue publicando excelente contenido relacionado con PostGIS
Siempre se ha preguntado por qué no existe un "SQLite para grafos"
Está trabajando en un proyecto simple de base de datos de grafos sobre Postgres
Le gustaría conocer opiniones sobre representar una matriz de adyacencia almacenando bitmaps roaring en una columna
byteade Postgresbyteadentro del servidor DB y usar SPI para minimizar la sobrecarga de redSe pregunta si alguien tiene opiniones sobre "Apache AGE"
Se pregunta si realmente hay una diferencia entre una base de datos de "grafos" y una base de datos de "SQL general" al mirar solo el modelo de datos (por ejemplo, no el lenguaje de consultas)
Se pregunta si alguien tiene experiencia usando PgRouting para generar isócronas
Postgres siempre ofrece extensiones que abren nuevas oportunidades de modelado de datos