Bases orientées graphe
A L’AIDE DE NEO4J
Des relations
 Vous l’avez compris, on collecte de plus en plus de
données
 Ces données ne vivent pas isolées, elles sont reliées
entre elles
 Il s’agit donc de modéliser (représenter) dans la base
de relations telles que :
 Pierre a acheté une 205
 Deux entités
 Une relation
2
Avec une base « classique » 3
En rouge les personnes (1 table)
En bleu les véhicules (1 table)
En jaune les relations entre les deux tables (qui est aussi une table)
Avec une base « classique »
 Plus le nombre d’entités à lier augmente, plus le
nombre de tables intermédiaires augmente
 L’opération de mise en relation est le JOIN
 Plus les tables augmentent en taille, plus la requête
est lente (c’est presque le produit cartésien des
tables) -> pas forcément adapté au big data
 Les schémas sont figés
 Avantage : on ne peut pas faire n’importe quoi
 Inconvénient : on ne peut pas faire de que l’on veut
4
Base graphe
 Modélise, stocke requête des données connectées
 Nos dessins au tableau deviennent le modèle
5
Quand utiliser une base graphe ?
 Les données sont dynamiques
 Les données sont connectées
 Le schéma est flexible
 Le schéma est complexe
 On a besoin des réponses en temps réel
6
Neo4j 7
Neo4j
 Repose sur quatre notions :
 Les nœuds
 Les relations
 Les propriétés des relations
 Les propriétés des nœuds
8
Un exemple 9
Noeuds 10
 Représente une entité qui peut être complexe
 Possède des propriétés
 Un label (ou plusieurs) qui permet de différencier les nœuds (personne, pays, …)
 Représente les attributs de l’entité
 Ou des métadonnées (dates, …)
 Des paires clef/valeur
 Chaque nœud peut posséder des propriétés différentes de celles d’un
autre nœud
 En valeur
 En nature
Relations 11
 Chaque relation possède deux principaux attributs
 Un nom
 Un sens
 Une relation peut porter des propriétés
 Chaque relation possède un nœud de départ et un nœud d’arrivée
 Pas de relations « pendantes »
Relations 12
Nom :
Pierre
Nom :
Sam
Nom :
Paul
Nom :
Lucy
Est ami de
Est ami de
Est ami de
Nom :
Pierre
Est voisin de
Nom :
Paul
Est ami de
Nom :
Pierre
S’est proposé
Le langage : Cypher 13
Personne Personne
Est ami de
(:Personne)-[:EST_AMI_DE]->(:Personne)
Propriétés 14
(:Personne{Nom:pierre})-[:EST_AMI-DE]->(:Personne{Nom:Paul})
Nom : Pierre Nom : Paul
Est ami de
Personne
Personne
Identifiants 15
(p1:Personne{Nom:pierre})-[r:EST_AMI-DE]->(p2:Personne{Nom:Paul})
Nom : Pierre Nom : Paul
Est ami de
Personne
Personne
Requête 16
MATCH (p1:Personne{Nom:pierre})-[r:EST_AMI-DE]->(ses_amis)
RETURN ses_amis
Construction d’un modèle 17
 Une question concrète
 Quelle personnes travaillant dans la même entreprise que moi ont les mêmes
compétences ?
 On identifies les entités
 Quelle personnes travaillant dans la même entreprise que moi ont les mêmes
compétences ?
 On identifies les relations
 Personne TRAVAILLE_POUR entreprise
 Personne POSSEDE compétence
 La structure
 (:Personne)-[:TRAVAILLE_POUR]->(:Entreprise)
 (:Personne)->[:POSSEDE]->(:Compétence)
Schéma global 18
 (:Personne)-[:TRAVAILLE_POUR]->(:Entreprise)
 (:Personne)->[:POSSEDE]->(:Compétence)
 (:Entreprise)<-[:TRAVAILLE_POUR]-(:Personne)-[:POSSEDE]->(:Compétence)
La requête 19
 MATCH (entreprise)<-[:TRAVAILLE_POUR]-(:Personne{nom:patrick})
-[:POSSEDE]->(competence),
(entreprise)<-[TRAVAILLE_POUR]-(college)-[:POSSEDE]->(COMPETENCE)
RETURN college.nom AS nom,
COUNT(competence) AS score
COLLECT(competence.nom) AS compétences
GROUP BY score DESC
Qui a les mêmes compétences que
patrick ?
20
 MATCH (entreprise)<-[:TRAVAILLE_POUR]-(:Personne{nom:patrick})
