Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Apache AGE (una extensión de grafo) es una extensión de PostgreSQL eficaz diseñada para integrar sin problemas las funcionalidades de base de datos de grafos en el ecosistema de PostgreSQL. AGE permite a los usuarios almacenar y consultar datos de grafos de manera eficaz y expresiva al ser compatible con el lenguaje de consulta intuitivo openCypher, cuando se desarrolla bajo el proyecto de la Incubadora Apache. Puente la brecha entre los datos relacionales y de grafos, lo que permite a los desarrolladores administrar relaciones complejas y descubrir información que las bases de datos tradicionales podrían tener dificultades para revelar.
Los datos de grafos, representados a través de nodos (entidades) y bordes (relaciones), se reconocen cada vez más como esenciales para aplicaciones como redes sociales, sistemas de recomendación, detección de fraudes, análisis de red y gráficos de conocimiento. Apache AGE proporciona una solución sólida para controlar estos datos interconectados, lo que permite análisis avanzados y administración simplificada de datos.
Desbloqueo de funcionalidades de datos de grafos con Apache AGE
Desbloquear las funcionalidades de datos de grafos con Apache AGE permite a los desarrolladores aprovechar todo el potencial de los datos interconectados dentro de PostgreSQL. Apache AGE permite la exploración y el análisis sin problemas de relaciones complejas mediante la integración de la funcionalidad de base de datos de grafos directamente en la base de datos relacional. Esta funcionalidad es valiosa para las aplicaciones que requieren información detallada sobre las conexiones de datos, como redes sociales, detección de fraudes y sistemas de recomendaciones. Con su compatibilidad con el lenguaje de consulta openCypher y una base sólida de PostgreSQL, Apache AGE proporciona una solución escalable y eficaz para administrar y consultar datos de grafos.
Características clave de Apache AGE
- Integración de datos relacionales y gráficos: AGE permite una interacción perfecta entre el grafo y los datos relacionales dentro de PostgreSQL.
- lenguaje de consulta openCypher: AGE admite este lenguaje de consulta ampliamente reconocido para bases de datos de grafos, lo que simplifica la escritura y el mantenimiento de consultas.
- Escalabilidad y confiabilidad: en la arquitectura probada de PostgreSQL, AGE hereda su escalabilidad y solidez de nivel empresarial.
¿Por qué usar una base de datos de grafos?
Las bases de datos de grafos se destacan en la representación y consulta de relaciones complejas y altamente interconectadas. A diferencia de las bases de datos relacionales, que requieren múltiples uniones, o las bases de datos de documentos que generalmente no están optimizadas para el recorrido profundo de relaciones, las bases de datos de grafos modelan naturalmente las relaciones entre entidades. Por ejemplo, consultar "amigos de amigos" o la "ruta más corta entre dos puntos" es más intuitiva y eficaz en una base de datos de grafos.
AGE usa el sistema transaccional compatible con ACID de PostgreSQL, lo que garantiza la confiabilidad y la atomicidad de las consultas de grafos. Esta integración facilita aplicaciones avanzadas como Knowledge Graph, que admiten la generación de datos y la búsqueda controlada por inteligencia artificial mediante la estructuración de hechos y conceptos como nodos y sus interconexiones como bordes.
Los clientes de Azure pueden habilitar la extensión AGE
Azure Database for PostgreSQL incluye Apache AGE como extensión.
Estos pasos le ayudarán a habilitar la extensión en la instancia de servidor flexible:
Parámetros de servidor de acceso
En Azure Portal, vaya a la instancia del servidor flexible de PostgreSQL y seleccione la opción Parámetros del servidor.
Ajuste la siguiente configuración:
- azure.extensions: busque y habilite AGE entre las extensiones disponibles en el filtro de parámetros.
- shared_preload_libraries: busque y habilite AGE en el filtro de parámetros.
Seleccione Guardar para aplicar estos cambios. El servidor se reinicia automáticamente para activar la extensión AGE.
Nota:
La falta de habilitación de shared_preload_libraries
da como resultado el siguiente error al intentar usar el esquema AGE en una consulta: "ERROR: error de llamada de función de cifrado no controlado (cstring) en la primera consulta de cifrado".
Habilitación de AGE en PostgreSQL
Una vez reiniciado el servidor, conéctese a la instancia de PostgreSQL mediante el intérprete de psql. Ejecute el siguiente comando para habilitar AGE:
CREATE EXTENSION IF NOT EXISTS AGE CASCADE;
Una vez que se haya realizado correctamente, verá CREATE EXTENSION
como salida de la consulta.
También puede consultar la tabla de catálogo de pg_extension para confirmar que AGE se ha habilitado y comprobar la versión de la extensión.
SELECT * FROM pg_extension WHERE extname = 'age';
Configuración de rutas de acceso de esquema
AGE agrega un esquema denominado ag_catalog
, esencial para controlar los datos del grafo. Asegúrese de que este esquema se incluye en la ruta de búsqueda ejecutando:
SET search_path=ag_catalog,"$user",public;
Para Python, puede establecer la ruta de acceso del esquema mediante la ejecución de:
import psycopg as pg
with pg.Connection.connect(con_str + " options='-c search_path=ag_catalog,\"$user\",public'") as con:
También se puede configurar mediante programación en la aplicación.
Al seguir estos pasos, asegúrese de que la instancia de PostgreSQL está configurada correctamente para usar las funcionalidades de la extensión AGE. La extensión AGE proporciona funcionalidades avanzadas de base de datos de grafos directamente dentro de PostgreSQL. Esta configuración permite una integración sin problemas de las consultas de grafos en las aplicaciones, desbloqueando relaciones de datos eficaces e información. Con la extensión AGE habilitada y configurada, ya está listo para explorar todo el potencial de análisis de grafos en el entorno de PostgreSQL.
Tablas importantes en el esquema de ag_catalog
ag_graph
ag_label
ag_graph
La tabla ag_graph dentro del esquema ag_catalog de Apache AGE sirve como repositorio para metadatos relacionados con los gráficos creados en PostgreSQL a través de la ag_catalog.create_graph
función . En concreto, mantiene detalles como el nombre del grafo y el espacio de nombres asociado, que actúa como esquema en PostgreSQL. Este espacio de nombres organiza la estructura del grafo y contiene tablas para almacenar datos perimetrales y vértices.
\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 tabla ag_label almacena metadatos sobre las etiquetas usadas en gráficos AGE. Realiza un seguimiento de estas etiquetas, las asocia con sus respectivos gráficos y define si representan vértices o bordes. La entrada incluye el identificador único de la etiqueta, el gráfico asociado, los índices y la tabla de PostgreSQL subyacente que almacena los datos.
\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