Prise en main de Neo4j - La base de données orientée graphe

@joekakone

Joseph Konka @joekakone

03/03/2026 · 12 min

Explorez Neo4j, le leader mondial des bases de données orientées graphes. Comprenez le modèle Labeled Property Graph (LPG), le langage déclaratif Cypher et la puissance de l'index-free adjacency pour les données fortement interconnectées.

Prise en main de Neo4j : La base de données orientée graphe#

Dans notre monde numérique hyperconnecté, la valeur d'une donnée réside de plus en plus dans les relations qu'elle entretient avec les autres entités. Qu'il s'agisse de démasquer des réseaux de fraude financière sophistiqués, de recommander des relations professionnelles sur LinkedIn, de tracer des chaînes logistiques mondiales ou de construire des graphes de connaissances (Knowledge Graphs) pour l'Intelligence Artificielle, le modèle relationnel traditionnel montre rapidement ses limites.

Créé au début des années 2000 par la société Neo Technology (devenue Neo4j, Inc.), Neo4j est le système de gestion de base de données orienté graphe natif le plus populaire et le plus puissant de l'industrie.


1. Pourquoi une base de données de graphes ?#

Le mur des jointures relationnelles (The JOIN Hell)#

Dans une base de données relationnelle (SQL), pour relier des entités, nous créons des tables d'association avec des clés étrangères. Par exemple, pour exprimer des amitiés entre utilisateurs, nous utilisons une table intermédiaire Amis(user_id1, user_id2).

