Neo4j: quando le relazioni sono il dato, non il contorno

Neo4j non è un sostituto di SQL — è uno strumento fondamentalmente diverso. Eccelle dove le relazioni tra entità sono il dato critico: reti sociali, sistemi antifrode, raccomandazioni, knowledge graph aziendali. Questa guida mostra come funziona il modello a proprietà, come scrivere le prime query Cypher e come iniziare gratis con AuraDB Free in meno di tre minuti.

Share

Tempo di lettura: 6 minuti

Neo4j è il database a grafo più diffuso al mondo — e la sua differenza rispetto a SQL si capisce in una frase: le relazioni non sono un effetto collaterale, sono il dato centrale. Frodi finanziarie, reti sociali, supply chain, sistemi di raccomandazione: tutti domini dove i legami contano più delle entità stesse. In questa guida impari il modello a proprietà, il linguaggio Cypher e come iniziare gratis con AuraDB Free in meno di tre minuti. Terza puntata del percorso Stack Digitale 2026.

Immagina di dover trovare tutti gli amici degli amici di una persona in un database SQL. Scrivi una query con due JOIN. Poi ti rendi conto che aggiungere un altro livello richiederebbe un terzo JOIN. E rispondere alla domanda “quanti gradi di separazione esistono tra questi due utenti”? Dimentica — la query diventa illeggibile prima ancora di funzionare, e le performance crollano ad ogni livello di profondità aggiuntivo.

Non è un problema di ottimizzazione. È un problema strutturale: SQL è progettato per tabelle e righe, non per reti e connessioni. Quando la relazione tra i dati è il dato più importante, un database a grafo non è un’alternativa esotica. È la scelta ovvia.

Il modello a proprietà: nodi, relazioni, proprietà

Un database a grafo rappresenta il mondo in tre elementi. I nodi sono le entità — una persona, un film, un prodotto, un conto bancario. Le relazioni sono i collegamenti tipizzati tra nodi, con nome e direzione: ACTED_IN, FOLLOWS, PURCHASED. Le proprietà sono gli attributi assegnabili sia ai nodi che alle relazioni: nome, data, peso, durata di una transazione.

La differenza tecnica rispetto a SQL è fondamentale. In SQL, una relazione tra entità è un valore in una colonna con chiave esterna — trovare tutti i collegati richiede un JOIN che attraversa tabelle separate, con costi che crescono esponenzialmente alla profondità. In Neo4j la relazione è un elemento di prima classe con puntatori fisici diretti: percorrerla non richiede nessun join, è una lettura diretta O(1) per ogni hop. La velocità non degrada con la complessità del grafo.



La query che spiega tutto: MATCH in azione

L’immagine qui sotto mostra la query MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) RETURN p, r, m LIMIT 20 eseguita sul dataset Movie di AuraDB. Il risultato non è una tabella: è un grafo visivo interattivo. Nodi beige rappresentano le persone (Al Pacino, Charlize Theron, Keanu Reeves e altri), nodi verdi rappresentano i film (The Matrix, The Devil’s Advocate, A Few Good Men). Le frecce etichettate ACTED_IN collegano ogni attore ai film in cui ha recitato.

Il nodo centrale — Keanu Reeves, selezionato con bordo azzurro — mostra nel pannello a destra le sue proprietà: anno di nascita 1964, nome completo. Con una sola riga di Cypher ottieni ciò che in SQL richiederebbe due tabelle, un JOIN e una clausola WHERE — in 237 millisecondi su cloud. E cliccando qualsiasi nodo vedi immediatamente i suoi dati, senza scrivere un’altra query.

Neo4j Browser con grafo attori-film: Keanu Reeves selezionato born 1964, relazioni ACTED_IN verso The Matrix
Una query Cypher, un grafo interattivo: ogni nodo è cliccabile e mostra le proprietà in tempo reale

AuraDB Free: inizia senza installare nulla

