SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Geek Time - Novembre 2016
Oussama BOUDHRI
Consultant - OLBATI
Introduction à Neo4j
The Graph Database
OLBATI - Geek Time - November 2016
Top
PLAN
1- Les BD relationnelles et ses limites
2- Du relationnelle DB vers graphe
3- Pourquoi Neo4j?
4- Lexiques
5-“Cypher” comme language de requêtage
6- Transaction, indexation sur Neo4j
7- Conclusion
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
Name Country Hair profession
John UK Red engineer
Ali Tunisia Blond doctor
Kate France Brown teacher
Mary China Brown driver
●Tableau ‘Users’
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
ID Country
13 UK
12 Tunisia
15 France
122 China
●Tableau ‘Countries’
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
Name Country Hair profession
John 13 Red engineer
Ali 12 Blond doctor
Kate 15 Brown teacher
Mary 122 Brown driver
●Tableau ‘Users’
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
ID Profession
4 engineer
9 doctor
6 driver
24 teacher
●Tableau ‘Professions’
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
Name Country Hair profession
John 13 Red 4
Ali 12 Blond 9
Kate 15 Brown 24
Mary 122 Brown 6
●Tableau ‘Users’
=> Difficile à lire
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
●Tables contient des references qui rend
l’identification de la relation difficile à definir
●Nombre de jointure augmentent et rend les requêtes
SQL de plus en plus complex
●Modele de données devient difficle à exploiter avec
l’augmentation des tables et des references
OLBATI - Geek Time - November 2016
Les BD relationnelles et ses limites
●Graphe avec Neo4j => C mieux !
OLBATI - Geek Time - November 2016
Du relationnelle DB vers graphe
Relationnel Model Graph Model
OLBATI - Geek Time - November 2016
Du relationnelle DB vers graphe
RDBMS Graph Database
Tables Graphes
Rows Nodes
Colonne et données Propriétés et valeurs
Jointure Traversée
OLBATI - Geek Time - November 2016
Du relationnelle DB vers graphe
Avant de partir sur une DB graphe, les questions à
poser:
●Les données sont-elles connectées ?
●Les données sont-elles dynamiques ?
●Le schéma DB est t-il flexible ?
OLBATI - Geek Time - November 2016
Du relationnelle DB vers graphe
Exemple Domaine d’application du Graphe DB:
●La gestion des données: système de gestion
hiérarchique basé sur Neo4j
●L’interconnectivité sociale: gestion de la connectivité
grâce aux graphes
●La gestion des réseaux: migration vers les graphes
databases pour gérer la forte connectivité de leurs
clients
OLBATI - Geek Time - November 2016
Pourquoi Neo4j?
● BD écrit en Java
● Open-Source
● Facilité d’apprentissage
● Requête sur les graphes “simple” avec Cypher
● Haute disponibilité: mise en place d’un cluster
● Communauté active
OLBATI - Geek Time - November 2016
Pourquoi Neo4j?
OLBATI - Geek Time - November 2016
Lexiques
Les DB graphes se basent sur 3 concepts:
● Noeuds
● Relations
● Propriétés
OLBATI - Geek Time - November 2016
Lexiques
Noeuds et relations
Node 1 Node 2
Relationship 1
OLBATI - Geek Time - November 2016
Lexiques
Label: Person [:WORKS_AT]
Id: 1
Name: Greg
Label: Company
Id: 2
Name: OLBATI
Labels et propriétés
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Cypher est le language de requête utilisé par Neo4j pour inter
avec la base de données
●Décrire la façon de traverse de données pour récupérer les
résultats
● Language simple et efficace qui vous empêchent de se perdre
dans la formulations de requêtes en base de données
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Exemple d’une requête Cypher
Retourne le noeud “Person” qui a le propriété “name”
est “Steave”
Equivalent en SQL:
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Insertion avec Cypher
Créer un noeud avec l’étiquette “Artist” avec une propriété
“name” qui à la valeur “Strapping young lad”
Le préfixe a est un nom de variable fourni. Cette variable peut
être utilise si nous avons besoin de s’y référer plus tard.
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Afficher le noeud créé
L’instruction CREATE crée le noeud, mais il ne l’affiche pas
Retourner le noeud on utilisant son nom de la variable
(b dans ce cas) pour l’afficher
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Créer des noeuds multiples
Creation de plusieurs noeuds en séparant chaque noeud par
une virgule
Ou on peut utiliser plusieurs instructions CREATE
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Mise à jour d’un noeud
1- On sélectionne la noeud à mettre a jour avec MATCH
2- On change la valeur de la/les propriétés á changer avec SET
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Création d’une relation avec Cypher
Pour créer une relation entre deux nœuds, il faut préalablement
rechercher les deux nœuds, puis créer la ou les relations.
OLBATI - Geek Time - November 2016
“Cypher” le language de requêtage
●Suppression d’un noeud
1- On sélectionne la noeud à supprimer MATCH
2- On supprime le noeud avec l’instruction DELETE
●Suppression un noeud avec ses dépendances
OLBATI - Geek Time - November 2016
Transaction sur Neo4j
• Quand une modification commence, ceci va être avec
une nouvelle transaction ou avec une transaction déja
existante
1- Start transaction
2- Execution des requêtes Cypher
3- Commit transaction
OLBATI - Geek Time - November 2016
Les index sur Neo4j
Un index est une structure de données qui permet
d'améliorer la rapidité de récupération des données dans une
base de données.
OLBATI - Geek Time - November 2016
Les index sur Neo4j
On crée un index avec l’instruction CREATE INDEX ON
Dans l’exemple ci-dessus, nous créons un index sur la
propriété “Name” de tous les index avec l’etiquette “Album”
OLBATI - Geek Time - November 2016
Les index sur Neo4j
Pour consulter les Index sur Neo4j, il suffit de tapper
la commande suivante:
Résultat de la commande =>
OLBATI - Geek Time - November 2016
Les index sur Neo4j
“To index or Not index ?”
Quand Neo4j crée un index, il crée une copie redondante
des données contenues dans la base de données
=> Plus d’espace disk utilisé, plus l’écriture sur disk est lente
OLBATI - Geek Time - November 2016
Les index sur Neo4j
1. En règle générale, on crée un index quand on sait qu’il
va avoir beaucoup de données sur certains noeuds.
Exemple: Liste des produits d’un stock
2. Aussi si la requête prennent trop de temps pour retourner
des résultats, l’ajout d’un index sera utile
OLBATI - Geek Time - November 2016
Scalabilité
La scalabilité désigne :
- Redondance à l'échec
- Gestion de la charge d’augmentation des operations de lectures
- Gestion augmentation de la taille des données
- Gestion de la charge d’augmentation des operations d'écritures
OLBATI - Geek Time - November 2016
Scalabilité
- Neo4j's Cluster system -
OLBATI - Geek Time - November 2016
Conclusion
Neo4j est une nouvelle approche pour :
- Modéliser les données d’une manière efficace
et comprehensible
- Avoir une facilité pour maintenir les données
- Assurer la performance, scalabilité des données
OLBATI - Geek Time - November 2016
Thanks!
Any questions?
@oboudhri
oussama.boudhri@olbati.com

