I database a grafo sono progettati appositamente per lo storage e la navigazione di relazioni. Presentano vantaggi rispetto ai database relazionali per i casi d’uso come social network, motori di raccomandazioni e rilevamento di frodi, dove è necessario creare molte relazioni tra dati ed eseguire rapidamente query su di esse.

La creazione di questi tipi di applicazioni utilizzando un database relazionale prevede alcune difficoltà:

  • sono necessarie più tabelle con varie chiavi correlate (foreign keys);
  • le query SQL per la navigazione in questi dati richiederebbero strutture annidate e join complesse che diventano scomode e inefficienti con il crescere della quantità dei dati nel corso del tempo.

Per queste ragioni i database a grafo (graph db o graph dbms) stanno avendo un enorme successo con tassi di crescita a tre cifre:

Casi d’uso

I casi d’uso per i database a grafo sono innumerevoli ecco i principali:

Social network

Un database a grafo è in grado di elaborare in modo rapido e semplice moltissimi profili e interazioni degli utenti per costruire applicazioni di social network. Linguaggi di interrogazione appositamente studiati e standard come SPARQL, consentono query al grafo altamente interattive con un elevato throughput per portare le caratteristiche social nelle tue applicazioni. Ad esempio, se stai costruendo un feed social nella tua applicazione, puoi utilizzare queri sul database a grafo per fornire risultati che assegnino priorità, mostrando ai tuoi utenti gli ultimi aggiornamenti dei loro familiari, amici ai cui aggiornamenti mettono “mi piace” e amici che vivono vicino a loro.

Motori di raccomandazione

Un database a grafo permette di memorizzare le relazioni tra le informazioni quali interessi, amici e cronologia di acquisto dei clienti in un grafo e di eseguire rapidamente query per creare raccomandazioni personalizzate e pertinenti. Ad esempio, puoi utilizzare un database a grafo per creare raccomandazioni di prodotti a un utente sulla base dei prodotti acquistati da altri che seguono lo stesso sport e hanno una cronologia di acquisto simile. Oppure puoi identificare le persone che hanno un amico in comune ma non si conoscono ancora e fare raccomandazioni di amicizia.

Rilevamento di attività fraudolente (fraud detection)

Puoi utilizzare le relazioni per elaborare transazioni finanziarie e di acquisto praticamente in tempo reale, per rilevare con facilità gli schemi di attività fraudolente. Un database a grafo è possibile eseguire rapide query al grafo per rilevare che un potenziale acquirente utilizza lo stesso indirizzo e-mail e carta di credito di un noto caso di frode. Se stai creando un’applicazione di rilevamento di attività fraudolente nel settore retail, puoi costruire query al grafo per rilevare con facilità gli schemi di relazioni come più persone associate a un indirizzo e-mail personale o più persone che condividono lo stesso indirizzo IP ma risiedono a indirizzi fisici differenti.

Grafi della conoscenza (knowledge graph)

Le applicazioni di grafi della conoscenza sono tra le più importanti aplicazioni oggi esistenti.

Un grafo della conoscenza ti aiuta ad archiviare informazioni in un modello a grafo e utilizzare query al grafo per consentire ai tuoi utenti di attraversare con facilità dataset altamente connessi.

I grafi della conoscenza sono spesso alla base delle smart dat management platform e ai serach engine semantici di nuova generazione, come Google o Watson di IBM.

Ad esempio, se un utente è interessato alla Gioconda, puoi aiutarlo a scoprire anche altre opere d’arte di Leonardo da Vinci, oppure altre opere d’arte situate al Louvre. Utilizzando un grafo della conoscenza, puoi aggiungere informazioni topiche a cataloghi di prodotti, costruire ed eseguire query di modelli complessi di regole normative o modelli di informazioni generali, come Wikidata.

Applicazioni scientifiche

Un database a grafo ti aiuta a creare applicazioni che archiviano e attraversano informazioni del settore scientifico.

Ad esempio, per archiviare modelli di interazioni tra malattie e geni e cercare schemi di grafi all’interno dei percorsi delle proteine per individuare altri geni che possano essere associati a una malattia.

Puoi creare modelli di composti chimici come grafi ed eseguire query di schemi nelle strutture molecolari. Inoltre, aiuta a integrare le informazioni per affrontare le sfide della ricerca in campo sanitario e scientifico. È possibile utilizzare un database a grafo per creare e memorizzare dati su diversi sistemi e organizzare in modo topico le pubblicazioni di ricerca per individuare rapidamente informazioni pertinenti.

IT operations e network security

Puoi utilizzare un database a grafo per archiviare la topologia della tua rete e utilizzare query al grafo per rispondere a domande come quanti host eseguono una specifica applicazione.

Un database a grafo è in grado di archiviare ed elaborare miliardi di eventi per gestire e proteggere la tua rete. Se rilevi un evento anomalo, il database a grafo per comprendere rapidamente come può influire sulla tua rete, eseguendo query per uno schema a grafo utilizzando gli attributi dell’evento. Puoi eseguire query per individuare altri host o dispositivi potenzialmente compromessi. Ad esempio, se rilevi un file maligno su un host, il database a grafoo può aiutarti a individuare i collegamenti tra gli host che diffondono il file maligno e consentirti di tracciarlo fino all’host originario che lo ha scaricato.

Consigli utili per selezionare un database a grafo

Esistono molti fornitori di database a grafo. Il primo punto da verificare è che supportino pienamente gli standard, in particolare qelli promossi dal W3C nell’ambito della architettura del web. Stiamo parlando di specifice come RDF, SPARQL 1.1. Alcuni produttori implementano i loro linguaggi di query, legando a doppia mandata gli utenti ai loro prodotti. A meno di non avere particolari esigenze conviene preferire chi supporta gli standard.

E’ frequente che i produttori estendano gli standard con funzioni proprietarie. Anche in questo caso, se l’utilizzo delle estensioni è essenziale, conviene valutare di incapsulare le query che ne fanno uso, in modo da rendere la manutenzione del codice semplice.

Tra i database a grafo che supportano pienamente le specifiche del W3C segnaliamo:

  • AWS Neptune, disponibile in modalità “as a Service” ma che presenta qualche limitazione in SPARQL Update
  • Blazegraph, disponibile gratuitamente , usato da wikidata.
  • openlink Virtuoso, uno dei primi, molto diffuso anche se forse un po’ datato. Con molte funzioni aggiuntive. Disponibile gratuitamente
  • Ontotext
  • Stardog, usato da NASA e altri grandi enti ma molto costoso

OK, ho un database a grafo. E ora?

Prima di poter usare un database è necessario popolarlo con i dati. Questa operazione è quella più complessa perche richiede di assegnare ai dati un significato formale.

Fortunatamente anche in questo caso esistono piattaforme come SDaaS che aiutano a importare dati dalle sorgenti più comuni, permettendo di riutilizzare linguaggi, strumenti e dati già disponibili su web.