• Contenu
  • Bas de page
logo ouidoulogo ouidoulogo ouidoulogo ouidou
  • Qui sommes-nous ?
  • Offres
    • 💻 Applications métier
    • 🤝 Collaboration des équipes
    • 🛡️ Sécurisation et optimisation du système d’information
    • 🔗 Transformation numérique
  • Expertises
    • 🖥️ Développement logiciel
    • ♾️ DevSecOps
    • ⚙️ Intégration de logiciels et négoce de licences
      • Atlassian : Jira, Confluence, Bitbucket…
      • Plateforme monday.com
      • GitLab
      • SonarQube
    • 📚​ Logiciel de CRM et de gestion
    • 🎨 UX/UI design
    • 🌐 Accessibilité Numérique
    • 🗂️​ Démarches simplifiées
    • 📝 Formations Atlassian
    • 🤖 L’IA au service de vos projets numériques
  • Références
  • Carrières
    • 🧐 Pourquoi rejoindre Ouidou ?
    • ✍🏻 Nous rejoindre
    • 👨‍💻 Rencontrer nos collaborateurs
    • 🚀 Grandir chez Ouidou
  • RSE
  • Ressources
    • 🗞️ Actualités
    • 🔍 Articles techniques
    • 📖 Livres blancs
    • 🎙️ Interviews Clients
Nous contacter
✕
Le web en Crystal
Le web en Crystal
27 août 2020
Stimulus : Mettez des paillettes dans votre HTML
Stimulus : Mettez des paillettes dans votre HTML
16 octobre 2020
Ressources > Articles techniques > Neo4j : un graphe comme base de données?

Neo4j : un graphe comme base de données?

Écrit par Louis Jeanne-Julien

Neo4j : c’est quoi?

Neo4j est un SGBD opensource développé en Java et Scala, disponible depuis début 2010, qui a la particularité de représenter les données sous forme de graphes.
Un serveur Neo4j contient une ou plusieurs bases de données non relationnelles, chacune associée à un graphe. Le graphe est un modèle de données contenu dans la base de données : il n’empêche pas l’utilisateur de lire les données sous forme de lignes, mais permet d’en avoir une vision d’ensemble, et en facilite la lecture.

Neo4j : ça ressemble à quoi?

Pour être simple et exhaustif, un graphe Neo4j, c’est :

  • un ensemble de Nodes (représentés sous forme de cercles), de Relationships (représentées sous forme de flèches), et de Properties.
  • les Nodes et les Relationships peuvent appartenir à différents types définis par l’utilisateur, appelés Labels : cette appartenance est visible grâce à la couleur du Node. Ces Labels sont l’équivalent des tables dans les DB relationnelles.
  • les Nodes et les Relationships possèdent des Properties qui sont des paires clef/valeur.
  • les Relationships sont uni- ou bi-directionnelles, et comportent un Node de départ et un Node de fin.

Le DataBrowser de Neo4J permet de visualiser les données sous deux formats, selon le besoin de l’utilisateur :

  • UI view : le graphe, dont les données sont exportables en format JSON.
  • Grid view : un tableau, dont les données sont exportables en format CSV ou JSON.

Neo4j : pourquoi?

Les principaux avantages de Neo4j résident dans la clarté de la lecture des données et des requêtes :

  • La représentation en graphe est particulièrement adaptée lorsque les données sont étroitement liées entre elles, et permet une représentation bien structurée et hiérarchisée.
  • Nul besoin d’effectuer des jointures complexes entre des tables pleines de clefs étrangères : il est aisé de naviguer entre les données qui sont reliées.
  • Utilisation de CQL (Cypher Query Language) : un langage déclaratif, dont la structure est voisine du SQL, et dont la syntaxe orientée ‘art ascii’ permet de représenter visuellement les requêtes.
  • Possible indexation des données pour plus de rapidité d’exécution lors de requêtes complexes sur de grosses applications.

Le langage CQL en quelques commandes

Je veux retrouver :
  • un Node selon l’un de ses Labels : MATCH (node:label)
  • un Node selon l’une de ses Properties : MATCH (node {key:value})
Je veux créer :
  • un Node : CREATE (node)
  • un Node appartenant à un Label : CREATE (node:Label)
  • un Node possédant une Property : CREATE (node {key:value})
  • un Node appartenant à un Label et possédant une Property : CREATE (node:label {key:value})
  • une Relationship entre deux Nodes (les Properties sont optionnelles) : CREATE (start node)-[relationship:nom_ou_type_de_la_relation {key1:value1, key2:value2}]->(end node)
