geek time novembre 2016 : neo4j

36
Geek Time - Novembre 2016 Oussama BOUDHRI Consultant - OLBATI Introduction à Neo4j The Graph Database

Upload: olbati

Post on 22-Jan-2018

210 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Geek Time Novembre 2016 : Neo4j

Geek Time - Novembre 2016

Oussama BOUDHRI Consultant - OLBATI

Introduction à Neo4j The Graph Database

Page 2: Geek Time Novembre 2016 : Neo4j

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

Page 3: Geek Time Novembre 2016 : Neo4j

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’

Page 4: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Les BD relationnelles et ses limites

ID Country

13 UK

12 Tunisia

15 France

122 China

●Tableau ‘Countries’

Page 5: Geek Time Novembre 2016 : Neo4j

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’

Page 6: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Les BD relationnelles et ses limites

ID Profession

4 engineer

9 doctor

6 driver

24 teacher

●Tableau ‘Professions’

Page 7: Geek Time Novembre 2016 : Neo4j

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

Page 8: Geek Time Novembre 2016 : Neo4j

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

Page 9: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Les BD relationnelles et ses limites

●Graphe avec Neo4j => C mieux !

Page 10: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Du relationnelle DB vers graphe

Relationnel Model Graph Model

Page 11: Geek Time Novembre 2016 : Neo4j

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

Page 12: Geek Time Novembre 2016 : Neo4j

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 ?

Page 13: Geek Time Novembre 2016 : Neo4j

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

Page 14: Geek Time Novembre 2016 : Neo4j

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

Page 15: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Pourquoi Neo4j?

Page 16: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Lexiques

Les DB graphes se basent sur 3 concepts: ●Noeuds ●Relations ●Propriétés

Page 17: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Lexiques

Noeuds et relations

Node 1 Node 2Relationship 1

Page 18: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Lexiques

Label: Person [:WORKS_AT]Id: 1

Name: Greg

Label: CompanyId: 2

Name: OLBATI

Labels et propriétés

Page 19: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

“Cypher” le language de requêtage

●Cypher est le language de requête utilisé par Neo4j pour interagir 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

Page 20: Geek Time Novembre 2016 : Neo4j

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:

Page 21: Geek Time Novembre 2016 : Neo4j

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.

Page 22: Geek Time Novembre 2016 : Neo4j

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

Page 23: Geek Time Novembre 2016 : Neo4j

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

Page 24: Geek Time Novembre 2016 : Neo4j

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

Page 25: Geek Time Novembre 2016 : Neo4j

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.

Page 26: Geek Time Novembre 2016 : Neo4j

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

Page 27: Geek Time Novembre 2016 : Neo4j

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

Page 28: Geek Time Novembre 2016 : Neo4j

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.

Page 29: Geek Time Novembre 2016 : Neo4j

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”

Page 30: Geek Time Novembre 2016 : Neo4j

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

Page 31: Geek Time Novembre 2016 : Neo4j

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

Page 32: Geek Time Novembre 2016 : Neo4j

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

Page 33: Geek Time Novembre 2016 : Neo4j

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

Page 34: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Scalabilité

- Neo4j's Cluster system -

Page 35: Geek Time Novembre 2016 : Neo4j

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

Page 36: Geek Time Novembre 2016 : Neo4j

OLBATI - Geek Time - November 2016

Thanks! Any questions?

@oboudhri [email protected]