• 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
  • 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

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique

Lire la suite

intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 

Lire la suite

Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 

Lire la suite

image miniature les nouveautés Atlassian
26 février 2025

Les nouveautés Atlassian en 2025

Lire la suite

Articles associés

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique


Lire la suite
intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 


Lire la suite
Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 


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

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