Neo4j ha la reputazione — meritata — di strumento potente ma complesso da configurare. AuraDB Free smonta questa percezione. È il piano cloud permanentemente gratuito di Neo4j Inc.: nessuna carta di credito, nessun Docker, nessuna installazione Java. Vai su console.neo4j.io, accedi con Google, clicca Create instance e scegli AuraDB Free. L’istanza è pronta in meno di due minuti.

Nell’immagine qui sotto vedi esattamente l’interfaccia post-creazione: un’istanza con status RUNNING (pallino verde), ID univoco, tipo AuraDB Free, e i contatori già aggiornati — 70 nodi e 179 relazioni dal dataset di esempio preinstallato. Dal pulsante Open accedi direttamente a Query (editor Cypher nel browser), Explore (visualizzazione grafica drag-and-drop senza scrivere codice), Dashboards e Developer Hub. È un ambiente Neo4j completo, gratuito e accessibile da qualsiasi browser.

Console Neo4j AuraDB: istanza Free in stato RUNNING con 70 nodi e 179 relazioni, menu Open con Query ed Explore
AuraDB Free è operativa in due minuti: zero installazioni, accesso diretto da browser


Cypher: il linguaggio che parla di pattern

Cypher è il linguaggio di query di Neo4j. La sua sintassi è progettata per assomigliare visivamente a un grafo: nodi tra parentesi tonde (n:Label), relazioni come frecce tra parentesi quadre -[r:TIPO]->. Se sai leggere un diagramma ER, impari Cypher in un pomeriggio. Il comando base è MATCH — l’equivalente di SELECT FROM JOIN in SQL, senza dover dichiarare le tabelle da unire:

MATCH (a:User)-[:FOLLOWS]->(b:User)
RETURN a.name, b.name

Questa query trova tutti gli utenti che ne seguono altri. Nessuna tabella di join da dichiarare, nessuna chiave esterna da esplicitare. Il tipo di relazione :FOLLOWS è sufficiente per attraversare il grafo.

Friends of friends: la query che SQL non può fare bene

Trovare gli utenti raggiungibili a due gradi di separazione tramite FOLLOWS richiede una sola riga: MATCH (a:User)-[:FOLLOWS*2]->(b) RETURN b. L’asterisco specifica la profondità di attraversamento — *3 per tre gradi, *1..5 per qualsiasi profondità da uno a cinque. In SQL equivalente: almeno tre JOIN annidati, con performance che crollano sul dataset reale.

L’immagine qui sotto mostra il risultato reale su un dataset social con centinaia di utenti: 210 nodi User trovati in appena 19 millisecondi. Il pannello a destra mostra le proprietà di uno degli utenti raggiunti — Sam Wilson, game developer a Milano, 1950 follower, iscritto dal novembre 2019. Dati reali, relazioni reali, velocità reale su AuraDB Free cloud.

Neo4j Browser: query FOLLOWS 2 gradi restituisce 210 nodi in 19ms, dettagli Sam Wilson game developer Milano
210 utenti raggiunti a 2 gradi in 19 millisecondi: questa è la velocità nativa dei database a grafo


Shortest path: trovare la connessione più breve

Qui Neo4j si distacca definitivamente da SQL e da MongoDB. La funzione shortestPath() calcola il percorso più breve tra due nodi qualsiasi nel grafo, in modo nativo e ottimizzato. Non implementi l’algoritmo: lo chiami direttamente in Cypher. L’immagine seguente mostra la query completa sul dataset social — trova il percorso più breve tra peter_junior e nick_startup attraverso la rete FOLLOWS, estraendo username, gradi di separazione e nomi reali di ogni nodo nel cammino:

MATCH (peter:User {username: 'peter_junior'}),
      (nick:User {username: 'nick_startup'}),
      path = shortestPath((peter)-[:FOLLOWS*..]-(nick))
RETURN [node IN nodes(path) | node.username] AS connectionPath,
       LENGTH(path) AS degrees,
       [node IN nodes(path) | node.name] AS names

