Nozioni di base su Amazon Neptune - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nozioni di base su Amazon Neptune

Amazon Neptune è un servizio di database a grafo completamente gestito e scalabile per gestire miliardi di relazioni e consente di eseguire query su di esse con una latenza di millisecondi, a un costo contenuto per tale tipo di capacità.

Per informazioni più dettagliate su Neptune, consulta Panoramica delle funzionalità di Amazon Neptune.

Se hai già familiarità con i grafi, passa a Usare Neptune con quaderni a grafi. Oppure, se desideri creare subito un database Neptune, consulta Creazione di un cluster Amazon Neptune utilizzando AWS CloudFormation.

In caso contrario, puoi approfondire i concetti relativi ai database a grafo prima di iniziare.

Concetti chiave del database grafico

I database a grafo sono ottimizzati per archiviare le relazioni tra gli elementi di dati ed eseguire query su di esse.

Archiviano gli elementi di dati stessi come vertici del grafo e le relazioni tra di essi come archi. Ogni arco è di un tipo specifico ed è diretto da un vertice (l'inizio) all'altro (la fine). Le relazioni possono essere denominate predicati oltre che archi e i vertici vengono talvolta chiamati anche nodi. Nei cosiddetti grafi di proprietà, sia ai vertici che agli archi possono essere associate anche proprietà aggiuntive.

Ecco un piccolo grafo che rappresenta amici e hobby in un social network:

Diagramma che illustra le relazioni tra persone e hobby in un social network.

Gli archi sono rappresentati da frecce denominate e i vertici rappresentano persone e hobby specifici a cui si connettono.

Un semplice attraversamento di questo grafo ti consente di conoscere quali sono le cose che gli amici di Justin amano.

Perché usare un database a grafo?

Un database a grafo è la scelta migliore nei casi in cui le connessioni o relazioni tra entità sono al centro dei dati che si vogliono modellare.

Innanzitutto, modellare le interconnessioni di dati sotto forma di grafo e quindi scrivere query complesse che estraggono informazioni reali dal grafo è facile.

La creazione di un'applicazione equivalente utilizzando un database relazionale richiede la creazione di molte tabelle con più chiavi esterne e quindi la scrittura di SQL query annidate e join complessi. Questo approccio non solo diventa rapidamente macchinoso dal punto di vista della scrittura del codice, ma le sue prestazioni peggiorano velocemente con l'aumentare della quantità di dati.

Al contrario, un database a grafo come Neptune può eseguire query sulle relazioni tra miliardi di vertici senza rimanere bloccato.

Cosa è possibile fare con un database a grafo?

I grafi possono rappresentare le interrelazioni tra le entità del mondo reale in molti modi, in termini di azioni, proprietà, parentela, scelte di acquisto, legami personali, legami familiari e così via.

Ecco alcune delle aree più comuni in cui vengono utilizzati i database a grafo:

  • Grafi della conoscenza: i grafi della conoscenza consentono di organizzare tutti i tipi di informazioni connesse ed eseguire query su di esse per rispondere a domande generali. Utilizzando un grafo della conoscenza, puoi aggiungere informazioni tematiche a cataloghi di prodotti e modellare informazioni eterogenee come quelle contenute in Wikidata.

    Per saperne di più su come funzionano i grafi della conoscenza e su dove vengono utilizzati, consulta Grafi della conoscenza in AWS.

  • Grafi di identità: in un database a grafo, puoi archiviare le relazioni tra categorie di informazioni, come interessi dei clienti, amici e cronologia degli acquisti, e quindi eseguire query su tali dati per formulare raccomandazioni personalizzate e pertinenti.

    Ad esempio, puoi utilizzare un database a grafo per raccomandare a un utente prodotti da acquistare in base ai 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 suggerire amicizie.

    I grafi di questo tipo sono noti come grafi di identità e sono ampiamente utilizzati per personalizzare le interazioni con gli utenti. Per saperne di più, consulta Grafi di identità in AWS. Per creare il tuo grafo di identità, puoi iniziare con l'esempio Identity Graph Using Amazon Neptune.

  • Grafi di rilevamento delle frodi: si tratta di un utilizzo comune per i database a grafo. Possono aiutarti a monitorare gli acquisti con carta di credito e le località di acquisto per individuare utilizzi insoliti o per rilevare che un acquirente sta tentando di utilizzare lo stesso indirizzo e-mail e la stessa carta di credito usati in un caso di frode noto. Ti permettono inoltre di verificare se esistono sono più persone associate a un indirizzo e-mail personale o più persone in luoghi fisici diversi che condividono lo stesso indirizzo IP.

    Considera il grafo seguente. Il grafo seguente mostra le relazioni tra tre persone e le informazioni relative alla loro identità. Ogni persona dispone di un indirizzo, un conto corrente e un social security number. Tuttavia, si può notare che Matt e Justin condividono lo stesso codice SSN, fatto irregolare che indica una possibile frode da parte di uno di essi. Una query su un grafo di rilevamento delle frodi può rivelare connessioni di questo tipo affinché possano essere esaminate.

    Diagramma che illustra le relazioni tra persone e informazioni personali.

    Per saperne di più su come funzionano i grafi di rilevamento di attività fraudolente e su dove vengono utilizzati, consulta Fraud Graphs on AWS.

  • Social network: le applicazioni di social network costituiscono una delle aree principali e più comuni in cui vengono utilizzati i database a grafo.

    Supponiamo, ad esempio, che tu voglia creare un social feed in un sito Web. Puoi utilizzare facilmente un database a grafo sul back-end per fornire agli utenti risultati che riflettano gli ultimi aggiornamenti relativi a familiari, amici, persone con aggiornamenti a cui si è risposto con "Mi piace" e persone che vivono nelle vicinanze.

  • Indicazioni stradali: un grafo può aiutare a individuare il percorso migliore da un punto di partenza a una destinazione, in base al traffico attuale e ai modelli di traffico tipici.

  • Logistica: i grafi consentono di identificare il modo più efficiente di utilizzare le risorse di spedizione e distribuzione disponibili per soddisfare le esigenze dei clienti.

  • Diagnostica: i grafi possono rappresentare alberi diagnostici complessi su cui si possono eseguire query per identificare l'origine dei problemi e degli errori osservati.

  • Ricerca scientifica: con un database a grafo, è possibile creare applicazioni per archiviare ed esplorare i dati scientifici e persino le informazioni mediche sensibili utilizzando la crittografia dei dati inattivi. È ad esempio possibile archiviare i modelli di interazioni tra geni e patologie. È possibile cercare modelli di grafo all’interno di percorsi di proteine per trovare altri geni che potrebbero essere associati a una patologia. Puoi modellare composti chimici come grafi ed eseguire query per individuare modelli nelle strutture molecolari. È possibile correlare i dati dei pazienti contenuti nelle cartelle cliniche in sistemi diversi. Puoi organizzare in modo topico le pubblicazioni delle ricerche per trovare informazioni rilevanti in modo rapido.

  • Regole normative: è possibile archiviare requisiti normativi complessi sotto forma di grafici e interrogarli per rilevare situazioni in cui potrebbero applicarsi alle operazioni aziendali. day-to-day

  • Topologia ed eventi di rete: un database a grafo può aiutarti a gestire e proteggere una rete IT. Quando si archivia la topologia di rete come grafo, è anche possibile archiviare ed elaborare molti tipi diversi di eventi sulla rete. È possibile rispondere a varie domande, ad esempio quanti host eseguono un'applicazione specifica. È possibile eseguire query sui modelli che potrebbero dimostrare che un determinato host è stato compromesso da un programma dannoso e cercare i dati delle connessioni per risalire all'host originale che ha scaricato il programma.

Come si eseguono le query su un grafo?

Neptune supporta tre linguaggi di query speciali progettati per l'esecuzione di query sui dati dei grafi di tipi diversi. È possibile utilizzare questi linguaggi per aggiungere, modificare, eliminare ed eseguire query sui dati in un database a grafo Neptune:

Esempi di abbinamento tra Gremlin e interrogazioni SPARQL

Considerati i seguenti grafi di persone (nodi) e le relative relazioni (archi), puoi scoprire che "gli amici di amici" di una persona specifica sono, ad esempio, amici di amici di Howard.

Diagramma che illustra le relazioni tra persone, tra cui le loro amicizie.

Guardando il grafico, è possibile verificare che Howard ha un amico, Jack e Jack ha quattro amici: Annie, Harry, Doug e Mac. Questo è un esempio semplice con un grafo semplice, ma questi tipi di query possono scalare in termini di complessità, set di dati e dimensione dei risultati.

Di seguito è riportata una query di attraversamento Gremlin che restituisce i nomi degli amici degli amici di Howard.

g.V().has('name', 'Howard').out('friend').out('friend').values('name')

Ecco una SPARQL query che restituisce i nomi degli amici degli amici di Howard:

prefix : <#> select ?names where { ?howard :name "Howard" . ?howard :friend/:friend/:name ?names . }
Nota

A ogni parte di ogni tripla Resource Description Framework (RDF) è URI associata una. Nell'esempio precedente, il URI prefisso è intenzionalmente breve.

Segui un corso online sull'utilizzo di Amazon Neptune

Se ti piace imparare con i video, AWS offre corsi online negli AWS Online Tech Talks per aiutarti a iniziare. Un corso introduttivo sui database a grafo è::

    Graph Database introduction, deep-dive and demo with Amazon Neptune.

Approfondimenti sull'architettura di riferimento dei grafi

Se pensate ai problemi che un database a grafi potrebbe risolvere per voi e a come affrontarli, uno dei migliori punti di partenza è il progetto Neptune Graph Reference Architectures. GitHub

Qui puoi trovare descrizioni dettagliate dei tipi di carichi di lavoro dei grafi e tre sezioni per aiutarti a progettare un database a grafo efficace:

Sono inoltre disponibili tre sezioni che illustrano i passaggi specifici per l'utilizzo di Neptune: