Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Apache AGE (un'estensione di grafo) è una potente estensione PostgreSQL destinata a integrare senza soluzione di continuità le funzionalità del database a grafo nell'ecosistema PostgreSQL. AGE consente agli utenti di archiviare ed eseguire query sui dati del grafo in modo efficiente ed espressivo grazie al supporto del linguaggio di query intuitivo openCypher, sviluppato nel contesto del progetto Apache Incubator. Colma il divario tra dati relazionali e grafici, consentendo agli sviluppatori di gestire relazioni complesse e di individuare informazioni dettagliate che i database tradizionali potrebbero avere difficoltà a rivelare.
I dati del grafo, rappresentati tramite nodi (entità) e archi (relazioni), sono sempre più riconosciuti come essenziali per applicazioni come i social network, i sistemi di raccomandazione, il rilevamento delle frodi, l'analisi di rete e i grafici delle conoscenze. Apache AGE offre una soluzione affidabile per la gestione di tali dati interconnessi, consentendo analisi avanzate e una gestione semplificata dei dati.
Sblocco delle funzionalità dei dati del grafo con Apache AGE
Lo sblocco delle funzionalità dei dati del grafo con Apache AGE consente agli sviluppatori di sfruttare il potenziale completo dei dati interconnessi all'interno di PostgreSQL. Apache AGE consente un'esplorazione e un'analisi semplici di relazioni complesse integrando la funzionalità del database a grafo direttamente nel database relazionale. Questa funzionalità è utile per le applicazioni che richiedono informazioni approfondite sulle connessioni dati, ad esempio i social network, il rilevamento delle frodi e i sistemi di raccomandazione. Grazie al supporto per il linguaggio di query openCypher e la solida base PostgreSQL, Apache AGE offre una soluzione scalabile ed efficiente per la gestione e l'esecuzione di query sui dati del grafo.
Funzionalità principali di Apache AGE
- Integrazione dei dati dei grafi e relazionali: AGE consente un'interazione fluida tra i dati dei grafi e relazionali all'interno di PostgreSQL.
- openCypher Query Language: AGE supporta questo linguaggio di query ampiamente riconosciuto per i database a grafo, semplificando la scrittura e la manutenzione delle query.
- Scalabilità e affidabilità: nell'architettura collaudata di PostgreSQL, AGE eredita la scalabilità e l'affidabilità di livello aziendale.
Perché usare un database a grafo?
I database a grafo eccellono nel rappresentare ed eseguire query su relazioni complesse e altamente interconnesse. A differenza dei database relazionali, che richiedono più join o database di documenti non ottimizzati per l'attraversamento di relazioni profonde, i database a grafo modellano naturalmente le relazioni tra entità. Ad esempio, l'esecuzione di query su "amici di amici" o il "percorso più breve tra due punti" è più intuitivo ed efficiente in un database a grafo.
AGE usa il sistema transazionale conforme a ACID di PostgreSQL, garantendo affidabilità e atomicità per le query del grafo. Questa integrazione facilita applicazioni avanzate come Knowledge Graph, che supportano la generazione di dati e ricerche guidate dall'intelligenza artificiale strutturando fatti e concetti come nodi e le loro interconnessioni come archi.
I clienti di Azure possono abilitare l'estensione AGE
Database di Azure per PostgreSQL include Apache AGE come estensione.
Questi passaggi consentono di abilitare l'estensione nell'istanza del server flessibile:
Accedere ai parametri del server
Nel portale di Azure passare all'istanza del server flessibile PostgreSQL e selezionare l'opzione Parametri del server.
Modificare le impostazioni seguenti:
- azure.extensions: cercare e abilitare AGE tra le estensioni disponibili nel filtro dei parametri.
- shared_preload_libraries: cercare e abilitare AGE nel filtro dei parametri.
Selezionare Salva per applicare queste modifiche. Il server viene riavviato automaticamente per attivare l'estensione AGE.
Annotazioni
Impossibile abilitare il shared_preload_libraries
provoca il seguente errore quando si tenta di usare lo schema AGE in una query: "ERROR: unhandled cipher(cstring) function call error on first cipher query"
Abilitare AGE in PostgreSQL
Dopo il riavvio del server, connettersi all'istanza di PostgreSQL usando l'interprete psql. Eseguire il comando seguente per abilitare AGE:
CREATE EXTENSION IF NOT EXISTS AGE CASCADE;
Una volta completato con successo, vedi CREATE EXTENSION
come l'output della query.
È anche possibile eseguire una query sulla tabella del catalogo pg_extension per verificare che AGE sia stato abilitato e controllare la versione dell'estensione.
SELECT * FROM pg_extension WHERE extname = 'age';
Configurare i percorsi dello schema
AGE aggiunge uno schema denominato ag_catalog
, essenziale per la gestione dei dati del grafo. Verificare che questo schema sia incluso nel percorso di ricerca eseguendo:
SET search_path=ag_catalog,"$user",public;
Per Python, è possibile impostare il percorso dello schema eseguendo:
import psycopg as pg
with pg.Connection.connect(con_str + " options='-c search_path=ag_catalog,\"$user\",public'") as con:
Può anche essere configurato a livello di codice nell'applicazione.
Seguendo questa procedura, assicurarsi che l'istanza di PostgreSQL sia configurata correttamente per l'uso delle funzionalità dell'estensione AGE. L'estensione AGE offre funzionalità avanzate di database a grafo direttamente all'interno di PostgreSQL. Questa configurazione consente di integrare facilmente le query di gragrafi nelle applicazioni, sbloccare potenti relazioni tra dati e informazioni dettagliate. Con l'estensione AGE abilitata e configurata, è ora possibile esplorare il potenziale completo dell'analisi dei gragrafi all'interno dell'ambiente PostgreSQL.
Tabelle importanti nello schema ag_catalog
ag_graph
ag_label
ag_graph
La tabella ag_graph all'interno dello schema ag_catalog di Apache AGE funge da repository per i metadati correlati ai grafici creati in PostgreSQL tramite la ag_catalog.create_graph
funzione . In particolare, gestisce dettagli come il nome del grafo e lo spazio dei nomi associato, che funge da schema in PostgreSQL. Questo spazio dei nomi organizza la struttura del grafo e contiene tabelle per l'archiviazione dei dati dei vertici e dei bordi.
\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 tabella ag_label archivia i metadati sulle etichette usate nei grafici AGE. Tiene traccia di queste etichette, associandole ai rispettivi grafici e definendo se rappresentano vertici o archi. La voce include l'ID univoco dell'etichetta, il grafico associato, tutti gli indici e la tabella PostgreSQL sottostante che archivia i dati.
\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