SlideShare une entreprise Scribd logo
BD NoSQL Orientée Graphe
« Neo4j »
n.soussi@usms.ma
Bases de Données NoSQL & Calcul Distribués
Pr. SOUSSI Nassima
Introduction sur la BD
Neo4j
2
Bases de Données NoSQL & Calcul Distribués
Introduction sur Neo4j
3
Présentation générale
Bases de Données NoSQL & Calcul Distribués
‒ Neo4j est une base de données orientée graphe, libre et
écrite en Java.
‒ Développée par Neo Technology (une société suédoise): les
premières lignes de codes datent de l'année 2000 et la version
1.0 est sortie en 2010.
‒ Elle est l'une des premières bases de données orientées
graphes, mais aussi l'une des plus évoluées et robustes.
Introduction sur Neo4j
4
Caractéristiques
Bases de Données NoSQL & Calcul Distribués
 Haute disponibilité : Fonctionnement en cluster possible (peut
répartir la charge sur plusieurs serveur)
 Volumétrie : stocker et requêter des milliards de nœuds et de
relations;
 Cypher : langage d’interrogation de la base à travers HTTP =>
Langage très simple et très puissant
 Schemaless : pas de schéma préétabli.
Introduction sur Neo4j
5
Modèle de données : Eléments de base
Bases de Données NoSQL & Calcul Distribués
 Le nœud est l’unité fondamentale qui constitue un graphe :
Peut être associé à des labels et peut posséder des propriétés
Un nœud peut posséder plusieurs labels
 Une relation connecte deux nœuds avec une direction : Peut
également posséder des propriétés.
 Propriétés pour les nœuds et relations comme paires clé-
valeur : Valeurs de type nombre, chaine de caractères, booléen et
listes.
Introduction sur Neo4j
6
Bases de Données NoSQL & Calcul Distribués
Modèle de données : Exemple 1
Introduction sur Neo4j
7
Bases de Données NoSQL & Calcul Distribués
Modèle de données : Exemple 2
Cypher Query Language
8
Bases de Données NoSQL & Calcul Distribués
Cypher Query Language
9
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher
‒ Cypher est un langage déclaratif permettant de requêter et
mettre à jour le graphe.
‒ Inspiré du SQL, on y retrouve beaucoup de concepts
familiers, comme les clauses WHERE, ORDER BY, SKYP,
LIMIT…
‒ Son objectif est de permettre à l'utilisateur de définir des
motifs, qui seront par la suite recherchés dans tout le graphe.
Cypher Query Language
10
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher
Exemple : je veux les amis de mes amis.
Dans ce cas il faut décrire le pattern suivant :
 le pattern textuelle est comme suit :
(moi) -[:AMI]-> (mesAmis) -[:AMI]-> (amisDeMesAmis)
Cypher Query Language
11
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Noeud
‒ Les nœuds sont représentés avec des parenthèses, ce qui
ressemble à des cercles : ()
‒ Pour spécifier un label, il suffit de l'ajouter comme
ceci : (monNoeud:monLabel)
‒ Si vous avez besoin d'identifier le nœud dans votre requête
(dans une clause WHERE par exemple), il suffit de lui donner un
nom : (monNoeud)
Cypher Query Language
12
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Noeud
Voici quelques exemples :
 () : n'importe quel nœud ;
 (:Personne) : un nœud avec le label Personne ;
 (n:Personne) : un nœud identifié dans la variable n avec le
label Personne ;
 (n:Personne:Acteur) : un nœud identifié dans la variable n avec
le label Personne et Acteur.
Cypher Query Language
13
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Relation
‒ Les relations sont représentées par deux tirets avec un '>',
ce qui ressemble à une flèche : -->
‒ Si vous avez besoin d'identifier la relation dans votre
requête, vous pouvez lui donner un nom comme ceci : -
[maRelation]->
‒ Pour spécifier le type de la relation, il suffit de l'ajouter
comme ceci : -[maRelation:MON_TYPE]->
Cypher Query Language
14
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Relation
Voici quelques exemples :
 (a)--(b) : n'importe quelle relation entre le nœud a et b (peu
importe la direction) ;
 (a)-[:AMI]->(b) : relation de type AMI depuis le nœud a vers
le nœud b ;
 (a)-[r:AMI|CONNAIT]->(b) : relation identifiée dans la
variable r de type AMI ou CONNAIT depuis le nœud a vers le
nœud b.
Cypher Query Language
15
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Exemple de Pattern
Cypher Query Language
16
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Création
 CREATE : crée des nœuds, des relations et des patterns
 MERGE : crée aussi des nœuds, des relations et des modèles
si le pattern n’existe pas.
Cypher Query Language
17
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Création
 Création d’un nœud :
1. CREATE (a:student{ name: ‘Ahmed Fizazi’, DateNais : 1999})
2. CREATE (b:student{name: ‘Sara Bennani’, DateNais : 2001}),
(t:teacher:director{ name: ‘Mohamed Amine’, age:49})
3. MERGE (ah:student{ name: ‘Ahmed Fizazi’, DateNais : 1999})
Cypher Query Language
18
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Création
 Création d’une relation :
MATCH (a:student), (t:teacher)
WHERE a.name = ‘Ahmed Fizazi’ and t.name=‘Mohamed Amine’
CREATE (t)-[r:enseigne]->(a)
RETURN a,r,t
Cypher Query Language
19
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Lecture
 MATCH : le moyen le plus simple d'obtenir des données à
partir du graphe
 WHERE : Filtrer les résultats à l'aide de conditions
Cypher Query Language
20
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Lecture
 RETURN :
‒ Permet de retourner le résultat voulu.
‒ Peut être utilisé avec SKIP/LIMIT et ORDER BY
Cypher Query Language
21
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Lecture
 RETURN :
‒ Les données retournées peuvent être des : nœuds,
propriétés ou patterns.
‒ Affichagede tout le graphe :
MATCH (n) RETURN (n)
Cypher Query Language
22
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Ajouter
 SET :
‒ Ajoute ou met à jour les propriétés (sur les nœuds et les
relations) et les labels (uniquement sur les nœuds)
Cypher Query Language
23
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Suppression
 DELETE :
‒ Supprimer des nœuds et des relations.
‒ Lors de la suppression d'un nœud, utilisez DETACH
pour supprimer d'abord ses relations.
‒ Supprimer tous le graphe :
MATCH (n) DETACH RETURN (n)
Cypher Query Language
24
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher : Suppression
 REMOVE :
Supprimer les propriétés d'un nœud ou d'une relation.
Cypher Query Language
25
Bases de Données NoSQL & Calcul Distribués
Le langage Cypher
Documentation officielle :
https://neo4j.com/docs/cypher-manual/current/clauses/

Contenu connexe

Tendances

Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
JEMLI Fathi
 

Tendances (20)

Merise
MeriseMerise
Merise
 
Chapitre2_fragmentation_Abdali.pptx
Chapitre2_fragmentation_Abdali.pptxChapitre2_fragmentation_Abdali.pptx
Chapitre2_fragmentation_Abdali.pptx
 
Base de données graphe et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4j
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
 
Base de données graphe, Noe4j concepts et mise en oeuvre
Base de données graphe, Noe4j concepts et mise en oeuvreBase de données graphe, Noe4j concepts et mise en oeuvre
Base de données graphe, Noe4j concepts et mise en oeuvre
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
 
Spark
SparkSpark
Spark
 
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursBases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
 
Présentation des bases de données NoSql
Présentation des bases de données NoSqlPrésentation des bases de données NoSql
Présentation des bases de données NoSql
 
Cours bases de données partie 1 Prof. Khalifa MANSOURI
Cours bases de données partie 1 Prof. Khalifa MANSOURICours bases de données partie 1 Prof. Khalifa MANSOURI
Cours bases de données partie 1 Prof. Khalifa MANSOURI
 
Presentation sql
Presentation sqlPresentation sql
Presentation sql
 
Diaporamas-Bases de données.pdf
Diaporamas-Bases de données.pdfDiaporamas-Bases de données.pdf
Diaporamas-Bases de données.pdf
 
Introduction aux bases de données
Introduction aux bases de donnéesIntroduction aux bases de données
Introduction aux bases de données
 
