Una database a grafo è un tipo speciale di database che memorizza i dati sotto forma di nodi e bordi. Questo approccio consente una modellazione e interrogazione efficiente di relazioni complesse. I database a grafo sono quindi particolarmente adatti per applicazioni che rappresentano informazioni fortemente interconnesse.

Da cosa è costituito un database a grafo e a cosa serve?

Un database a grafo (in inglese “graph database”), come già svela il nome, è rappresentato con grafici. Con essi, le complesse informazioni di rete e le relative relazioni sono visualizzate chiaramente e memorizzate come un insieme di dati ampio e coerente.

I grafici sono composti da nodi, entità di dati o oggetti identificati e identificabili in modo univoco, e dai bordi, denominati anche “edges”. Questi ultimi rappresentano le relazioni di questi oggetti tra loro. Entrambi i componenti sono rappresentati visivamente come punti e linee. I bordi presentano rispettivamente un punto di partenza e uno di arrivo, mentre ogni nodo mostra sempre un certo numero di relazioni, in entrata, in uscita o non orientate, con altri nodi.

I database a grafo vengono utilizzati, ad esempio, per l’analisi delle relazioni tra gli utenti nei social network o del comportamento d’acquisto della clientela nei negozi online. Il salvataggio delle relazioni permette di fare raccomandazioni di prodotti e amicizie e costruire reti individuali di persone e prodotti.

N.B.

I database relazionali memorizzano dati in tabelle e utilizzano il linguaggio SQL per le interrogazioni. Al contrario, i database a grafo appartengono alla famiglia NoSQL e offrono una struttura più flessibile per la gestione efficiente di relazioni complesse tra dati.

Esempi di database a grafo

Ci sono diversi concetti che descrivono la struttura di questi database a grafo. I più conosciuti sono il labeled-property graph e il Resource Description Framework (RDF).

Labeled-property graph (grafo con proprietà etichettate)

In un labeled-property graph (LPG) vengono assegnati a ciascun nodo e a ciascun bordo del grafo determinate proprietà, chiamate “properties”, ed etichette. Queste memorizzano informazioni specifiche sulle entità o sulle relazioni. Le etichette servono alla categorizzazione, così che, ad esempio, un nodo possa essere contrassegnato come “persona” o “azienda”, mentre le proprietà possono contenere attributi aggiuntivi come nome, età o coordinate geografiche.

Questa struttura consente una query di dati molto flessibile e potente, poiché le relazioni e le proprietà sono memorizzate direttamente nel database e possono essere recuperate tramite semplici interrogazioni. Gli LPG sono particolarmente adatti per modellare reti complesse, in cui le entità e le loro connessioni sono descritte nei diversi contesti.

Resource Description Framework

Nel Resource Description Framework (RDF), le informazioni sono organizzate in triplette, costituite da soggetto, predicato e oggetto, offrendo così una struttura semplice per rappresentare le relazioni tra entità. Ogni tripletta rappresenta un’affermazione, in cui il soggetto designa la risorsa, il predicato descrive la proprietà o la relazione, e l’oggetto rappresenta il valore o un’altra risorsa.

Con RDF, i dati possono essere collegati in modo standardizzato, permettendo di combinarli e recuperarli attraverso diversi sistemi. Questa flessibilità risulta particolarmente utile per applicazioni che dipendono dalla connessione di dati provenienti da fonti diverse, come nei knowledge graph.

Come funzionano le query in un database a grafo?

Nell’applicazione di un database a grafo vengono utilizzate query completamente diverse. Ciò è dovuto soprattutto al fatto che non esiste un linguaggio uniforme di interrogazione. A differenza dei modelli tradizionali, questi tipi di database si basano inoltre su speciali algoritmi per svolgere la loro funzione essenziale: semplificare e snellire complesse query di dati.

Tra i più importanti algoritmi figurano la ricerca in profondità e la ricerca in ampiezza: nella ricerca in profondità si ispeziona di volta in volta il nodo del livello inferiore, mentre la ricerca in ampiezza procede livello per livello. Gli algoritmi consentono di trovare modelli (graph patterns) e nodi limitrofi diretti e indiretti. Altri algoritmi permettono di calcolare il percorso più breve tra due nodi e di identificare cricche (sottoinsieme di nodi) e hotspot (informazioni altamente interconnesse). Uno dei punti di forza del database a grafo consiste nel fatto che le relazioni sono memorizzate nel database stesso e non devono pertanto essere calcolate prima con la query. Ne risulta una velocità di elevata performance anche in query complesse.

Vantaggi e svantaggi del database a grafo

La potenza di un database può essere misurata principalmente sulla base di quattro fattori: integrità, performance, efficienza e scalabilità. La query di dati dovrebbe essere più veloce e più semplice: così può essere sintetizzato approssimativamente lo scopo principale dei database a grafo. Laddove, ad esempio, i database relazionali raggiungono i loro limiti di prestazioni, il modello basato sui grafici funziona in modo molto agile. Infatti, complessità e quantità dei dati non influiscono negativamente sul processo di query in questo modello.

Inoltre, con il modello del database a grafo è possibile memorizzare fatti reali in modo naturale. La struttura utilizzata è molto simile al pensiero umano e pertanto rende i collegamenti particolarmente vividi. Tuttavia, anche i database a grafo non sono soluzioni olistiche. Raggiungono per esempio i loro limiti col tema scalabilità. Essendo progettati soprattutto per un’architettura a server singolo, la crescita rappresenta una sfida (matematica). Inoltre, non esiste ancora un linguaggio di query uniforme.

Di seguito i vantaggi e gli svantaggi dei database a grafo in sintesi:

Vantaggi Svantaggi
La velocità della query dipende solo dal numero di relazioni concrete e non dalla quantità di dati Scarsa scalabilità, in quanto progettati per un’architettura a server singolo
Risultati in tempo reale
Presentazione chiara e comprensibile delle relazioni
Strutture flessibili e agili

Fondamentalmente i database a grafo non dovrebbero essere considerati un sostituto assoluto e migliore dei database tradizionali. Quindi le strutture relazionali continuano a essere utili modelli standard, che garantiscono un’elevata integrità e stabilità dei dati e consentono una scalabilità flessibile.

I database a grafo a confronto

Esistono diversi database a grafo, adatti a vari scenari di utilizzo. Di seguito ti elenchiamo i quattro modelli più popolari:

  • Neo4j: Neo4j è il database a grafo più popolare ed è progettato come modello open source.
  • Amazon Neptune: questo database a grafo è disponibile attraverso il cloud pubblico di Amazon Web Services ed è stato rilasciato nel 2018 come database ad alte prestazioni.
  • SAP Hana Graph: con SAP Hana lo sviluppatore SAP ha creato una piattaforma, che si basa su un sistema di gestione di database relazionali ed è completata dal modello SAP Hana Graph integrato e orientato ai grafici.
  • OrientDB: questo database combina approcci orientati ai documenti e ai grafici ed è considerato uno dei modelli più veloci attualmente disponibili.

Nel confronto diretto emerge che i database offrono varie funzionalità che possono risultare utili a seconda del caso d’uso individuale:

Neo4j Amazon Neptune SAP HANA Graph OrientDB
Tipo Nativo Gestito (cloud) Estensione a grafo Multimodello
Linguaggi di interrogazione Cypher SPARQL, Gremlin, OpenCypher Basato su SQL Simile a SQL, Gremlin
Modello di dati Property Graph Property Graph, RDF Relazionale, modello a grafo Grafo, Documenti
Scenari tipici di utilizzo Social network, rilevamento frodi, servizi di raccomandazione, gestione delle reti Knowledge graph, gestione delle identità e degli accessi, app native per il cloud Business analytics, IoT, analisi finanziaria, applicazioni SAP Gestione dei contenuti, relazioni di dati complesse, sistemi distribuiti
Hai trovato questo articolo utile?
Vai al menu principale