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.

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.

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

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

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.