-[:POSSEDE]->(competence),
(entreprise)<-[TRAVAILLE_POUR]-(college)-[:POSSEDE]->(COMPETENCE)

16 graph databases

  • 1.
    Bases orientées graphe AL’AIDE DE NEO4J
  • 2.
    Des relations  Vousl’avez compris, on collecte de plus en plus de données  Ces données ne vivent pas isolées, elles sont reliées entre elles  Il s’agit donc de modéliser (représenter) dans la base de relations telles que :  Pierre a acheté une 205  Deux entités  Une relation 2
  • 3.
    Avec une base« classique » 3 En rouge les personnes (1 table) En bleu les véhicules (1 table) En jaune les relations entre les deux tables (qui est aussi une table)
  • 4.
    Avec une base« classique »  Plus le nombre d’entités à lier augmente, plus le nombre de tables intermédiaires augmente  L’opération de mise en relation est le JOIN  Plus les tables augmentent en taille, plus la requête est lente (c’est presque le produit cartésien des tables) -> pas forcément adapté au big data  Les schémas sont figés  Avantage : on ne peut pas faire n’importe quoi  Inconvénient : on ne peut pas faire de que l’on veut 4
  • 5.
    Base graphe  Modélise,stocke requête des données connectées  Nos dessins au tableau deviennent le modèle 5
  • 6.
    Quand utiliser unebase graphe ?  Les données sont dynamiques  Les données sont connectées  Le schéma est flexible  Le schéma est complexe  On a besoin des réponses en temps réel 6
  • 7.
  • 8.
    Neo4j  Repose surquatre notions :  Les nœuds  Les relations  Les propriétés des relations  Les propriétés des nœuds 8
  • 9.
  • 10.
    Noeuds 10  Représenteune entité qui peut être complexe  Possède des propriétés  Un label (ou plusieurs) qui permet de différencier les nœuds (personne, pays, …)  Représente les attributs de l’entité  Ou des métadonnées (dates, …)  Des paires clef/valeur  Chaque nœud peut posséder des propriétés différentes de celles d’un autre nœud  En valeur  En nature
  • 11.
    Relations 11  Chaquerelation possède deux principaux attributs  Un nom  Un sens  Une relation peut porter des propriétés  Chaque relation possède un nœud de départ et un nœud d’arrivée  Pas de relations « pendantes »
  • 12.
    Relations 12 Nom : Pierre Nom: Sam Nom : Paul Nom : Lucy Est ami de Est ami de Est ami de Nom : Pierre Est voisin de Nom : Paul Est ami de Nom : Pierre S’est proposé
  • 13.
    Le langage :Cypher 13 Personne Personne Est ami de (:Personne)-[:EST_AMI_DE]->(:Personne)
  • 14.
  • 15.
  • 16.
  • 17.
    Construction d’un modèle17  Une question concrète  Quelle personnes travaillant dans la même entreprise que moi ont les mêmes compétences ?  On identifies les entités  Quelle personnes travaillant dans la même entreprise que moi ont les mêmes compétences ?  On identifies les relations  Personne TRAVAILLE_POUR entreprise  Personne POSSEDE compétence  La structure  (:Personne)-[:TRAVAILLE_POUR]->(:Entreprise)  (:Personne)->[:POSSEDE]->(:Compétence)
  • 18.
    Schéma global 18 (:Personne)-[:TRAVAILLE_POUR]->(:Entreprise)  (:Personne)->[:POSSEDE]->(:Compétence)  (:Entreprise)<-[:TRAVAILLE_POUR]-(:Personne)-[:POSSEDE]->(:Compétence)
  • 19.
    La requête 19 MATCH (entreprise)<-[:TRAVAILLE_POUR]-(:Personne{nom:patrick}) -[:POSSEDE]->(competence), (entreprise)<-[TRAVAILLE_POUR]-(college)-[:POSSEDE]->(COMPETENCE) RETURN college.nom AS nom, COUNT(competence) AS score COLLECT(competence.nom) AS compétences GROUP BY score DESC
  • 20.
    Qui a lesmêmes compétences que patrick ? 20  MATCH (entreprise)<-[:TRAVAILLE_POUR]-(:Personne{nom:patrick}) -[:POSSEDE]->(competence), (entreprise)<-[TRAVAILLE_POUR]-(college)-[:POSSEDE]->(COMPETENCE)