Si nous voulons trouver les « amis d'amis » d'une personne à 2 degrés de séparation, le moteur SQL doit exécuter deux jointures (JOIN). Pour atteindre 4 ou 5 degrés de séparation (comme pour la détection de fraude ou l'analyse de propagation virale), le planificateur SQL doit joindre la table d'association 5 fois sur elle-même.

[!WARNING] En SQL, le coût d'une traversée de relations récursive augmente de manière exponentielle avec la profondeur de recherche. Sur des tables contenant des dizaines de millions de lignes, ces requêtes provoquent des blocages de mémoire et des temps de réponse pouvant dépasser plusieurs minutes, voire plusieurs heures !

La solution : L'Adjacence sans index (Index-Free Adjacency)#

Neo4j est une base de graphes native. Elle ne simule pas des graphes sur des tables relationnelles ou des documents JSON : - Chaque nœud en mémoire détient des pointeurs physiques directs vers ses relations et ses nœuds voisins. - Pour traverser une relation, le moteur ne consulte aucun index B-Tree global : il suit simplement une adresse mémoire en temps constant \(\mathcal{O}(1)\).

Par conséquent, dans Neo4j, le temps d'exécution d'une traversée dépend uniquement de la taille du sous-graphe exploré, et reste totalement indépendant de la taille globale de la base de données (qu'elle héberge 10 000 ou 10 milliards de nœuds).

flowchart LR
    subgraph Relationnel ["Monde Relationnel (SQL)"]
        T1[Table Utilisateurs] -->|Scan d'Index O log N| TJ[Table de Jointures Amis]
        TJ -->|Second Scan d'Index| T2[Table Utilisateurs]
    end

    subgraph Graphe_Natif ["Monde Graphe (Neo4j - Index-Free Adjacency)"]
        N1["(Alice)"] -->|Pointeur direct O 1| R1["-[:AMIS_AVEC]->"]
        R1 -->|Pointeur direct O 1| N2["(Bob)"]
        N2 -->|Pointeur direct O 1| R2["-[:AMIS_AVEC]->"]
        R2 -->|Pointeur direct O 1| N3["(Claire)"]
    end

2. Le modèle LPG : Labeled Property Graph#

Neo4j structure les données selon le formalisme du Graphe de Propriétés Étiqueté (Labeled Property Graph ou LPG). Ce modèle repose sur 4 concepts fondamentaux :

graph LR
    A["(:Person {nom: 'Alice', age: 30})"] -- "[:TRAVAILLE_POUR {depuis: 2022}]" --> B["(:Entreprise {nom: 'AlgoJungle'})"]
  1. Les Nœuds (Nodes) : Ce sont les entités ou les objets du monde réel (ex: une personne, une entreprise, une transaction, un serveur, un produit).
  2. Les Labels (Étiquettes) : Rôles ou catégories rattachés aux nœuds (ex: :Person, :Client, :Company). Un même nœud peut porter plusieurs labels (par exemple (u:Person:Employe)). Les labels permettent à Neo4j d'indexer rapidement les points d'entrée du graphe.
  3. Les Relations (Relationships) : Les liens orientés reliant deux nœuds. Une relation a toujours :
  4. Un nom ou type obligatoire en majuscules (ex: -[:SUIT]->, -[:A_ACHETE]->, -[:LOCALISE_A]->).
  5. Un nœud de départ et un nœud d'arrivée (direction sémantique).
  6. Les Propriétés (Properties) : Paires clé-valeur de métadonnées (types primitifs : chaînes, entiers, flottants, booléens, dates) pouvant être stockées à la fois sur les nœuds et sur les relations (par exemple, la relation [:AMIS_AVEC] peut porter la propriété {depuis: 2024, affinite: 0.95}).

3. Cypher : Le langage de requête déclaratif du graphe#

Pour interroger et manipuler les graphes, Neo4j a créé le langage Cypher.

Tout comme SQL est le langage standard du relationnel, Cypher est devenu le standard des langages de requêtes de graphes (ayant largement inspiré la norme internationale ISO GQL - Graph Query Language).

Cypher adopte une approche visuelle élégante basée sur l'art ASCII : - Les nœuds sont encadrés par des parenthèses : (p:Person) - Les relations sont représentées par des flèches avec crochets : -[r:A_POUR_AMI]-> - Un motif complet (pattern) s'écrit naturellement :

MATCH (alice:Person {nom: 'Alice'})-[:A_POUR_AMI]->(ami:Person)
RETURN ami.nom, ami.age

Cette lisibilité exceptionnelle permet aux ingénieurs et aux analystes métier de visualiser mentalement la topologie du réseau directement en lisant la requête !


4. L'écosystème technologique Neo4j#

La plateforme Neo4j met à disposition une suite complète d'outils professionnels :

flowchart TD
    A[Neo4j Database Engine] --> B[Interfaces Utilisateur]
    A --> C[Bibliothèques Algorithmiques]
    A --> D[Pilotes Applicatifs]
    A --> E[Plateforme Cloud]

    B --> B1[Neo4j Browser : Shell web graphique interactif]
    B --> B2[Neo4j Bloom : Visualisation no-code orientee metier]
    B --> B3[Neo4j Desktop : Environnement de developpement local]

    C --> C1[Graph Data Science GDS : PageRank, Louvain, Dijkstra]
    C --> C2[APOC : Awesome Procedures on Cypher]

    D --> D1[Python : neo4j official driver]
    D --> D2[JavaScript : neo4j-driver]
    D --> D3[Java / Spring Data Neo4j]

    E --> E1[Neo4j AuraDB : DBaaS entierement manage]
  1. Neo4j DBMS : Le moteur de base de données transactionnel, 100 % conforme aux exigences ACID (les transactions sur graphes sont garanties et sécurisées).
  2. Neo4j Browser : L'interface web officielle accessible sur le port 7474, permettant d'exécuter des scripts Cypher et de manipuler les sous-graphes sous forme de visualisations interactives avec nœuds mobiles et colorés.
  3. Graph Data Science (GDS) : Une bibliothèque de calcul haute performance conçue pour exécuter des algorithmes de pointe sur les graphes (détection de communautés, centralité, PageRank, plongements vectoriels de nœuds Node2Vec).
  4. Neo4j AuraDB : Le service cloud managé disponible sur Google Cloud, AWS et Azure avec mise à l'échelle dynamique et sauvegardes automatisées.

5. Cas d'usage de référence dans l'industrie#

Les bases de graphes ne remplacent pas systématiquement les bases documentaires ou relationnelles ; elles excellent là où la topologie des connexions prime sur le stockage de données plates :

Domaine applicatif Problématique résolue par Neo4j
Détection de fraude financière Identification en temps réel de réseaux de blanchiment, de carrousels de TVA ou de comptes partagés utilisant les mêmes identifiants ou numéros de téléphone.
Moteurs de recommandation Recommandation de produits, d'amis ou d'opportunités professionnelles basée sur les voisins proches (Collaborative Filtering) en quelques millisecondes.
Cybersécurité & Cartographie réseau Analyse des chemins d'attaque (Attack Paths), gestion des autorisations d'accès dans Active Directory / Cloud IAM, et analyse d'impact d'une panne.
Gestion des données de référence (MDM) Cartographie à 360° des clients, filiales, participations croisées et contrats d'une multinationale.
Knowledge Graphs & IA Générative (GraphRAG) Structuration des connaissances métiers pour alimenter les modèles de langage (LLM) avec des faits vérifiables et réduire les hallucinations.

6. Feuille de route de la formation#

Notre parcours sur Neo4j est articulé en 4 volets complémentaires :

  1. Installer Neo4j : Déploiement du serveur avec Docker Compose et installation de Neo4j Desktop.
  2. Créer des nœuds et relations : Maîtrise complète de la syntaxe Cypher (CREATE, MERGE, MATCH, WHERE, SET, DELETE).
  3. Cas Pratique Réseau Social & Recommandation : Construction d'un réseau professionnel complet avec calcul d'affinité, détection d'amis communs et intégration en Python avec le pilote neo4j.
  4. Ressources & Certification : Algorithmes GDS, certifications officielles Neo4j et quiz d'auto-évaluation technique.

[!TIP] Prêt à explorer le monde fascinant des graphes ? Rendez-vous dans le chapitre suivant pour déployer votre première instance Neo4j avec Docker !

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue