Una database a grafo è un tipo speciale di database che memorizza i dati sotto forma di nodi e bordi. Questo approccio consente una mo­del­la­zio­ne e in­ter­ro­ga­zio­ne ef­fi­cien­te di relazioni complesse. I database a grafo sono quindi par­ti­co­lar­men­te adatti per ap­pli­ca­zio­ni che rap­pre­sen­ta­no in­for­ma­zio­ni for­te­men­te in­ter­con­nes­se.

Da cosa è co­sti­tui­to un database a grafo e a cosa serve?

Un database a grafo (in inglese “graph database”), come già svela il nome, è rap­pre­sen­ta­to con grafici. Con essi, le complesse in­for­ma­zio­ni di rete e le relative relazioni sono vi­sua­liz­za­te chia­ra­men­te e me­mo­riz­za­te come un insieme di dati ampio e coerente.

I grafici sono composti da nodi, entità di dati o oggetti iden­ti­fi­ca­ti e iden­ti­fi­ca­bi­li in modo univoco, e dai bordi, de­no­mi­na­ti anche “edges”. Questi ultimi rap­pre­sen­ta­no le relazioni di questi oggetti tra loro. Entrambi i com­po­nen­ti sono rap­pre­sen­ta­ti vi­si­va­men­te come punti e linee. I bordi pre­sen­ta­no ri­spet­ti­va­men­te 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 uti­liz­za­ti, ad esempio, per l’analisi delle relazioni tra gli utenti nei social network o del com­por­ta­men­to d’acquisto della clientela nei negozi online. Il sal­va­tag­gio delle relazioni permette di fare rac­co­man­da­zio­ni di prodotti e amicizie e costruire reti in­di­vi­dua­li di persone e prodotti.

N.B.

I database re­la­zio­na­li me­mo­riz­za­no dati in tabelle e uti­liz­za­no il lin­guag­gio SQL per le in­ter­ro­ga­zio­ni. Al contrario, i database a grafo ap­par­ten­go­no alla famiglia NoSQL e offrono una struttura più fles­si­bi­le per la gestione ef­fi­cien­te di relazioni complesse tra dati.

Esempi di database a grafo

Ci sono diversi concetti che de­scri­vo­no la struttura di questi database a grafo. I più co­no­sciu­ti sono il labeled-property graph e il Resource De­scrip­tion Framework (RDF).

Labeled-property graph (grafo con proprietà eti­chet­ta­te)

In un labeled-property graph (LPG) vengono assegnati a ciascun nodo e a ciascun bordo del grafo de­ter­mi­na­te proprietà, chiamate “pro­per­ties”, ed etichette. Queste me­mo­riz­za­no in­for­ma­zio­ni spe­ci­fi­che sulle entità o sulle relazioni. Le etichette servono alla ca­te­go­riz­za­zio­ne, così che, ad esempio, un nodo possa essere con­tras­se­gna­to come “persona” o “azienda”, mentre le proprietà possono contenere attributi ag­giun­ti­vi come nome, età o coor­di­na­te geo­gra­fi­che.

Questa struttura consente una query di dati molto fles­si­bi­le e potente, poiché le relazioni e le proprietà sono me­mo­riz­za­te di­ret­ta­men­te nel database e possono essere re­cu­pe­ra­te tramite semplici in­ter­ro­ga­zio­ni. Gli LPG sono par­ti­co­lar­men­te adatti per modellare reti complesse, in cui le entità e le loro con­nes­sio­ni sono descritte nei diversi contesti.

Resource De­scrip­tion Framework

Nel Resource De­scrip­tion Framework (RDF), le in­for­ma­zio­ni sono or­ga­niz­za­te in triplette, co­sti­tui­te da soggetto, predicato e oggetto, offrendo così una struttura semplice per rap­pre­sen­ta­re le relazioni tra entità. Ogni tripletta rap­pre­sen­ta un’af­fer­ma­zio­ne, in cui il soggetto designa la risorsa, il predicato descrive la proprietà o la relazione, e l’oggetto rap­pre­sen­ta il valore o un’altra risorsa.

Con RDF, i dati possono essere collegati in modo stan­dar­diz­za­to, per­met­ten­do di com­bi­nar­li e re­cu­pe­rar­li at­tra­ver­so diversi sistemi. Questa fles­si­bi­li­tà risulta par­ti­co­lar­men­te utile per ap­pli­ca­zio­ni che dipendono dalla con­nes­sio­ne di dati pro­ve­nien­ti da fonti diverse, come nei knowledge graph.

Come fun­zio­na­no le query in un database a grafo?

Nell’ap­pli­ca­zio­ne di un database a grafo vengono uti­liz­za­te query com­ple­ta­men­te diverse. Ciò è dovuto so­prat­tut­to al fatto che non esiste un lin­guag­gio uniforme di in­ter­ro­ga­zio­ne. A dif­fe­ren­za dei modelli tra­di­zio­na­li, questi tipi di database si basano inoltre su speciali algoritmi per svolgere la loro funzione es­sen­zia­le: sem­pli­fi­ca­re e snellire complesse query di dati.

Tra i più im­por­tan­ti algoritmi figurano la ricerca in pro­fon­di­tà e la ricerca in ampiezza: nella ricerca in pro­fon­di­tà si ispeziona di volta in volta il nodo del livello inferiore, mentre la ricerca in ampiezza procede livello per livello. Gli algoritmi con­sen­to­no di trovare modelli (graph patterns) e nodi limitrofi diretti e indiretti. Altri algoritmi per­met­to­no di calcolare il percorso più breve tra due nodi e di iden­ti­fi­ca­re cricche (sot­toin­sie­me di nodi) e hotspot (in­for­ma­zio­ni altamente in­ter­con­nes­se). Uno dei punti di forza del database a grafo consiste nel fatto che le relazioni sono me­mo­riz­za­te nel database stesso e non devono pertanto essere calcolate prima con la query. Ne risulta una velocità di elevata per­for­man­ce anche in query complesse.

Vantaggi e svantaggi del database a grafo

La potenza di un database può essere misurata prin­ci­pal­men­te sulla base di quattro fattori: integrità, per­for­man­ce, ef­fi­cien­za e sca­la­bi­li­tà. La query di dati dovrebbe essere più veloce e più semplice: così può essere sin­te­tiz­za­to ap­pros­si­ma­ti­va­men­te lo scopo prin­ci­pa­le dei database a grafo. Laddove, ad esempio, i database re­la­zio­na­li rag­giun­go­no i loro limiti di pre­sta­zio­ni, il modello basato sui grafici funziona in modo molto agile. Infatti, com­ples­si­tà e quantità dei dati non in­flui­sco­no ne­ga­ti­va­men­te sul processo di query in questo modello.

Inoltre, con il modello del database a grafo è possibile me­mo­riz­za­re fatti reali in modo naturale. La struttura uti­liz­za­ta è molto simile al pensiero umano e pertanto rende i col­le­ga­men­ti par­ti­co­lar­men­te vividi. Tuttavia, anche i database a grafo non sono soluzioni olistiche. Rag­giun­go­no per esempio i loro limiti col tema sca­la­bi­li­tà. Essendo pro­get­ta­ti so­prat­tut­to per un’ar­chi­tet­tu­ra a server singolo, la crescita rap­pre­sen­ta una sfida (ma­te­ma­ti­ca). Inoltre, non esiste ancora un lin­guag­gio 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 sca­la­bi­li­tà, in quanto pro­get­ta­ti per un’ar­chi­tet­tu­ra a server singolo
Risultati in tempo reale
Pre­sen­ta­zio­ne chiara e com­pren­si­bi­le delle relazioni
Strutture fles­si­bi­li e agili

Fon­da­men­tal­men­te i database a grafo non do­vreb­be­ro essere con­si­de­ra­ti un sostituto assoluto e migliore dei database tra­di­zio­na­li. Quindi le strutture re­la­zio­na­li con­ti­nua­no a essere utili modelli standard, che ga­ran­ti­sco­no un’elevata integrità e stabilità dei dati e con­sen­to­no una sca­la­bi­li­tà fles­si­bi­le.

I database a grafo a confronto

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

  • Neo4j: Neo4j è il database a grafo più popolare ed è pro­get­ta­to come modello open source.
  • Amazon Neptune: questo database a grafo è di­spo­ni­bi­le at­tra­ver­so il cloud pubblico di Amazon Web Services ed è stato ri­la­scia­to nel 2018 come database ad alte pre­sta­zio­ni.
  • SAP Hana Graph: con SAP Hana lo svi­lup­pa­to­re SAP ha creato una piat­ta­for­ma, che si basa su un sistema di gestione di database re­la­zio­na­li ed è com­ple­ta­ta dal modello SAP Hana Graph integrato e orientato ai grafici.
  • OrientDB: questo database combina approcci orientati ai documenti e ai grafici ed è con­si­de­ra­to uno dei modelli più veloci at­tual­men­te di­spo­ni­bi­li.

Nel confronto diretto emerge che i database offrono varie fun­zio­na­li­tà che possono risultare utili a seconda del caso d’uso in­di­vi­dua­le:

Neo4j Amazon Neptune SAP HANA Graph OrientDB
Tipo Nativo Gestito (cloud) Esten­sio­ne a grafo Mul­ti­mo­del­lo
Linguaggi di in­ter­ro­ga­zio­ne Cypher SPARQL, Gremlin, Open­Cy­pher Basato su SQL Simile a SQL, Gremlin
Modello di dati Property Graph Property Graph, RDF Re­la­zio­na­le, modello a grafo Grafo, Documenti
Scenari tipici di utilizzo Social network, ri­le­va­men­to frodi, servizi di rac­co­man­da­zio­ne, gestione delle reti Knowledge graph, gestione delle identità e degli accessi, app native per il cloud Business analytics, IoT, analisi fi­nan­zia­ria, ap­pli­ca­zio­ni SAP Gestione dei contenuti, relazioni di dati complesse, sistemi di­stri­bui­ti
Vai al menu prin­ci­pa­le