Más contenido relacionado

Similar a Geek Time Novembre 2016 : Neo4j

SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...Vincent Terrasi
 
Scala pour le Data Eng
Scala pour le Data EngScala pour le Data Eng
Scala pour le Data Engunivalence
 
Scala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan WinandyScala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan WinandyParis Data Engineers !
 
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 Neo4jBoris Guarisma
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudriaDavid Pilato
 
Presentation Projet R&D Dynarchi
Presentation Projet R&D Dynarchi Presentation Projet R&D Dynarchi
Presentation Projet R&D Dynarchi Marc Bourhis
 
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 oeuvreMICHRAFY MUSTAFA
 
Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...
Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...
Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...Ametys
 
Morning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMorning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMongoDB
 
Jabes 2013 - Poster du BCU - Clermont Universités
Jabes 2013 - Poster du BCU - Clermont UniversitésJabes 2013 - Poster du BCU - Clermont Universités
Jabes 2013 - Poster du BCU - Clermont UniversitésABES
 
Partie 5 - Neo4j.pdf bd nosql oriente graphe
Partie 5 - Neo4j.pdf bd nosql oriente graphePartie 5 - Neo4j.pdf bd nosql oriente graphe
Partie 5 - Neo4j.pdf bd nosql oriente graphezineblahib2
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasBruno Bonnin
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 
Spark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunitySpark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunityJean-Georges Perrin
 
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BIMeetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BIPhilippe Geiger
 
