Un database a grafo è una raccolta sistematica di dati che enfatizza le relazioni tra le diverse entità di dati. Il database NoSQL utilizza la teoria matematica dei grafi per mostrare le connessioni dati. A differenza dei database relazionali, che archiviano i dati in strutture di tabelle rigide, i database a grafo archiviano i dati come una rete di entità e relazioni. Di conseguenza, questi database spesso offrono prestazioni e flessibilità migliori in quanto sono più adatti per la modellazione di scenari del mondo reale.

Cos'è un grafo

Il termine "grafo" deriva dal campo della matematica. Un grafo contiene una raccolta di nodi e bordi.

Nodi

I nodi sono vertici che memorizzano gli oggetti dati. Ogni nodo può avere un numero e tipi di relazioni illimitati.

Bordi

I bordi rappresentano le relazioni tra i nodi. Ad esempio, i bordi possono descrivere le relazioni, le azioni o la proprietà padre-figlio. Possono rappresentare sia relazioni uno a molti che molti a molti. Un bordo ha sempre un nodo iniziale, un nodo finale, un tipo e una direzione.

Proprietà

Ogni nodo ha proprietà o attributi che lo descrivono. In alcuni casi, anche i bordi hanno delle proprietà. I grafi con proprietà sono anche chiamati grafi delle proprietà.

Esempio di grafo

Il grafo delle proprietà 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

Quali sono i casi d'uso dei database a grafo

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.

Rilevamento di frodi

I database a grafo dispongono di sistemi sofisticati per prevenire le frodi. Ad esempio, è possibile utilizzare le relazioni nei database a grafo per elaborare transazioni finanziarie quasi 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 utili anche 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

Il modello grafo è una buona scelta per le applicazioni che forniscono raccomandazioni. È 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 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.

Ottimizzazione del routing

I problemi di ottimizzazione del routing implicano l'analisi di un set di dati e la ricerca dei valori più adatti a uno scenario particolare. Ad esempio, puoi utilizzare un database a grafo per trovare quanto segue:

  • Il percorso più breve dal punto A al punto B su una mappa considerando vari percorsi.
  • Il dipendente giusto per un particolare turno, analizzando diverse disponibilità, sedi e competenze.
  • Il macchinario ottimale per le operazioni considerando parametri come il costo e la durata delle apparecchiature.

Le query grafiche possono analizzare queste situazioni molto più velocemente perché possono contare e confrontare il numero di collegamenti tra due nodi.

Rilevamento del modello

I database a grafo sono ideali per individuare relazioni complesse e schemi nascosti nei dati. Ad esempio, un'azienda di social media utilizza un database a grafo per distinguere tra account bot e account reali. Analizza l'attività dell'account per scoprire le connessioni tra le interazioni dell'account e l'attività dei bot.

Gestione delle conoscenze

I database a grafo offrono tecniche per l'integrazione dei dati, i dati collegati e la condivisione delle informazioni. Rappresentano metadati o concetti di dominio complessi in un formato standardizzato e forniscono una semantica avanzata per l'elaborazione del linguaggio naturale. È inoltre possibile utilizzare questi database per i grafici della conoscenza e la gestione dei dati master. Ad esempio, gli algoritmi di machine learning distinguono tra la foresta pluviale amazzonica (Amazon) e il marchio Amazon utilizzando modelli grafici.

Quali sono i vantaggi dei database a grafo

Un database a grafo è progettato su misura per gestire dati altamente connessi. Con l'aumento della connessione e del volume dei dati moderni, i database a grafo offrono l'opportunità di utilizzare e analizzare i dati in modo conveniente. Ecco i tre vantaggi principali dell'analisi dei grafici.

Flessibilità

Lo schema e la struttura dei modelli grafici possono cambiare con le applicazioni. Gli analisti di dati possono aggiungere o modificare strutture grafiche esistenti senza influire sulle funzioni esistenti. Non è necessario modellare i domini in anticipo.

Prestazioni

I modelli di database relazionali diventano meno ottimali all'aumentare del volume e della profondità delle relazioni. Ciò si traduce in duplicazione e ridondanza dei dati: è necessario elaborare più tabelle per scoprire i risultati delle query. Al contrario, le prestazioni del database a grafo migliorano di diversi ordini di grandezza durante l'interrogazione delle relazioni. Le prestazioni rimangono costanti anche quando il volume dei dati del grafo aumenta.

Efficienza

Le query grafiche sono più brevi e più efficienti nel generare gli stessi report rispetto ai database relazionali. Le tecnologie grafiche sfruttano i nodi collegati. 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.

Come funzionano l'analisi dei grafici e i database a grafo

I database a grafo funzionano utilizzando un linguaggio di interrogazione standardizzato e algoritmi grafici.

Linguaggi di interrogazione grafica