Je veux ajouter :
  • un Label ou une Property à un Node (le fonctionnement est le même sur une Relationship) : MATCH (n:Label {key:value}) SET n :label
Je veux supprimer :
  • un Label ou une Property à un Node (le fonctionnement est le même pour l’ajout sur une Relationship) : MATCH (n:Label {key:value}) REMOVE n :label
  • un Node ou une Relationship (l’instruction DETACH permet de supprimer les Relationships du Node avant de le supprimer) : MATCH (n:label {key:value}) DETACH DELETE n
Je veux tout créer d’un coup :

Des Nodes, appartenant à différents Labels, et possédant différentes Properties, liés entre eux par des Relationships

  • CREATE (node1:Label1:Label2 {key1:value1, key2:value2, key3:value3})-[relation1:nom_de_la_relation]->(node2:Label1:Label3 {key1:value1, key2:value2, key3:value3})-[relation2:nom_de_la_relation]->(node3:Label4:Label2 {key1:value1, key2:value2, key3:value3})
Un exemple : le Seigneur des Anneaux en base de données

Commençons par créer les protagonistes : les Labels feront office de différentes factions, et nous utiliserons une Property pour attribuer un prénom à chacun.

  • Ajoutons ensuite les liens hiérarchiques de rigueur au sein de chaque faction, par exemple :
  • Ajoutons enfin les liens entre les membres de chaque faction, par exemple :
  • Sur le résultat final, nous voyons les Nodes de différentes couleurs selon leurs Labels:
  • bleu : “Gentil”
  • rouge : “Mechant” + “Mordor”
  • jaune : “Mechant” + “Isengard”
  • vert : “Objet”

Neo4j : ils l’ont adopté

J’espère que cette courte introduction vous a donné une idée de la valeur ajoutée apportée par Neo4j, déjà présent au sein de grandes organisations :

Liens

Site web : https://neo4j.com/
Dépôt GitHub : https://github.com/neo4j/neo4j

À lire aussi

JTE : un moteur de templates moderne, rapide et sécurisé pour Java
9 mars 2026

JTE : un moteur de templates moderne, rapide et sécurisé pour Java

Lire la suite de l'article

La Sobriété Numérique, de la quantification des émissions carbone des applications à la mise en œuvre des corrections
16 février 2026

La Sobriété Numérique, de la quantification des émissions carbone des applications à la mise en œuvre des corrections

Lire la suite de l'article

Introduction pratique au Q-learning avec Gymnasium Taxi-v3
6 janvier 2026

Introduction pratique au Q-learning avec Gymnasium Taxi-v3

Lire la suite de l'article

Introduction à K6
9 décembre 2025

Introduction à K6

Lire la suite de l'article

Articles associés

JTE : un moteur de templates moderne, rapide et sécurisé pour Java
9 mars 2026

JTE : un moteur de templates moderne, rapide et sécurisé pour Java


Lire la suite
La Sobriété Numérique, de la quantification des émissions carbone des applications à la mise en œuvre des corrections
16 février 2026

La Sobriété Numérique, de la quantification des émissions carbone des applications à la mise en œuvre des corrections


Lire la suite
Introduction pratique au Q-learning avec Gymnasium Taxi-v3
6 janvier 2026

Introduction pratique au Q-learning avec Gymnasium Taxi-v3


Lire la suite

À propos

  • Qui sommes-nous ?
  • Références
  • RSE
  • Ressources

Offres

  • Applications métier
  • Collaboration des équipes
  • Sécurisation et optimisation du système d’information
  • Transformation numérique

Expertises

  • Développement logiciel
  • DevSecOps
  • Intégration de logiciels et négoce de licences
  • Logiciel de CRM et de gestion
  • UX/UI design
  • Accessibilité Numérique
  • Démarches simplifiées
  • Formations Atlassian

Carrières

  • Pourquoi rejoindre Ouidou ?
  • Nous rejoindre
  • Rencontrer nos collaborateurs
  • Grandir chez Ouidou
logo ouidou

SIEGE SOCIAL
70-74 boulevard Garibaldi, 75015 Paris

Ouidou Nord
165 Avenue de Bretagne, 59000 Lille

Ouidou Rhône-Alpes
4 place Amédée Bonnet, 69002 Lyon

Ouidou Grand-Ouest
2 rue Crucy, 44000 Nantes

Ouidou Grand-Est
7 cour des Cigarières, 67000 Strasbourg

  • Linkedin Ouidou
  • GitHub Ouidou
  • Youtube Ouidou
© 2024 Ouidou | Tous droits réservés | Plan du site | Mentions légales | Déclaration d'accessibilité
    Nous contacter