Cos'è un database a grafo?

Definizione di database a grafo

I database a grafo sono progettati appositamente per l’archiviazione e la navigazione di relazioni. Le relazioni rivestono un ruolo chiave nei database a grafo e buona parte del valore di questi database deriva proprio dalla loro presenza. I database a grafo usano i nodi per archiviare le entità di dati e gli archi per archiviare le relazioni tra le entità. Un arco è definito da un nodo iniziale e da uno finale, dalla tipologia e dalla direzione e può descrivere una relazione genitore/figlio, azioni, la proprietà e il gradimento. Le relazioni che un nodo può avere sono illimitate.

Un grafo in un database a grafo può essere attraversato su tipi di archi specifici o sull'intero grafo. In un database a grafo, attraversare i collegamenti o le relazioni è veloce perché le relazioni tra i nodi non vengono elaborate al momento della query, ma sono già presenti nel database. I database a grafo presentano vantaggi rispetto ai database relazionali per i casi d'uso come social network, motori di raccomandazione e rilevamento di frodi, dove è necessario creare relazioni tra dati ed eseguire rapidamente query su di esse.

Il grafo che segue mostra un esempio di un grafo di un social network. Osservando le persone (nodi) e le loro relazioni (archi), è possibile scoprire chi sono “gli amici degli amici” di una specifica persona. Per esempio, gli amici degli amici di Howard. 

Esempio di grafo di un social network

Casi d'uso

Rilevamento di attività fraudolente

I database a grafo dispongono di sistemi sofisticati per prevenire le frodi. Grazie ai database a grafo, si possono utilizzare le relazioni per elaborare transazioni finanziarie e di acquisto praticamente in tempo reale. Eseguendo query rapide sul grafo, è possibile rilevare che, per esempio, un potenziale acquirente sta usando lo stesso indirizzo e-mail e la stessa carta di credito di un noto caso di frode. I database a grafo sono anche utili per il rilevamento di modelli di relazione, come la presenza di più persone associate a un unico indirizzo e-mail o più persone che condividono lo stesso indirizzo IP ma i cui indirizzi fisici sono diversi. 

Motori di raccomandazione

I database a grafo rappresentano un’ottima scelta per i motori di raccomandazione. Grazie ai database a grafo, è possibile archiviare le relazioni tra le categorie di informazioni come gli interessi dei clienti, degli amici e la cronologia degli acquisti. Utilizzare database a grafo ad alta disponibilità permette di consigliare prodotti a un utente basandosi su quali prodotti sono stati acquistati da altri clienti che seguono lo stesso sport e che hanno una cronologia degli acquisti simile. Oppure si possono identificare le persone che hanno un amico in comune ma non si conoscono ancora e consigliare di stringere amicizia. 

Database a grafo di successo

Amazon Neptune

Amazon Neptune è un motore di database a grafo dedicato ad alte prestazioni, ottimizzato per archiviare miliardi di relazioni ed eseguire query al grafo con una latenza di millisecondi. Neptune supporta i diffusi modelli di grafi Property Graph e Resource Description Framework (RDF) di W3C, con i relativi linguaggi di query Apache TinkerPop Gremlin e SPARQL, permettendo di creare in modo semplice query efficaci su insiemi di dati altamente connessi. 

Neptune è ad alta disponibilità, con repliche di lettura, ripristino point-in-time, backup continuo su Amazon S3 e replica nelle zone di disponibilità. Neptune è un sistema sicuro che supporta la crittografia dei dati inattivi. Neptune è una soluzione completamente gestita, pertanto non sarà necessario preoccuparsi di attività di gestione del database come provisioning dell'hardware, applicazioni di patch del software, impostazioni, configurazioni o backup.

Annuncio di Amazon Neptune in AWS re:Invent 2017

Neo4j

Neo4j è un database a grafo non relazionale nativo e open source che fornisce un back-end transazionale conforme con le proprietà ACID per le applicazioni. Neo4j è un database a grafo nativo perché implementa in modo efficace le proprietà dei grafici fino al livello dell’archiviazione. Neo4j presenta tutte le caratteristiche di un database, tra cui la conformità con le transazioni ACID, il supporto per i cluster e il failover quando necessario. Neo4j supporta il proprio linguaggio di query Cypher oltre a Gremlin.

Per iniziare a utilizzare Neo4j , visita AWS Marketplace