Database/ Bases de données
Database/ Bases de donnéesDatabase/ Bases de données
Database/ Bases de données
 
Techniques du data mining
Techniques du data miningTechniques du data mining
Techniques du data mining
 

Similaire à Partie 5 - Neo4j.pdf bd nosql oriente graphe

Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Neo4j
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi
 

Similaire à Partie 5 - Neo4j.pdf bd nosql oriente graphe (20)

Introduction NoSQL 201401 - Ensim
Introduction NoSQL 201401 - EnsimIntroduction NoSQL 201401 - Ensim
Introduction NoSQL 201401 - Ensim
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
 
Adopte une BDD
Adopte une BDDAdopte une BDD
Adopte une BDD
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.less
 
Neo4j
Neo4jNeo4j
Neo4j
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Geek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4jGeek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4j
 
Roslyn
RoslynRoslyn
Roslyn
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
Rapport panama papers
Rapport panama papersRapport panama papers
Rapport panama papers
 
Serveur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementServeur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développement
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 
Certification mcse data platform
Certification mcse data platformCertification mcse data platform
Certification mcse data platform
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudoux
 
xml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.pptxml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.ppt
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 

Partie 5 - Neo4j.pdf bd nosql oriente graphe

  • 1. BD NoSQL Orientée Graphe « Neo4j » n.soussi@usms.ma Bases de Données NoSQL & Calcul Distribués Pr. SOUSSI Nassima
  • 2. Introduction sur la BD Neo4j 2 Bases de Données NoSQL & Calcul Distribués
  • 3. Introduction sur Neo4j 3 Présentation générale Bases de Données NoSQL & Calcul Distribués ‒ Neo4j est une base de données orientée graphe, libre et écrite en Java. ‒ Développée par Neo Technology (une société suédoise): les premières lignes de codes datent de l'année 2000 et la version 1.0 est sortie en 2010. ‒ Elle est l'une des premières bases de données orientées graphes, mais aussi l'une des plus évoluées et robustes.
  • 4. Introduction sur Neo4j 4 Caractéristiques Bases de Données NoSQL & Calcul Distribués  Haute disponibilité : Fonctionnement en cluster possible (peut répartir la charge sur plusieurs serveur)  Volumétrie : stocker et requêter des milliards de nœuds et de relations;  Cypher : langage d’interrogation de la base à travers HTTP => Langage très simple et très puissant  Schemaless : pas de schéma préétabli.
  • 5. Introduction sur Neo4j 5 Modèle de données : Eléments de base Bases de Données NoSQL & Calcul Distribués  Le nœud est l’unité fondamentale qui constitue un graphe : Peut être associé à des labels et peut posséder des propriétés Un nœud peut posséder plusieurs labels  Une relation connecte deux nœuds avec une direction : Peut également posséder des propriétés.  Propriétés pour les nœuds et relations comme paires clé- valeur : Valeurs de type nombre, chaine de caractères, booléen et listes.
  • 6. Introduction sur Neo4j 6 Bases de Données NoSQL & Calcul Distribués Modèle de données : Exemple 1
  • 7. Introduction sur Neo4j 7 Bases de Données NoSQL & Calcul Distribués Modèle de données : Exemple 2
  • 8. Cypher Query Language 8 Bases de Données NoSQL & Calcul Distribués
  • 9. Cypher Query Language 9 Bases de Données NoSQL & Calcul Distribués Le langage Cypher ‒ Cypher est un langage déclaratif permettant de requêter et mettre à jour le graphe. ‒ Inspiré du SQL, on y retrouve beaucoup de concepts familiers, comme les clauses WHERE, ORDER BY, SKYP, LIMIT… ‒ Son objectif est de permettre à l'utilisateur de définir des motifs, qui seront par la suite recherchés dans tout le graphe.
  • 10. Cypher Query Language 10 Bases de Données NoSQL & Calcul Distribués Le langage Cypher Exemple : je veux les amis de mes amis. Dans ce cas il faut décrire le pattern suivant :  le pattern textuelle est comme suit : (moi) -[:AMI]-> (mesAmis) -[:AMI]-> (amisDeMesAmis)
  • 11. Cypher Query Language 11 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Noeud ‒ Les nœuds sont représentés avec des parenthèses, ce qui ressemble à des cercles : () ‒ Pour spécifier un label, il suffit de l'ajouter comme ceci : (monNoeud:monLabel) ‒ Si vous avez besoin d'identifier le nœud dans votre requête (dans une clause WHERE par exemple), il suffit de lui donner un nom : (monNoeud)
  • 12. Cypher Query Language 12 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Noeud Voici quelques exemples :  () : n'importe quel nœud ;  (:Personne) : un nœud avec le label Personne ;  (n:Personne) : un nœud identifié dans la variable n avec le label Personne ;  (n:Personne:Acteur) : un nœud identifié dans la variable n avec le label Personne et Acteur.
  • 13. Cypher Query Language 13 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Relation ‒ Les relations sont représentées par deux tirets avec un '>', ce qui ressemble à une flèche : --> ‒ Si vous avez besoin d'identifier la relation dans votre requête, vous pouvez lui donner un nom comme ceci : - [maRelation]-> ‒ Pour spécifier le type de la relation, il suffit de l'ajouter comme ceci : -[maRelation:MON_TYPE]->
  • 14. Cypher Query Language 14 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Relation Voici quelques exemples :  (a)--(b) : n'importe quelle relation entre le nœud a et b (peu importe la direction) ;  (a)-[:AMI]->(b) : relation de type AMI depuis le nœud a vers le nœud b ;  (a)-[r:AMI|CONNAIT]->(b) : relation identifiée dans la variable r de type AMI ou CONNAIT depuis le nœud a vers le nœud b.
  • 15. Cypher Query Language 15 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Exemple de Pattern
  • 16. Cypher Query Language 16 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Création  CREATE : crée des nœuds, des relations et des patterns  MERGE : crée aussi des nœuds, des relations et des modèles si le pattern n’existe pas.
  • 17. Cypher Query Language 17 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Création  Création d’un nœud : 1. CREATE (a:student{ name: ‘Ahmed Fizazi’, DateNais : 1999}) 2. CREATE (b:student{name: ‘Sara Bennani’, DateNais : 2001}), (t:teacher:director{ name: ‘Mohamed Amine’, age:49}) 3. MERGE (ah:student{ name: ‘Ahmed Fizazi’, DateNais : 1999})
  • 18. Cypher Query Language 18 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Création  Création d’une relation : MATCH (a:student), (t:teacher) WHERE a.name = ‘Ahmed Fizazi’ and t.name=‘Mohamed Amine’ CREATE (t)-[r:enseigne]->(a) RETURN a,r,t
  • 19. Cypher Query Language 19 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Lecture  MATCH : le moyen le plus simple d'obtenir des données à partir du graphe  WHERE : Filtrer les résultats à l'aide de conditions
  • 20. Cypher Query Language 20 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Lecture  RETURN : ‒ Permet de retourner le résultat voulu. ‒ Peut être utilisé avec SKIP/LIMIT et ORDER BY
  • 21. Cypher Query Language 21 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Lecture  RETURN : ‒ Les données retournées peuvent être des : nœuds, propriétés ou patterns. ‒ Affichagede tout le graphe : MATCH (n) RETURN (n)
  • 22. Cypher Query Language 22 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Ajouter  SET : ‒ Ajoute ou met à jour les propriétés (sur les nœuds et les relations) et les labels (uniquement sur les nœuds)
  • 23. Cypher Query Language 23 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Suppression  DELETE : ‒ Supprimer des nœuds et des relations. ‒ Lors de la suppression d'un nœud, utilisez DETACH pour supprimer d'abord ses relations. ‒ Supprimer tous le graphe : MATCH (n) DETACH RETURN (n)
  • 24. Cypher Query Language 24 Bases de Données NoSQL & Calcul Distribués Le langage Cypher : Suppression  REMOVE : Supprimer les propriétés d'un nœud ou d'une relation.
  • 25. Cypher Query Language 25 Bases de Données NoSQL & Calcul Distribués Le langage Cypher Documentation officielle : https://neo4j.com/docs/cypher-manual/current/clauses/