Il risultato in tabella è preciso: Peter Parker e Nick Fury non si seguono direttamente, ma il percorso più breve passa per Alice Johnson (alice_tech) e Bob Smith (bob_data) — tre gradi di separazione esatti. Nota il messaggio del Browser: i risultati non sono visualizzabili come grafo perché la query restituisce liste di valori estratti dal percorso, non nodi. Neo4j sa quando usare la tabella.

Query shortestPath Cypher: percorso 3 gradi da peter_junior a nick_startup via alice_tech e bob_data, risultato tabella
shortestPath() in Cypher: 3 gradi di separazione tra Peter Parker e Nick Fury, percorso esatto in tabella

Quando usare Neo4j (e quando no)

Neo4j eccelle quando le relazioni sono il dato critico. I casi d’uso classici: rilevazione frodi (pattern anomali tra conti e transazioni — diverse banche lo usano per rilevare reti di conti conniventi), social network (follower, community detection, feed personalizzati), sistemi di raccomandazione (chi ha acquistato X ha anche acquistato Y), knowledge graph aziendali (chi conosce chi, chi ha lavorato su cosa), supply chain (tracciare l’origine di un componente attraverso più livelli di fornitori).

Non è la scelta ottimale per query aggregate semplici su grandi volumi, per operazioni OLAP su dataset flat, o per domini dove le entità hanno pochissime relazioni tra loro. In quei casi PostgreSQL è più performante e meno complesso da operare.

Neo4j vs MongoDB vs SQL: una bussola rapida

MongoDB con $graphLookup permette di navigare strutture a grafo — ma senza le librerie di algoritmi integrate di Neo4j (Graph Data Science: shortest path, PageRank, community detection, centrality) e con performance che degradano su grafi profondi o di grandi dimensioni. Per dati con relazioni semplici e struttura eterogenea, MongoDB è ragionevole. Per algoritmi avanzati su grafi, Neo4j è la scelta corretta. SQL rimane imbattibile per transazioni ACID, query aggregate e dati intrinsecamente tabulari. La buona notizia: nel mondo reale questi tre strumenti convivono nella stessa architettura — lo vedremo nell’articolo sul poliglottismo del dato.

Quarta puntata: Claude Code e Claude Design

Tre mattoni del percorso Stack Digitale 2026 sono ora sul tavolo: Google Forms per raccogliere dati strutturati, Google Sheets per analizzarli con pivot e formule, Neo4j per gestire le relazioni complesse. La settimana prossima usciamo dai database e guardiamo agli strumenti di sviluppo: Claude Code e Claude Design, i due prodotti Anthropic lanciati ad aprile 2026 che stanno ridisegnando come si costruisce e si presenta un prodotto digitale — dall’idea al codice funzionante, senza aprire un IDE. Database a grafo con neo4j: un nuovo strumento concreto nel tuo stack. Adesso è il momento di costruire.

More To Explore

Intelligenza artificiale

Sentiment Analysis e Topic Modeling: cosa dicono davvero i tuoi clienti

Hai 200 recensioni, 500 ticket di supporto, 1.000 commenti. Leggerli tutti richiederebbe giorni — e alla fine non saresti neanche sicuro di aver colto i pattern più importanti. Sentiment Analysis e Topic Modeling risolvono esattamente questo: in dieci minuti identifichi il tono emotivo di ogni testo, raggruppi i temi ricorrenti e ottieni una sintesi strategica che la lettura manuale non avrebbe mai prodotto.

Intelligenza artificiale

AI Multimodale: analizza PDF, immagini e documenti con Claude, GPT-4 e Gemini

L’AI non legge più solo testo. Claude riassume un preventivo di 10 pagine in 30 secondi. GPT-4 Vision trascrive i dati da uno screenshot di dashboard in formato tabella pronta all’uso. Gemini 1.5 Pro naviga documenti da 1.000 pagine citando le fonti. Questa guida mostra come funzionano, quando usare quale tool e dove il risparmio di tempo è misurabile — con screenshot reali di sessioni operative.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Progetta con MongoDB!!!

Acquista il nuovo libro che ti aiuterà a usare correttamente MongoDB per le tue applicazioni. Disponibile ora su Amazon!