Partager et collaborer avec Power BI - SQL Saturday Montreal 2017
Partager et collaborer avec Power BI - SQL Saturday Montreal 2017Partager et collaborer avec Power BI - SQL Saturday Montreal 2017
Partager et collaborer avec Power BI - SQL Saturday Montreal 2017Jean-Pierre Riehl
 
Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...AbdeslamAMRANE3
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 

Similar a Geek Time Novembre 2016 : Neo4j (20)

SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
SEO AnswerBox, une méthode inédite pour interroger vos données et créer vos d...
 
Scala pour le Data Eng
Scala pour le Data EngScala pour le Data Eng
Scala pour le Data Eng
 
Scala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan WinandyScala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan Winandy
 
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
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
Presentation Projet R&D Dynarchi
Presentation Projet R&D Dynarchi Presentation Projet R&D Dynarchi
Presentation Projet R&D Dynarchi
 
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
 
Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...
Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...
Refonte intranet du Conseil Général de la Drôme avec le CMS open source Amety...
 
Morning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMorning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast Connect
 
Jabes 2013 - Poster du BCU - Clermont Universités
Jabes 2013 - Poster du BCU - Clermont UniversitésJabes 2013 - Poster du BCU - Clermont Universités
Jabes 2013 - Poster du BCU - Clermont Universités
 
Partie 5 - Neo4j.pdf bd nosql oriente graphe
Partie 5 - Neo4j.pdf bd nosql oriente graphePartie 5 - Neo4j.pdf bd nosql oriente graphe
Partie 5 - Neo4j.pdf bd nosql oriente graphe
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Spark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunitySpark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the Community
 
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BIMeetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
 
Partager et collaborer avec Power BI - SQL Saturday Montreal 2017
Partager et collaborer avec Power BI - SQL Saturday Montreal 2017Partager et collaborer avec Power BI - SQL Saturday Montreal 2017
Partager et collaborer avec Power BI - SQL Saturday Montreal 2017
 
Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...Mise en place d’un moteur de recherche et de recommandation de documents text...
Mise en place d’un moteur de recherche et de recommandation de documents text...
 
Rapport panama papers
Rapport panama papersRapport panama papers
Rapport panama papers
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 

Más de OLBATI

Geek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.jsGeek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.jsOLBATI
 
Geek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz JavaGeek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz JavaOLBATI
 
Geek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/BlockchainGeek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/BlockchainOLBATI
 
Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8OLBATI
 
Geek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : QuizGeek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : QuizOLBATI
 
Geek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : CucumberGeek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : CucumberOLBATI
 
Geek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics ObjectsGeek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics ObjectsOLBATI
 
Geek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy CodeGeek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy CodeOLBATI
 
Geek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting ToolsGeek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting ToolsOLBATI
 
Geek Time Août 2016 : Docker
Geek Time Août 2016 : DockerGeek Time Août 2016 : Docker
Geek Time Août 2016 : DockerOLBATI
 
Geek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.jsGeek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.jsOLBATI
 
Geek Time Juin 2016 : React
Geek Time Juin 2016 : ReactGeek Time Juin 2016 : React
Geek Time Juin 2016 : ReactOLBATI
 

Más de OLBATI (12)

Geek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.jsGeek Time Mai 2017 : Vue.js
Geek Time Mai 2017 : Vue.js
 
Geek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz JavaGeek Time Janvier 2017 : Quiz Java
Geek Time Janvier 2017 : Quiz Java
 
Geek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/BlockchainGeek Time December 2016 : Bitcoin/Blockchain
Geek Time December 2016 : Bitcoin/Blockchain
 
Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8Geek Time December 2016 : Quiz Java 8
Geek Time December 2016 : Quiz Java 8
 
Geek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : QuizGeek Time Novembre 2016 : Quiz
Geek Time Novembre 2016 : Quiz
 
Geek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : CucumberGeek Time Novembre 2016 : Cucumber
Geek Time Novembre 2016 : Cucumber
 
Geek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics ObjectsGeek Time October 2016 : Coding Dojo - Calisthenics Objects
Geek Time October 2016 : Coding Dojo - Calisthenics Objects
 
Geek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy CodeGeek Time September 2016 : Coding Dojo - Working on Legacy Code
Geek Time September 2016 : Coding Dojo - Working on Legacy Code
 
Geek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting ToolsGeek Time September 2016 : JavaScript Linting Tools
Geek Time September 2016 : JavaScript Linting Tools
 
Geek Time Août 2016 : Docker
Geek Time Août 2016 : DockerGeek Time Août 2016 : Docker
Geek Time Août 2016 : Docker
 
Geek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.jsGeek Time Juin 2016 : Node.js
Geek Time Juin 2016 : Node.js
 
Geek Time Juin 2016 : React
Geek Time Juin 2016 : ReactGeek Time Juin 2016 : React
Geek Time Juin 2016 : React
 

Geek Time Novembre 2016 : Neo4j

  • 1. Geek Time - Novembre 2016 Oussama BOUDHRI Consultant - OLBATI Introduction à Neo4j The Graph Database
  • 2. OLBATI - Geek Time - November 2016 Top PLAN 1- Les BD relationnelles et ses limites 2- Du relationnelle DB vers graphe 3- Pourquoi Neo4j? 4- Lexiques 5-“Cypher” comme language de requêtage 6- Transaction, indexation sur Neo4j 7- Conclusion
  • 3. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites Name Country Hair profession John UK Red engineer Ali Tunisia Blond doctor Kate France Brown teacher Mary China Brown driver ●Tableau ‘Users’
  • 4. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites ID Country 13 UK 12 Tunisia 15 France 122 China ●Tableau ‘Countries’
  • 5. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites Name Country Hair profession John 13 Red engineer Ali 12 Blond doctor Kate 15 Brown teacher Mary 122 Brown driver ●Tableau ‘Users’
  • 6. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites ID Profession 4 engineer 9 doctor 6 driver 24 teacher ●Tableau ‘Professions’
  • 7. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites Name Country Hair profession John 13 Red 4 Ali 12 Blond 9 Kate 15 Brown 24 Mary 122 Brown 6 ●Tableau ‘Users’ => Difficile à lire
  • 8. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites ●Tables contient des references qui rend l’identification de la relation difficile à definir ●Nombre de jointure augmentent et rend les requêtes SQL de plus en plus complex ●Modele de données devient difficle à exploiter avec l’augmentation des tables et des references
  • 9. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites ●Graphe avec Neo4j => C mieux !
  • 10. OLBATI - Geek Time - November 2016 Du relationnelle DB vers graphe Relationnel Model Graph Model
  • 11. OLBATI - Geek Time - November 2016 Du relationnelle DB vers graphe RDBMS Graph Database Tables Graphes Rows Nodes Colonne et données Propriétés et valeurs Jointure Traversée
  • 12. OLBATI - Geek Time - November 2016 Du relationnelle DB vers graphe Avant de partir sur une DB graphe, les questions à poser: ●Les données sont-elles connectées ? ●Les données sont-elles dynamiques ? ●Le schéma DB est t-il flexible ?
  • 13. OLBATI - Geek Time - November 2016 Du relationnelle DB vers graphe Exemple Domaine d’application du Graphe DB: ●La gestion des données: système de gestion hiérarchique basé sur Neo4j ●L’interconnectivité sociale: gestion de la connectivité grâce aux graphes ●La gestion des réseaux: migration vers les graphes databases pour gérer la forte connectivité de leurs clients
  • 14. OLBATI - Geek Time - November 2016 Pourquoi Neo4j? ● BD écrit en Java ● Open-Source ● Facilité d’apprentissage ● Requête sur les graphes “simple” avec Cypher ● Haute disponibilité: mise en place d’un cluster ● Communauté active
  • 15. OLBATI - Geek Time - November 2016 Pourquoi Neo4j?
  • 16. OLBATI - Geek Time - November 2016 Lexiques Les DB graphes se basent sur 3 concepts: ● Noeuds ● Relations ● Propriétés
  • 17. OLBATI - Geek Time - November 2016 Lexiques Noeuds et relations Node 1 Node 2 Relationship 1
  • 18. OLBATI - Geek Time - November 2016 Lexiques Label: Person [:WORKS_AT] Id: 1 Name: Greg Label: Company Id: 2 Name: OLBATI Labels et propriétés
  • 19. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Cypher est le language de requête utilisé par Neo4j pour inter avec la base de données ●Décrire la façon de traverse de données pour récupérer les résultats ● Language simple et efficace qui vous empêchent de se perdre dans la formulations de requêtes en base de données
  • 20. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Exemple d’une requête Cypher Retourne le noeud “Person” qui a le propriété “name” est “Steave” Equivalent en SQL:
  • 21. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Insertion avec Cypher Créer un noeud avec l’étiquette “Artist” avec une propriété “name” qui à la valeur “Strapping young lad” Le préfixe a est un nom de variable fourni. Cette variable peut être utilise si nous avons besoin de s’y référer plus tard.
  • 22. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Afficher le noeud créé L’instruction CREATE crée le noeud, mais il ne l’affiche pas Retourner le noeud on utilisant son nom de la variable (b dans ce cas) pour l’afficher
  • 23. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Créer des noeuds multiples Creation de plusieurs noeuds en séparant chaque noeud par une virgule Ou on peut utiliser plusieurs instructions CREATE
  • 24. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Mise à jour d’un noeud 1- On sélectionne la noeud à mettre a jour avec MATCH 2- On change la valeur de la/les propriétés á changer avec SET
  • 25. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Création d’une relation avec Cypher Pour créer une relation entre deux nœuds, il faut préalablement rechercher les deux nœuds, puis créer la ou les relations.
  • 26. OLBATI - Geek Time - November 2016 “Cypher” le language de requêtage ●Suppression d’un noeud 1- On sélectionne la noeud à supprimer MATCH 2- On supprime le noeud avec l’instruction DELETE ●Suppression un noeud avec ses dépendances
  • 27. OLBATI - Geek Time - November 2016 Transaction sur Neo4j • Quand une modification commence, ceci va être avec une nouvelle transaction ou avec une transaction déja existante 1- Start transaction 2- Execution des requêtes Cypher 3- Commit transaction
  • 28. OLBATI - Geek Time - November 2016 Les index sur Neo4j Un index est une structure de données qui permet d'améliorer la rapidité de récupération des données dans une base de données.
  • 29. OLBATI - Geek Time - November 2016 Les index sur Neo4j On crée un index avec l’instruction CREATE INDEX ON Dans l’exemple ci-dessus, nous créons un index sur la propriété “Name” de tous les index avec l’etiquette “Album”
  • 30. OLBATI - Geek Time - November 2016 Les index sur Neo4j Pour consulter les Index sur Neo4j, il suffit de tapper la commande suivante: Résultat de la commande =>
  • 31. OLBATI - Geek Time - November 2016 Les index sur Neo4j “To index or Not index ?” Quand Neo4j crée un index, il crée une copie redondante des données contenues dans la base de données => Plus d’espace disk utilisé, plus l’écriture sur disk est lente
  • 32. OLBATI - Geek Time - November 2016 Les index sur Neo4j 1. En règle générale, on crée un index quand on sait qu’il va avoir beaucoup de données sur certains noeuds. Exemple: Liste des produits d’un stock 2. Aussi si la requête prennent trop de temps pour retourner des résultats, l’ajout d’un index sera utile
  • 33. OLBATI - Geek Time - November 2016 Scalabilité La scalabilité désigne : - Redondance à l'échec - Gestion de la charge d’augmentation des operations de lectures - Gestion augmentation de la taille des données - Gestion de la charge d’augmentation des operations d'écritures
  • 34. OLBATI - Geek Time - November 2016 Scalabilité - Neo4j's Cluster system -
  • 35. OLBATI - Geek Time - November 2016 Conclusion Neo4j est une nouvelle approche pour : - Modéliser les données d’une manière efficace et comprehensible - Avoir une facilité pour maintenir les données - Assurer la performance, scalabilité des données
  • 36. OLBATI - Geek Time - November 2016 Thanks! Any questions? @oboudhri oussama.boudhri@olbati.com