Amazon Neptune: uno sguardo al database a grafo completamente gestito di AWS
Scopri come Amazon Neptune gestisce dati altamente connessi usando modelli a grafo come property graph e RDF. Scopri come scrivere query in Gremlin, openCypher e SPARQL per attività reali come rilevamento frodi e raccomandazioni.
Amazon Neptune, se non lo conosci, è un servizio di database a grafo completamente gestito offerto da AWS, progettato per archiviare e interrogare dati altamente connessi, come quelli dei social network. È ottimizzato per scenari in cui le relazioni tra i punti dati sono importanti quanto i dati stessi.
Come vedrai tra poco, Amazon Neptune supporta due modelli di grafo principali: i property graph, con nodi e archi dotati di proprietà chiave-valore, e l’RDF (Resource Description Framework), che contiene triple soggetto-predicato-oggetto. Amazon Neptune è compatibile con tre linguaggi di query principali, come Gremlin, openCypher e SPARQL. È tutto molto interessante, quindi iniziamo.
Che cos’è Amazon Neptune?
Come accennavo, Amazon Neptune è un database a grafo progettato ad hoc per interrogazioni rapide sulle relazioni, in grado di gestire miliardi di nodi e archi con bassa latenza. Supporta i property graph, utilizzati per social, raccomandazioni e analisi di rete grazie alla loro flessibilità, e l’RDF, standard per il web semantico, i knowledge graph e i linked data in generale.
Amazon Neptune è distribuito in più regioni AWS per coprire a livello globale ed essere resiliente ai disastri. E, nel caso te lo stessi chiedendo, è sicuro da usare perché è conforme a standard normativi chiave come HIPAA per l’assistenza sanitaria, PCI DSS per i pagamenti e ISO per la sicurezza generale. Questo lo rende adatto a carichi di lavoro sensibili e regolamentati. Se vuoi saperne di più sui database a grafo, leggi il nostro post What is A Graph Database? A Beginner's Guide.
Come funziona Amazon Neptune?
Il motore di database di Amazon Neptune è originariamente basato su Blazegraph e si è evoluto ed è stato migliorato da AWS per ottenere alte prestazioni e affidabilità. Supporta più linguaggi di query come Gremlin, usato per attraversare i property graph (trovare gli amici-degli-amici in un grafo di comunità), openCypher per una sintassi dichiarativa in stile SQL per query su property graph, e SPRQL per interrogare dati RDF e supportare relazioni semantiche e ontologie.
Neptune archivia i dati su volumi di cluster supportati da SSD, replicati tra più zone di disponibilità per garantire durabilità, il che rende lo storage particolarmente rapido e reattivo alle esigenze del prodotto. Inoltre, supporta fino a 15 repliche di lettura per distribuire il traffico in lettura e aumentare la disponibilità, e gestisce senza problemi i guasti delle istanze. Questo significa che Neptune effettua automaticamente il failover a una replica di lettura.
Inoltre, AWS gestisce in modo efficiente hardware, aggiornamenti software e backup. Quindi Neptune è un’ottima scelta per garantire uno storage tollerante ai guasti e autoriparante. Segui il nostro corso AWS Concepts per spiegazioni più approfondite e una comprensione più completa di AWS.
Caratteristiche principali di Amazon Neptune
Amazon Neptune è ricco di funzionalità e vantaggi, che lo rendono un’ottima scelta per il settore. In questa sezione, ti guiderò tra le principali caratteristiche di Neptune da tenere a mente.
Scalabilità e prestazioni
Amazon Neptune scala molto bene, in base al tuo utilizzo, con un promettente compromesso in termini di prestazioni. Aumenta automaticamente lo storage man mano che i dati crescono fino a 64 TB o anche di più, supporta decine di migliaia di query al secondo con un throughput elevato e fornisce risposte in tempo reale con latenza di pochi millisecondi per applicazioni interattive, anche in grafi grandi e complessi, poiché gestisce miliardi di relazioni in modo efficiente.
Sicurezza e conformità
Le prestazioni di Neptune non vanno a scapito della sicurezza: tutti i dati sono crittografati a riposo tramite AWS KMS e in transito tramite TLS, è distribuito all’interno di una VPC per un networking privato e sicuro e le autorizzazioni sono granulari grazie a ruoli e policy di AWS IAM. Il tutto è ulteriormente comprovato dalla conformità normativa: è certificato per HIPAA, PCI DSS e ISO, il che lo rende adatto ai settori regolamentati.
Integrazione con AWS
Non sorprende che Amazon Neptune si integri bene con diversi servizi AWS e con l’intero ecosistema. Puoi quindi, per esempio, importare ed esportare grandi dataset in modo semplice ed efficiente con Amazon S3, monitorare le prestazioni, impostare allarmi e analizzare i log su Amazon CloudWatch, attivare funzioni serverless in base agli eventi del database su AWS Lambda ed eseguire applicazioni su istanze EC2 che si connettono a Neptune.
Inoltre, Neptune è un ottimo strumento per attività di ML, poiché si integra bene con Amazon SageMaker per incorporare il machine learning in analisi avanzate. In effetti, esiste uno specifico utilizzo di Neptune ML, per il machine learning integrato in attività come la previsione di link e la classificazione dei nodi.
Applicazioni di Amazon Neptune
Amazon Neptune è ricco di funzionalità utilizzabili in un’ampia gamma di attività. In questa sezione parlerò di più delle applicazioni reali di Neptune.
Identity graph e dati dei clienti
La capacità di Neptune di archiviare e interrogare dati a grafo lo rende adatto per aggregare dati dei clienti da più fonti e creare un profilo unificato. Sfrutta i dati sulle relazioni per personalizzare raccomandazioni e comunicazioni. È anche molto utile per il rilevamento delle frodi, ad esempio l’individuazione di frodi con carte di credito, identificando schemi sospetti analizzando le connessioni tra utenti, conti e transazioni. Inoltre, è utile per la pubblicità mirata, per offrire annunci pertinenti analizzando i profili utente, grazie alla struttura a grafo dei dati.
Motori di raccomandazione
I motori di raccomandazione si basano in genere in modo massiccio sui dati a grafo, per cui scegliere un motore adatto è un passaggio cruciale in produzione. Neptune fornisce quindi la cassetta degli attrezzi perfetta per i sistemi di raccomandazione. Un’applicazione tipica è l’e-commerce, dove serve suggerire prodotti in base al comportamento degli utenti e alle relazioni tra articoli. È usato anche nelle piattaforme media per raccomandare film, musica o articoli in base alle preferenze e alle connessioni sociali, o per suggerire amici, gruppi o contenuti analizzando le interazioni degli utenti nei social network, come sulle piattaforme social.
Knowledge graph e rilevamento frodi
Oggi le aziende fanno ampio affidamento sull’integrazione dell’AI nelle loro soluzioni. Un esempio è l’uso di workflow agentici o insight guidati dall’AI. Questo viene in genere realizzato con i knowledge graph per soluzioni robuste. Funziona organizzando e collegando le informazioni per la ricerca semantica e gli insight basati sull’AI, come GraphRAG, o altre tecniche tra le più utilizzate per migliorare le soluzioni di AI. Neptune è inoltre solido per applicazioni di ricerca semantica, per migliorare la rilevanza dei risultati comprendendo le relazioni tra entità, e nei servizi finanziari per rilevare, ad esempio, riciclaggio di denaro e frodi tracciando reti e relazioni di transazioni complesse. E ci sono molti altri casi d’uso di Neptune, che spaziano dalla scoperta di farmaci alla sicurezza di rete fino alla gestione della supply chain.
Prime mosse con Amazon Neptune
Amazon Neptune è ben integrato nell’ecosistema AWS. Perciò ti guiderò tra le principali configurazioni e tecniche da usare su Neptune.
Configurare Neptune
Per iniziare con Neptune, segui questi passaggi:
1. Apri la sezione Neptune della piattaforma
Poi clicca su Launch Amazon Neptune per accedere alla pagina di creazione.
Questa immagine mostra la pagina iniziale di Amazon Neptune.
2. Configura le opzioni del motore del database
Seleziona il tipo di motore provisioned se vuoi una capacità fissa con scaling manuale, oppure scegli serverless se preferisci l’auto-scaling in base al carico di lavoro. E puoi scegliere la versione in base al tuo caso d’uso specifico.
Questa immagine mostra i parametri che puoi scegliere nel pannello Engine options durante la creazione di un database.
3. Inserisci un nome per il cluster identifier
Puoi scegliere un nome come “mydbcluster”. Segui le convenzioni indicate nel pannello.
4. Imposta i parametri di capacità
Imposta i limiti delle Neptune capacity unit a cui può accedere durante l’elaborazione. Più unità di capacità significano più costi. Quindi è importante tenere a mente la dimensione della tua applicazione.
5. Scegli un template
Puoi scegliere i template di produzione se vuoi istanze preconfigurate per alta disponibilità, durabilità e prestazioni. Ma se stai lavorando in fase di sviluppo, ti consiglio di usare template di sviluppo per ottimizzare i costi e testare rapidamente con risorse minime, dato che per il momento non ti servono più di tanto alta disponibilità e durabilità.
Questa immagine mostra le impostazioni dei template durante la creazione del database in Neptune.
Una volta scelto un template, le impostazioni di disponibilità e durabilità vengono selezionate automaticamente. Quindi, scegliere un template di produzione abilita automaticamente la creazione di repliche in zone diverse, mentre il template di sviluppo no.
6. Impostazioni di connettività
Seleziona la Virtual Private Cloud (VPC) che è la rete principale in cui è distribuito il tuo cluster Neptune. Puoi anche cliccare su configurazioni di connettività aggiuntive per configurare le subnet e i security group.
Questa parte è cruciale per gestire tutti i protocolli di sicurezza del tuo cluster.
Puoi creare una connessione rapida andando alla sezione Notebooks cliccando su “Notebooks” nel pannello più a sinistra dello schermo:
Lì trovi un notebook demo di default, con query di base per testare la connessione al database e altre operazioni. Puoi anche passare al Graph Explorer cliccando su actions sul lato destro dello schermo. Puoi inoltre usare l’endpoint fornito per connetterti da applicazioni o strumenti di sviluppo.
Scrivere query in Amazon Neptune
In questa sezione ti presento le query “hello world” in ciascuno dei tre linguaggi per AWS Neptune:
Gremlin
Una query Gremlin è una catena di operazioni/funzioni valutata da sinistra a destra. Ecco un esempio di aggiunta di due vertici e un arco:
g.addV('Person').property('id','1').property('name','Alice')
.as('a').
addV('Person').property('id','2').property('name','Bob')
.as('b').
addE('knows').from('a').to('b');Offerto da
Dove .addV('Person')…property(…) indica al motore di creare un vertice con etichetta "Person" e di aggiungervi proprietà come "id" e "name". .as('a') / .as('b') assegna a ciascun nuovo vertice un riferimento (“a” e “b”) per poterli collegare. .addE('knows').from('a’).to('b') crea un arco etichettato knows da Alice a Bob.
Ecco un esempio di recupero:
g.V().hasLabel('Person').valueMap('id','name');Offerto da
Dove g.V().hasLabel('Person').valueMap('id','name') trova tutti i vertici con etichetta Person e ne restituisce le proprietà id e name.
openCypher
Una query Cypher usa pattern in stile ASCII-art per creare e abbinare elementi del grafo. Ecco come creare due nodi e una relazione:
Dove (a:Person {…}) definisce un nodo etichettato Person con proprietà id e name. Il secondo CREATE usa (a)-[:KNOWS]->(b) per aggiungere una relazione direzionata KNOWS da a a b.
Dove MATCH (p:Person) trova tutti i nodi con etichetta Person e RETURN p.id, p.name restituisce le proprietà id e name di ciascun nodo.
SPARQL
Una query SPARQL opera su triple RDF e usa dichiarazioni PREFIX più pattern di grafo. Ecco come inserire due risorse e la loro relazione:
PREFIX ex: <http://example.com/>
INSERT DATA {
ex:Alice a ex:Person ;
ex:name "Alice" .
ex:Bob a ex:Person ;
ex:name "Bob" .
ex:Alice ex:knows ex:Bob .
}Offerto da
Dove PREFIX ex:… definisce un’abbreviazione di namespace. All’interno di INSERT DATA, ogni blocco di triple termina con .: ex:Alice a ex:Person assegna il tipo RDF, ex:name "Alice" aggiunge il literal del nome e ex:Alice ex:knows ex:Bob crea il collegamento.
Ecco come selezionarle:
SELECT ?person ?name WHERE {
?person a ex:Person ;
ex:name ?name .
}Offerto da
Dove ?person a ex:Person abbina tutti i soggetti di tipo ex:Person e ?person ex:name ?name recupera il loro ex:name nella variabile ?name.
Monitoraggio e ottimizzazione
Usare correttamente CloudWatch ti permette di tracciare in modo efficiente le prestazioni di Neptune attivando il monitoraggio avanzato per insight selezionati (fino a intervalli di 1 secondo) su metriche di CPU, memoria, disco e rete. Puoi anche controllare metriche come Engine CPU Utilization e Freeable Memory per individuare pressione su CPU/memoria, Buffer Cache Hit Ratio per capire l’efficienza della cache (più alto è meglio); Query Latency e Query Throughput per monitorare quanto impiegano le query e quante ne vengono servite al secondo. Puoi inoltre impostare dashboard e allarmi con CloudWatch che ti consentono rispettivamente di cogliere le tendenze a colpo d’occhio e di attivare notifiche o scaling automatico. Inoltre, puoi integrare i log per abilitare il logging delle query lente in Neptune e inviare i log a CloudWatch Logs.
Ovviamente ci sono molte best practice per ottimizzare ulteriormente i tuoi workflow con Neptune, che classifico in due categorie. Se non riesci a distinguere tra AWS CloudTrail e AWS CloudWatch, ti consiglio di leggere il nostro post AWS CloudTrail vs AWS CloudWatch: A Beginner's Guide.
Ottimizzazione delle query
Ottimizzare un buon workflow significa ottimizzare le query: ecco alcuni suggerimenti chiave da tenere a mente quando interroghi:
Usa indici ed etichette: in Gremlin/openCypher, indicizza le proprietà interrogate più spesso. Ad esempio g.createIndex('name','vertex') in Gremlin e CREATE INDEX FOR (n:Person) ON (n.name) in openCypher. Usa classi RDF e predicati ben definiti per velocizzare il pattern matching in SPARQL.
Profila e affina le query: usa EXPLAIN in openCypher o PROFILE in Gremlin per vedere attraversamenti e posizionamento dei filtri. Dovresti anche spingere i filtri il prima possibile per ridurre i dati scansionati, come in g.V().has('Person','age',gt(30)).out('knows')…
Evita i prodotti cartesiani: in Cypher, collega sempre i pattern invece di confrontare sottografi non correlati, altrimenti il tempo di elaborazione crescerà in modo drastico. Nel caso di SPARQL, delimita con precisione i pattern di grafo per evitare cross-join di insiemi grandi.
Usa scritture in batch e caricamenti bulk: raggruppa le creazioni di vertici/archi in meno richieste oppure usa il bulk loader di Neptune, come CSV/JSON su S3, per ingerire grandi volumi in modo efficiente.
Gestione di grandi dataset
Gestire grandi dataset è diverso dal trattare dati piccoli e limitati, perché alcune query richiedono micro-controlli che crescono in modo esponenziale con l’aumentare dei dati; ecco quindi alcuni aiuti offerti da Amazon Neptune:
Repliche di lettura: scarica i carichi di lavoro intensivi in lettura su fino a 15 repliche di lettura e instrada lì le query analitiche per mantenere reattivo il nodo primario di scrittura.
Archivia i dati obsoleti: applica TTL o esporta e rimuovi regolarmente nodi/archi datati per mantenere piccolo il grafo operativo.
Partiziona per dominio: suddividi grafi molto grandi in più cluster, ad esempio “social” rispetto a “transactional”, e instrada le query nella tua app.
Monitora la crescita dello storage: tieni sempre d’occhio lo storage in auto-scaling e imposta avvisi per non trovarti mai sorprese di capacità.
Rivedi regolarmente le query lente: controlla settimanalmente i log delle query lente e ottimizza o affronta i pattern problematici.
Pro e contro di Amazon Neptune
Neptune offre molti vantaggi, suggerimenti e trucchi. Tuttavia, presenta alcune limitazioni da considerare quando lo scegli.
Vantaggi
Svantaggi
Completamente gestito: niente gestione di server o backup
Può essere costoso per carichi piccoli o a basso utilizzo
Scalabile: gestisce grafi grandi e volumi elevati di query
Supporta solo Gremlin, openCypher e SPARQL
Supporto a linguaggi di query standard di settore
Vendor lock-in: legato all’infrastruttura AWS
Sicurezza, conformità e integrazione con i servizi AWS solide
Può incontrare limiti di prestazioni con query estremamente complesse
Alta disponibilità e failover automatico
Minor controllo sull’infrastruttura sottostante
Machine learning integrato con Neptune ML
La migrazione da altri DB a grafo può richiedere adattamenti
Amazon Neptune vs. Neo4j e altri
I database a grafo oggi sono in una competizione serrata, soprattutto con l’emergere di LLM, RAG e workflow agentici. Pur avendo molti punti di forza, ci sono numerosi potenziali sviluppi in corso, come un’integrazione AI/ML più profonda, analisi e visualizzazioni migliorate e più linguaggi di query o interoperabilità.
Tuttavia, ci sono molti concorrenti nel panorama, come il famoso Neo4j, che offre property graph e una community forte, ma minore integrazione con AWS. TigerGraph, invece, punta sulle alte prestazioni, ma è più complesso da gestire. ArangoDB è anch’esso un ottimo concorrente e offre dati multi-modello come grafi, documenti e key-value, ma non è integrato con AWS in modo così stretto.
Suggerisco di scegliere Neptune se ti serve un servizio gestito, l’integrazione con AWS e una forte conformità. Tuttavia, è plausibile considerare alternative se ti serve più flessibilità o supporto multi-cloud. Il confronto tra Amazon Neptune e Neo4j può essere particolarmente difficile, quindi ti consiglio di approfondire prima di scegliere l’uno o l’altro.
Conclusione
Neptune è ideale per applicazioni che devono gestire e analizzare dati altamente connessi. È completamente gestito, scalabile, sicuro e profondamente integrato con i servizi AWS e all’interno dell’ecosistema AWS.
Ricorda di continuare a imparare con noi. Segui il nostro corso AWS Concepts se non ti è familiare qualcosa di quanto menzionato in questo articolo, e in bocca al lupo con Amazon Neptune!
Lavoro su sistemi di IA accelerata che abilitano l'intelligenza all'edge con pipeline di ML federate su dati decentralizzati e carichi di lavoro distribuiti. Il mio lavoro si concentra su Large Models, Elaborazione del Parlato, Computer Vision, Reinforcement Learning e topologie ML avanzate.
Domande che potresti avere su Amazon Neptune
Perché non riesco a connettermi al mio cluster Neptune dalla mia applicazione o dal notebook?⌄
Spesso è dovuto a security group mal configurati o a regole in ingresso mancanti per la porta 8182. Assicurati che la subnet o l’IP della tua applicazione sia consentito nel security group di Neptune per la porta TCP 8182. Per i notebook SageMaker, verifica che il blocco CIDR della subnet sia incluso nelle regole in ingresso.
Quanto ritardo posso aspettarmi tra le mie istanze primarie e replica?⌄
Le repliche condividono lo stesso storage del primario, quindi il ritardo di replica è solitamente di poche decine di millisecondi.
La replica di Neptune aumenta i miei costi di storage?⌄
No, la replica è inclusa nel prezzo. Ti viene addebitato solo lo storage logico utilizzato dal tuo database, non lo storage sottostante replicato.
Cosa succede durante un failover di Neptune e quanto tempo richiede?⌄
Se hai repliche di lettura, Neptune promuove una replica a primario e aggiorna l’endpoint, in genere entro 30 secondi. Se non esiste alcuna replica, viene creata una nuova istanza, operazione che può richiedere fino a 15 minuti. Le applicazioni dovrebbero ritentare la connessione dopo il failover.
Posso crittografare un database Neptune esistente non crittografato?⌄
No, devi creare una nuova istanza crittografata e migrare i tuoi dati. La crittografia a riposo e in transito è supportata per i nuovi database.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Impara a usare Amazon Bedrock per accedere ai modelli di intelligenza artificiale di base e creare con l'AI, senza dover gestire infrastrutture complicate.
Amazon Neptune, se non lo conosci, è un servizio di database a grafo completamente gestito offerto da AWS, progettato per archiviare e interrogare dati altamente connessi, come quelli dei social network. È ottimizzato per scenari in cui le relazioni tra i punti dati sono importanti quanto i dati stessi.
Come vedrai tra poco, Amazon Neptune supporta due modelli di grafo principali: i property graph, con nodi e archi dotati di proprietà chiave-valore, e l’RDF (Resource Description Framework), che contiene triple soggetto-predicato-oggetto. Amazon Neptune è compatibile con tre linguaggi di query principali, come Gremlin, openCypher e SPARQL. È tutto molto interessante, quindi iniziamo.
Che cos’è Amazon Neptune?
Come accennavo, Amazon Neptune è un database a grafo progettato ad hoc per interrogazioni rapide sulle relazioni, in grado di gestire miliardi di nodi e archi con bassa latenza. Supporta i property graph, utilizzati per social, raccomandazioni e analisi di rete grazie alla loro flessibilità, e l’RDF, standard per il web semantico, i knowledge graph e i linked data in generale.
Amazon Neptune è distribuito in più regioni AWS per coprire a livello globale ed essere resiliente ai disastri. E, nel caso te lo stessi chiedendo, è sicuro da usare perché è conforme a standard normativi chiave come HIPAA per l’assistenza sanitaria, PCI DSS per i pagamenti e ISO per la sicurezza generale. Questo lo rende adatto a carichi di lavoro sensibili e regolamentati. Se vuoi saperne di più sui database a grafo, leggi il nostro post What is A Graph Database? A Beginner's Guide.
Come funziona Amazon Neptune?
Il motore di database di Amazon Neptune è originariamente basato su Blazegraph e si è evoluto ed è stato migliorato da AWS per ottenere alte prestazioni e affidabilità. Supporta più linguaggi di query come Gremlin, usato per attraversare i property graph (trovare gli amici-degli-amici in un grafo di comunità), openCypher per una sintassi dichiarativa in stile SQL per query su property graph, e SPRQL per interrogare dati RDF e supportare relazioni semantiche e ontologie.
Neptune archivia i dati su volumi di cluster supportati da SSD, replicati tra più zone di disponibilità per garantire durabilità, il che rende lo storage particolarmente rapido e reattivo alle esigenze del prodotto. Inoltre, supporta fino a 15 repliche di lettura per distribuire il traffico in lettura e aumentare la disponibilità, e gestisce senza problemi i guasti delle istanze. Questo significa che Neptune effettua automaticamente il failover a una replica di lettura.
Inoltre, AWS gestisce in modo efficiente hardware, aggiornamenti software e backup. Quindi Neptune è un’ottima scelta per garantire uno storage tollerante ai guasti e autoriparante. Segui il nostro corso AWS Concepts per spiegazioni più approfondite e una comprensione più completa di AWS.
Caratteristiche principali di Amazon Neptune
Amazon Neptune è ricco di funzionalità e vantaggi, che lo rendono un’ottima scelta per il settore. In questa sezione, ti guiderò tra le principali caratteristiche di Neptune da tenere a mente.
Scalabilità e prestazioni
Amazon Neptune scala molto bene, in base al tuo utilizzo, con un promettente compromesso in termini di prestazioni. Aumenta automaticamente lo storage man mano che i dati crescono fino a 64 TB o anche di più, supporta decine di migliaia di query al secondo con un throughput elevato e fornisce risposte in tempo reale con latenza di pochi millisecondi per applicazioni interattive, anche in grafi grandi e complessi, poiché gestisce miliardi di relazioni in modo efficiente.
Sicurezza e conformità
Le prestazioni di Neptune non vanno a scapito della sicurezza: tutti i dati sono crittografati a riposo tramite AWS KMS e in transito tramite TLS, è distribuito all’interno di una VPC per un networking privato e sicuro e le autorizzazioni sono granulari grazie a ruoli e policy di AWS IAM. Il tutto è ulteriormente comprovato dalla conformità normativa: è certificato per HIPAA, PCI DSS e ISO, il che lo rende adatto ai settori regolamentati.
Integrazione con AWS
Non sorprende che Amazon Neptune si integri bene con diversi servizi AWS e con l’intero ecosistema. Puoi quindi, per esempio, importare ed esportare grandi dataset in modo semplice ed efficiente con Amazon S3, monitorare le prestazioni, impostare allarmi e analizzare i log su Amazon CloudWatch, attivare funzioni serverless in base agli eventi del database su AWS Lambda ed eseguire applicazioni su istanze EC2 che si connettono a Neptune.
Inoltre, Neptune è un ottimo strumento per attività di ML, poiché si integra bene con Amazon SageMaker per incorporare il machine learning in analisi avanzate. In effetti, esiste uno specifico utilizzo di Neptune ML, per il machine learning integrato in attività come la previsione di link e la classificazione dei nodi.
Applicazioni di Amazon Neptune
Amazon Neptune è ricco di funzionalità utilizzabili in un’ampia gamma di attività. In questa sezione parlerò di più delle applicazioni reali di Neptune.
Identity graph e dati dei clienti
La capacità di Neptune di archiviare e interrogare dati a grafo lo rende adatto per aggregare dati dei clienti da più fonti e creare un profilo unificato. Sfrutta i dati sulle relazioni per personalizzare raccomandazioni e comunicazioni. È anche molto utile per il rilevamento delle frodi, ad esempio l’individuazione di frodi con carte di credito, identificando schemi sospetti analizzando le connessioni tra utenti, conti e transazioni. Inoltre, è utile per la pubblicità mirata, per offrire annunci pertinenti analizzando i profili utente, grazie alla struttura a grafo dei dati.
Motori di raccomandazione
I motori di raccomandazione si basano in genere in modo massiccio sui dati a grafo, per cui scegliere un motore adatto è un passaggio cruciale in produzione. Neptune fornisce quindi la cassetta degli attrezzi perfetta per i sistemi di raccomandazione. Un’applicazione tipica è l’e-commerce, dove serve suggerire prodotti in base al comportamento degli utenti e alle relazioni tra articoli. È usato anche nelle piattaforme media per raccomandare film, musica o articoli in base alle preferenze e alle connessioni sociali, o per suggerire amici, gruppi o contenuti analizzando le interazioni degli utenti nei social network, come sulle piattaforme social.
Knowledge graph e rilevamento frodi
Oggi le aziende fanno ampio affidamento sull’integrazione dell’AI nelle loro soluzioni. Un esempio è l’uso di workflow agentici o insight guidati dall’AI. Questo viene in genere realizzato con i knowledge graph per soluzioni robuste. Funziona organizzando e collegando le informazioni per la ricerca semantica e gli insight basati sull’AI, come GraphRAG, o altre tecniche tra le più utilizzate per migliorare le soluzioni di AI. Neptune è inoltre solido per applicazioni di ricerca semantica, per migliorare la rilevanza dei risultati comprendendo le relazioni tra entità, e nei servizi finanziari per rilevare, ad esempio, riciclaggio di denaro e frodi tracciando reti e relazioni di transazioni complesse. E ci sono molti altri casi d’uso di Neptune, che spaziano dalla scoperta di farmaci alla sicurezza di rete fino alla gestione della supply chain.
Prime mosse con Amazon Neptune
Amazon Neptune è ben integrato nell’ecosistema AWS. Perciò ti guiderò tra le principali configurazioni e tecniche da usare su Neptune.
Configurare Neptune
Per iniziare con Neptune, segui questi passaggi:
1. Apri la sezione Neptune della piattaforma
Poi clicca su Launch Amazon Neptune per accedere alla pagina di creazione.
Questa immagine mostra la pagina iniziale di Amazon Neptune.
2. Configura le opzioni del motore del database
Seleziona il tipo di motore provisioned se vuoi una capacità fissa con scaling manuale, oppure scegli serverless se preferisci l’auto-scaling in base al carico di lavoro. E puoi scegliere la versione in base al tuo caso d’uso specifico.
Questa immagine mostra i parametri che puoi scegliere nel pannello Engine options durante la creazione di un database.
3. Inserisci un nome per il cluster identifier
Puoi scegliere un nome come “mydbcluster”. Segui le convenzioni indicate nel pannello.
4. Imposta i parametri di capacità
Imposta i limiti delle Neptune capacity unit a cui può accedere durante l’elaborazione. Più unità di capacità significano più costi. Quindi è importante tenere a mente la dimensione della tua applicazione.
5. Scegli un template
Puoi scegliere i template di produzione se vuoi istanze preconfigurate per alta disponibilità, durabilità e prestazioni. Ma se stai lavorando in fase di sviluppo, ti consiglio di usare template di sviluppo per ottimizzare i costi e testare rapidamente con risorse minime, dato che per il momento non ti servono più di tanto alta disponibilità e durabilità.
Questa immagine mostra le impostazioni dei template durante la creazione del database in Neptune.
Una volta scelto un template, le impostazioni di disponibilità e durabilità vengono selezionate automaticamente. Quindi, scegliere un template di produzione abilita automaticamente la creazione di repliche in zone diverse, mentre il template di sviluppo no.
6. Impostazioni di connettività
Seleziona la Virtual Private Cloud (VPC) che è la rete principale in cui è distribuito il tuo cluster Neptune. Puoi anche cliccare su configurazioni di connettività aggiuntive per configurare le subnet e i security group.
Questa parte è cruciale per gestire tutti i protocolli di sicurezza del tuo cluster.
Puoi creare una connessione rapida andando alla sezione Notebooks cliccando su “Notebooks” nel pannello più a sinistra dello schermo:
Lì trovi un notebook demo di default, con query di base per testare la connessione al database e altre operazioni. Puoi anche passare al Graph Explorer cliccando su actions sul lato destro dello schermo. Puoi inoltre usare l’endpoint fornito per connetterti da applicazioni o strumenti di sviluppo.
Scrivere query in Amazon Neptune
In questa sezione ti presento le query “hello world” in ciascuno dei tre linguaggi per AWS Neptune:
Gremlin
Una query Gremlin è una catena di operazioni/funzioni valutata da sinistra a destra. Ecco un esempio di aggiunta di due vertici e un arco:
Dove
.addV('Person')…property(…)indica al motore di creare un vertice con etichetta"Person"e di aggiungervi proprietà come"id"e"name"..as('a')/.as('b')assegna a ciascun nuovo vertice un riferimento (“a” e “b”) per poterli collegare..addE('knows').from('a’).to('b')crea un arco etichettatoknowsda Alice a Bob.Ecco un esempio di recupero:
Dove
g.V().hasLabel('Person').valueMap('id','name')trova tutti i vertici con etichettaPersone ne restituisce le proprietàidename.openCypher
Una query Cypher usa pattern in stile ASCII-art per creare e abbinare elementi del grafo. Ecco come creare due nodi e una relazione:
Dove
(a:Person {…})definisce un nodo etichettatoPersoncon proprietàidename. Il secondoCREATEusa(a)-[:KNOWS]->(b)per aggiungere una relazione direzionataKNOWSdaaab.Ecco come recuperarli:
Dove
MATCH (p:Person)trova tutti i nodi con etichettaPersoneRETURN p.id, p.namerestituisce le proprietàidenamedi ciascun nodo.SPARQL
Una query SPARQL opera su triple RDF e usa dichiarazioni
PREFIXpiù pattern di grafo. Ecco come inserire due risorse e la loro relazione:Dove
PREFIX ex:…definisce un’abbreviazione di namespace. All’interno diINSERT DATA, ogni blocco di triple termina con.:ex:Alice a ex:Personassegna il tipo RDF,ex:name "Alice"aggiunge il literal del nome eex:Alice ex:knows ex:Bobcrea il collegamento.Ecco come selezionarle:
Dove
?person a ex:Personabbina tutti i soggetti di tipoex:Persone?person ex:name ?namerecupera il loroex:namenella variabile?name.Monitoraggio e ottimizzazione
Usare correttamente CloudWatch ti permette di tracciare in modo efficiente le prestazioni di Neptune attivando il monitoraggio avanzato per insight selezionati (fino a intervalli di 1 secondo) su metriche di CPU, memoria, disco e rete. Puoi anche controllare metriche come Engine CPU Utilization e Freeable Memory per individuare pressione su CPU/memoria, Buffer Cache Hit Ratio per capire l’efficienza della cache (più alto è meglio); Query Latency e Query Throughput per monitorare quanto impiegano le query e quante ne vengono servite al secondo. Puoi inoltre impostare dashboard e allarmi con CloudWatch che ti consentono rispettivamente di cogliere le tendenze a colpo d’occhio e di attivare notifiche o scaling automatico. Inoltre, puoi integrare i log per abilitare il logging delle query lente in Neptune e inviare i log a CloudWatch Logs.
Ovviamente ci sono molte best practice per ottimizzare ulteriormente i tuoi workflow con Neptune, che classifico in due categorie. Se non riesci a distinguere tra AWS CloudTrail e AWS CloudWatch, ti consiglio di leggere il nostro post AWS CloudTrail vs AWS CloudWatch: A Beginner's Guide.
Ottimizzazione delle query
Ottimizzare un buon workflow significa ottimizzare le query: ecco alcuni suggerimenti chiave da tenere a mente quando interroghi:
Usa indici ed etichette: in Gremlin/openCypher, indicizza le proprietà interrogate più spesso. Ad esempio
g.createIndex('name','vertex')in Gremlin eCREATE INDEX FOR (n:Person) ON (n.name)in openCypher. Usa classi RDF e predicati ben definiti per velocizzare il pattern matching in SPARQL.Profila e affina le query: usa
EXPLAINin openCypher oPROFILEin Gremlin per vedere attraversamenti e posizionamento dei filtri. Dovresti anche spingere i filtri il prima possibile per ridurre i dati scansionati, come ing.V().has('Person','age',gt(30)).out('knows')…Evita i prodotti cartesiani: in Cypher, collega sempre i pattern invece di confrontare sottografi non correlati, altrimenti il tempo di elaborazione crescerà in modo drastico. Nel caso di SPARQL, delimita con precisione i pattern di grafo per evitare cross-join di insiemi grandi.
Usa scritture in batch e caricamenti bulk: raggruppa le creazioni di vertici/archi in meno richieste oppure usa il bulk loader di Neptune, come CSV/JSON su S3, per ingerire grandi volumi in modo efficiente.
Gestione di grandi dataset
Gestire grandi dataset è diverso dal trattare dati piccoli e limitati, perché alcune query richiedono micro-controlli che crescono in modo esponenziale con l’aumentare dei dati; ecco quindi alcuni aiuti offerti da Amazon Neptune:
Pro e contro di Amazon Neptune
Neptune offre molti vantaggi, suggerimenti e trucchi. Tuttavia, presenta alcune limitazioni da considerare quando lo scegli.
Vantaggi
Svantaggi
Completamente gestito: niente gestione di server o backup
Può essere costoso per carichi piccoli o a basso utilizzo
Scalabile: gestisce grafi grandi e volumi elevati di query
Supporta solo Gremlin, openCypher e SPARQL
Supporto a linguaggi di query standard di settore
Vendor lock-in: legato all’infrastruttura AWS
Sicurezza, conformità e integrazione con i servizi AWS solide
Può incontrare limiti di prestazioni con query estremamente complesse
Alta disponibilità e failover automatico
Minor controllo sull’infrastruttura sottostante
Machine learning integrato con Neptune ML
La migrazione da altri DB a grafo può richiedere adattamenti
Amazon Neptune vs. Neo4j e altri
I database a grafo oggi sono in una competizione serrata, soprattutto con l’emergere di LLM, RAG e workflow agentici. Pur avendo molti punti di forza, ci sono numerosi potenziali sviluppi in corso, come un’integrazione AI/ML più profonda, analisi e visualizzazioni migliorate e più linguaggi di query o interoperabilità.
Tuttavia, ci sono molti concorrenti nel panorama, come il famoso Neo4j, che offre property graph e una community forte, ma minore integrazione con AWS. TigerGraph, invece, punta sulle alte prestazioni, ma è più complesso da gestire. ArangoDB è anch’esso un ottimo concorrente e offre dati multi-modello come grafi, documenti e key-value, ma non è integrato con AWS in modo così stretto.
Suggerisco di scegliere Neptune se ti serve un servizio gestito, l’integrazione con AWS e una forte conformità. Tuttavia, è plausibile considerare alternative se ti serve più flessibilità o supporto multi-cloud. Il confronto tra Amazon Neptune e Neo4j può essere particolarmente difficile, quindi ti consiglio di approfondire prima di scegliere l’uno o l’altro.
Conclusione
Neptune è ideale per applicazioni che devono gestire e analizzare dati altamente connessi. È completamente gestito, scalabile, sicuro e profondamente integrato con i servizi AWS e all’interno dell’ecosistema AWS.
Ricorda di continuare a imparare con noi. Segui il nostro corso AWS Concepts se non ti è familiare qualcosa di quanto menzionato in questo articolo, e in bocca al lupo con Amazon Neptune!