I linguaggi di interrogazione grafica vengono utilizzati per interagire con un database a grafo. Simile a SQL, il linguaggio dispone di funzionalità per aggiungere, modificare e interrogare dati. Tuttavia, questi linguaggi sfruttano le strutture grafiche sottostanti per elaborare query complesse in modo efficiente. Forniscono un'interfaccia in modo da poter porre domande come:

  • Numero di salti tra i nodi
  • Percorso più lungo/Percorso più breve/Percorso ottimale
  • Valore dei nodi

Apache TinkerPop Gremlin, SPARQL e OpenCypher sono linguaggi di interrogazione grafica molto diffusi.

Algoritmi grafici

Gli algoritmi grafici sono operazioni che analizzano le relazioni e i comportamenti nei dati interconnessi. Ad esempio, esplorano la distanza e i percorsi tra i nodi o analizzano i bordi in entrata e i nodi adiacenti per generare report. Gli algoritmi possono identificare modelli, anomalie, community e percorsi comuni che collegano gli elementi di dati. Alcuni esempi di algoritmi grafici includono:

Clustering

Applicazioni come l'elaborazione di immagini, le statistiche e il data mining utilizzano il clustering per raggruppare i nodi in base a caratteristiche comuni. Il clustering può essere eseguito sia sulle differenze tra cluster che sulle somiglianze all'interno del cluster.

Partizionamento

È possibile partizionare o tagliare i grafici nel nodo con il minor numero di bordi. Applicazioni come i test di rete utilizzano il partizionamento per trovare punti deboli nella rete.

Le ricerche o le trasversalità grafiche possono essere di due tipi: breadth-first o depth-first. La ricerca breadth-first si sposta da un nodo all'altro del grafico. È utile per l'individuazione ottimale del percorso. La ricerca approfondita si sposta lungo un singolo ramo per trovare tutte le relazioni di un particolare nodo.

Quando i database a grafo non sono adatti

Un database a grafo dedicato offre il massimo valore per set di dati altamente connessi e per tutte le analisi che richiedono la ricerca di relazioni nascoste e apparenti. Se questo non si adatta al tuo caso d'uso, altri tipi di database potrebbero essere più adatti.

Ad esempio, immagina uno scenario in cui devi registrare l'inventario dei prodotti per articolo. Devi solo memorizzare dettagli come il nome dell'articolo e le unità disponibili. Poiché non è necessario conservare informazioni aggiuntive, le colonne della tabella non cambieranno. A causa della natura tabulare, un database relazionale è più adatto per tali dati non correlati.

È inoltre importante non utilizzare i database a grafo semplicemente come archivi chiave-valore. Un risultato di ricerca da una chiave nota non massimizza la funzione per cui i database a grafo sono stati creati.

In che modo AWS può supportare i requisiti inerenti ai database a grafo?

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 modelli a grafo più diffusi, come il grafo delle proprietà e il Resource Description Framework (RDF) del W3C. Supporta anche i rispettivi linguaggi di interrogazione, Apache TinkerPop Gremlin e SPARQL, per consentire di creare query che navigano in modo efficiente tra set di dati altamente connessi. Le caratteristiche principali di Neptune includono:

  • Serverless: consente di scalare istantaneamente i carichi di lavoro grafici con incrementi granulari e di risparmiare fino al 90% sui costi del database rispetto al provisioning per la capacità di picco.
  • Altamente disponibile, incluso Database globale Amazon Neptune per applicazioni distribuite a livello globale che supportano prestazioni di lettura locale veloci.
  • Archiviazione ed elaborazione disaccoppiate per aumentare le prestazioni di lettura con un massimo di 15 repliche di lettura che condividono lo stesso storage sottostante, senza dover eseguire scritture sui nodi di replica.
  • Altamente affidabile e durevole con storage con tolleranza ai guasti e riparazione automatica, ripristino point-in-time, backup continui e altro ancora. Amazon Neptune rende i tuoi dati durevoli su tre AZ all'interno di una regione replicando nuove scritture in sei modi e pagando solo una copia.
  • Altamente sicuro con crittografia predefinita a riposo, isolamento della rete e controllo avanzato, oltre alla possibilità di controllare le autorizzazioni a livello di risorsa con accesso granulare.
  • Ampia copertura di conformità che include FedRAMP (Moderate e High) a SOC (1, 2 e 3) ed è idoneo all'HIPAA.
  • Soluzione completamente gestita, pertanto non dovrai più preoccuparti di attività di gestione del database come provisioning dell'hardware, applicazioni di patch del software, impostazioni, configurazioni o backup.

Inizia a usare i database a grafo in AWS creando un account gratuito oggi stesso.

Introduzione ad Amazon Neptune
Inizia a usare Amazon Neptune serverless