Vai al contenuto principale

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.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

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.

Amazon Neptune Front Page

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.

Engine Options

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.

DB cluster identifier settings

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.

Capacity settings tab

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à.

Template settings tab

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.

Connectivity Settings Panel

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:

Notebooks Panel

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');

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');

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:

CREATE (a:Person {id: '1', name: 'Alice'}),
(b:Person {id: '2', name: 'Bob'})
CREATE (a)-[:KNOWS]->(b);

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.

Ecco come recuperarli:

MATCH (p:Person)
RETURN p.id, p.name;

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 .
}

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 .
}

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!


Iheb Gafsi's photo
Author
Iheb Gafsi
LinkedIn

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.

Argomenti
AWS
Cloud

Impara AWS con DataCamp

Corso

Concetti di AWS

2 ore
52.6K
Scopri il mondo di Amazon Web Services (AWS) e capisci perché è al top nel cloud computing.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

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.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra AltroMostra Altro