Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Geek Time Novembre 2016 : Neo4j

251 views

Published on

Introduction à Neo4j
Par Oussama BOUDHRI, consultant OLBATI
Au Geek Time de Novembre 2016

Published in: Software
  • Be the first to comment

  • Be the first to like this

Geek Time Novembre 2016 : Neo4j

  1. 1. Geek Time - Novembre 2016 Oussama BOUDHRI Consultant - OLBATI Introduction à Neo4j The Graph Database
  2. 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. 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. 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. 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. 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. 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. 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. 9. OLBATI - Geek Time - November 2016 Les BD relationnelles et ses limites ●Graphe avec Neo4j => C mieux !
  10. 10. OLBATI - Geek Time - November 2016 Du relationnelle DB vers graphe Relationnel Model Graph Model
  11. 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. 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. 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. 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. 15. OLBATI - Geek Time - November 2016 Pourquoi Neo4j?
  16. 16. OLBATI - Geek Time - November 2016 Lexiques Les DB graphes se basent sur 3 concepts: ● Noeuds ● Relations ● Propriétés
  17. 17. OLBATI - Geek Time - November 2016 Lexiques Noeuds et relations Node 1 Node 2 Relationship 1
  18. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 34. OLBATI - Geek Time - November 2016 Scalabilité - Neo4j's Cluster system -
  35. 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. 36. OLBATI - Geek Time - November 2016 Thanks! Any questions? @oboudhri oussama.boudhri@olbati.com

×