48
NOSQL: BASE DE DONNÉES GRAPHE, NOE4J, CONCEPTS ET MISE EN ŒUVRE MODÉLISATION ET IMPLÉMENTATION DU CAS DUSAGE SLIDESSHARE.NET DR MUSTAPHA MICHRAFY CONTACT : DATASCIENCE.KM@GMAIL.COM

Base de données graphe, Noe4j concepts et mise en oeuvre

Embed Size (px)

Citation preview

Page 1: Base de données graphe, Noe4j concepts et mise en oeuvre

NOSQL: BASE DE DONNÉES GRAPHE, NOE4J, CONCEPTS ET MISE EN ŒUVRE

MODÉLISATION ET IMPLÉMENTATION DU CAS D’USAGE SLIDESSHARE.NET

DR MUSTAPHA MICHRAFY

CONTACT : [email protected]

Page 2: Base de données graphe, Noe4j concepts et mise en oeuvre

PLAN

1. Contexte

2. Objectif et prérequis

3. Les base de données NoSQL

4. Les modèles NoSQL : axes volume et complexité

5. Classification des bases de données NoSQL

6. Modèle graphe : pour quelle activité

7. Concepts des Bases de données Graphe

8. Base de données graphe : force et faiblesse

9. D’une BD relationnelle vers une BD graphe

10.Console web Neo4j

11.Le langage de requêtes Cypher12. Les clauses dans Cypher

13. Les fonctions dans Cypher

14.Les distributions Neo4j

15. Les drivers de la base16. Types de données supportés

17. Mise en œuvre avec Cypher

2

M.MICHRAFY

Page 3: Base de données graphe, Noe4j concepts et mise en oeuvre

CONTEXTE

Cette étude a été menée dans le cadre des rencontres de travail

organisées au Laboratoire CERMSEM, dans le cadre du séminaire

« DataScience, concepts et applications », Centre d'Économie de la

Sorbonne (CES).

Elle vise à présenter les différentes opérations portant sur la

préparation des données

3

M.MICHRAFY

Page 4: Base de données graphe, Noe4j concepts et mise en oeuvre

OBJECTIF ET PRÉREQUIS

• Notions de graphes

• Notions de SQL

• Expressions régulières ou pattern maching

Cette étude vise à présenter les concepts

clés d’une base de données orientée

graphe. La modélisation et la mise en œuvre

des cas d’utilisation seront réalisées avec la

base de données NEO4J, version 3.1.

PrérequisObjectif

4

M.MICHRAFY

Page 5: Base de données graphe, Noe4j concepts et mise en oeuvre

BASE DE DONNÉES GRAPHE NEO4J?

• Adaptée pour la modélisation des réseaux

sociaux

• Adaptée pour les données fortement

connectées

• Adapté pour parcourir des modèles complexes

à partir d'un ou de plusieurs points de départ.

• Dispose d’un langage d’interrogation similaire

à SQL

• Concepts basés sur la théorie des graphes

• Modèle de données accessibles au métier

• Langage, similaire à SQL, pour la manipulation

des données de la base

• API pour différents langages ( JAVA, SCALA,

Python, R, ….)

• API REST

Motivations? Fonctionnalités

5

M.MICHRAFY

Page 6: Base de données graphe, Noe4j concepts et mise en oeuvre

LES BASE DE DONNÉES NOSQL

6

Les bases de données de type clé/valeur sont

basiques.

Chaque objet est identifié par une clé unique.

Elles offrent de meilleurs performances.

Pas de schéma disponible

Adaptée à le gestion des évènements, à la gestion

des traces, ect.

BD orientées Clé/Valeur : Accumulo, Dynamo,

Voldemort, Redis, Riak

BD de type Clé/Valeur

Elle stocke les données par colonne et non par ligne.

Elle est proche des bases de données relationnelles.

La mise en œuvre est relativement complexe.

Ce type de base de données fait appel aux notions

de clé et famille de colonnes.

BD orientées colonne : Hbase, Cassendra, Hypertable,

BigTable

BD de type Colonne

Collections de documents, composés chacun de

champs et de valeurs associées,

Les valeurs peuvent être requêtées

Adaptée au stockage de profils utilisateur, aux

données session, au contenu d’une page web, ect.

BD orientées document : MongoDB CouchDB,

Couchbase

BD de type document

Elle est adaptée pour la gestion des donnéesfortement interconnectées, s’inspire des graphes,

composée de nœuds et de relations matérialisant des

liens entre les nœuds.

BD orientées graphe : ArangoDB, FlockDB, Orientdb,

BD de type Graphe

Les BD NoSQL n’ont pas vocation à remplacer les bases de données relationnelles.

Chaque base de données répond a un besoin et adapté pour un cas d’usage.

Page 7: Base de données graphe, Noe4j concepts et mise en oeuvre

LES MODÈLES NOSQL : AXES VOLUME ET COMPLEXITÉ

7

Orientée Clé/valeur

Orientée Colonne

Orientée Document

Orientée Graphe

Vo

lum

e d

e d

on

née

s

Complexité des données

Page 8: Base de données graphe, Noe4j concepts et mise en oeuvre

CLASSIFICATION DES BASES DE DONNÉES NOSQL

8

NoSQLColonne

Document

Clé/valeur

Graphe

Dynamo

Redis Riak

Voldemort

Accumulo

Hbase

Cassendra

Hypertable

BigTable

MongoDB CouchDBCouchbase

NEO4J

ArangoDB

FlockDB

Orientdb

Page 9: Base de données graphe, Noe4j concepts et mise en oeuvre

MODÈLE GRAPHE : POUR QUELLE ACTIVITÉ

9

Graphe

Base de données Graphe

Graphe pour le « processing »

Ce modèle est adapté

pour le stockage de

données.

Ce sont les API

proposant des

algorithmes venant de

la théorie des graphes

Important : Ici, nous présentons les base de données graphe pour le

stockage de données

Page 10: Base de données graphe, Noe4j concepts et mise en oeuvre

BASE DE DONNÉES GRAPHE : CONCEPTS

10

• Une base de données

orientée graphe vise à

modéliser et stocker des

données sous forme de

graphe

• Pour cela, il s’appuie sur :

• Les nœuds

• Les relations : pour relier

les nœuds

• Propriétés : données

sous forme de clé -

valeurs

Modélisation

• Le modèle de données est

un ensemble de nœuds qui

sont reliés par des relations.

• Les nœuds et les relations

sont typés, c-à-d, ils sont

associés à un même label.

• Les relations sont orientées

• Des données sous forme de

clé/valeur sont stockées

dans les nœuds et les

relations.

Modèle de donnéesGraphe

Nœud Relation

données

Se compose

Relie

Page 11: Base de données graphe, Noe4j concepts et mise en oeuvre

LES CONCEPTS DE NEO4J

11

Schema

Paths

Propriétés

Contraints

Index

Noeuds Relations

Labels

Concepts

• Nœuds : dans un graphe, nous avons des nœuds qui sont reliés. Pour un réseau de Metro, les nœuds

désignent les stations et dans un réseau social, le

nœud désigne la personne.

• Relations : elles matérialisent le lien entre deux nœuds. Pour le réseau de métro, les relations représentent la

distance ou le temps de parcours.

• Propriétés : permet de persister des données sous forme de clé/valeur pour les nœuds ou relations

• Labels : ils permettent d’associer un rôle ou un type à un nœud.

• Path : il désigne un chemin entre deux nœuds

• Index : une structure de donnée associée à des nœuds ou des relations favorisant la performance.

• Contraintes : elles permettent de renforcer l’intégrité des données (nœuds et relations).

• Schema : la notion de « schema », en Neo4j, est optionnel. Il s’applique seulement sur la machine

maitre dans un cluster Neo4j.

• Traversal : les stratégies de parcours pour identifier un path.

Traversal

Page 12: Base de données graphe, Noe4j concepts et mise en oeuvre

BASE DE DONNÉES GRAPHE : FORCE ET FAIBLESSE

12

Des gains de performance :• la performance des BD orientées graphe restent

identiques quand le jeu de données s'accroît.

• Ce n’est pas le cas pour les BD relationnelles, les

performances des requêtes se dégradent avec

la croissance des jointures

Des gains de flexibilité :

• L’ajout des nœuds et des relations n’impactentni les requetés ni les cas d’usage développés.

Des gains d’agilité• Le modèle de données graphe favorise

l’évolution de la base en cohérence avec les

nouveaux cas d’usage métier

• Le modèle de données graphe favorise

l’échange avec le métier.

Partitionnement des graphe

• Les bases de données Graphe rencontrent

parfois des problèmes de partitionnement

puisque il est difficile d’opérer un partitionnement

d’un graphe en tenant compte les latences de

réseau.

Calcul agrégé pour un volume important• Les BD orientées graphe ne sont pas adaptées

pour le calcul agrégé pour un volume important

de données. Dans ce cas, il est pertinent

d’explorer une BD relationnelle ou une base de

données orientée colonne.

Force Faiblesse

Page 13: Base de données graphe, Noe4j concepts et mise en oeuvre

D’UNE BD RELATIONNELLE VERS UNE BD GRAPHE

13

TableLigne d’une Table

Clé étrangère

Label Nœud Relation

Colonnesd’une table

Propriétés

Page 14: Base de données graphe, Noe4j concepts et mise en oeuvre

14

BASE DE DONNÉES ORIENTÉE GRAPHE : EXEMPLE SYSTÈME DE FICHIER

Root

DirectoryC

DirectoryD File

F

• Un système de fichiers dispose d’un nœud

racine.

• Il est composé de répertoire et fichiers

• Chaque répertoire peut comporter des

dossiers et de fichiers

• Un nœud désigne un dossier ou un fichier• Le nœud Root n’a pas de parent

• La relation entre deux nœud est « Parent

de ». • Dans notre cas, Root est parent de tout

les nœuds. « C » est un parent du

fichier « F » et du dossier « D »

Parent_de

Parent_deParent_de

Page 15: Base de données graphe, Noe4j concepts et mise en oeuvre

BASE DE DONNÉES ORIENTÉE GRAPHE : EXEMPLE FLIGHT

15

AirPort AirPort

Flight

Ticket

destinationorigination

assign

• Un vol est associé à

• Un Airport de départ

• Et un Airport de destination

• Un vol est associé à un horaire :

• Heure de départ

• Heure d’arrivé

• Ticket est associé à un vol.

Page 16: Base de données graphe, Noe4j concepts et mise en oeuvre

BASE DE DONNÉES ORIENTÉE GRAPHE : EXEMPLE DE SLIDESHARE.NET 1/2

16

StefanClaire

Apache Spark

Scala

Joe

Java 8

Follow

Follow

LikeLanguage

BigData

Like

Category of

Page 17: Base de données graphe, Noe4j concepts et mise en oeuvre

BASE DE DONNÉES ORIENTÉE GRAPHE : EXEMPLE DE SLIDESHARE.NET 2/2

17

Person Person

Slides

Flow

Licence

Domaine

Category of

Like

Person

VisualiseHas a

Person

Comment

• SlideShare est un site web d'hébergement et de partage de

présentations et d'autres contenus

professionnels.

• Les personnes peuvent publier, visualiser,

commenter, télécharger, ou apprécier

une présentation.

• Un adhérent peut suivre un autre

adhérent

Page 18: Base de données graphe, Noe4j concepts et mise en oeuvre

CONSOLE WEB NEO4J

18

Console est une interface web,basé sur une API REST

Cette console est accessible par

défaut sur le port 7474.

Elle est adaptée pour le test et le

prototypage

Cette console permet :

d’éditer, et d’exécuter des

requêtes

de visualiser le résultat de la

requête sous forme d’un

graphe

de visualiser les nœuds sous

d’autres format

de visualiser la réponse du

serveur Neo4j.

d’exporter le résultat de retour

sous différents formats (CSV,

JSON, SVG, PNG)

Console ? Il permet d’éditer une requête, sur

plusieurs lignes ; il basé sur le

langage d’interrogation Cypher.

Supporte la coloration syntaxique

Permet d’exécuter la requête

permet de mémoriser ou d’annuler

une requête.

Editeur

L’onglet Graphe : de visualiser lerésultat de lail permet requête

exécutée sous forme d’un graphe

L’onglet ROWS : Il offre aussi lapossibilité de voir les nœuds

comme des tables.

L’onglet TEXT permet de voir lesnœuds en format JSON

L’onglet code affiche la réponsedu serveur Neo4j. C’est le résultat

de l’API REST. Le format est JSON.

Interface de visualisation

Page 19: Base de données graphe, Noe4j concepts et mise en oeuvre

LE LANGAGE DE REQUÊTES CYPHER

19

CYPHER est le langaged’interrogation de la base de

données NEO4J.

Cypher est un langage déclaratif.

Il s’appuie sur des motifs (pattern)

pour décrire ou interroger la base

de données

Il utilise une syntaxe similaire à celle

de SQL et insensible à la casse

CYPHER? Le langage CYPHER permet de

créer des nœuds et aussi des

relations.

Il s’agit d’une opération d’écriture

puisqu’elle permet de créer et

persister des nœuds et des relations

dans la base.

Opération : Créer

CYPHER permet d’interroger la base

de données pour extraire des

données respectant un motif (

pattern)

La syntaxe utilisée est similaire aux

expressions régulières (pattern

matching)

Opération : rechercher

Comme toutes les bases de

données, il est possible d’analyser

une requête d’écriture ou de

lecture.

Opération : profiling

Page 20: Base de données graphe, Noe4j concepts et mise en oeuvre

LES CLAUSES DANS CYPHER

20

Clause

Clause d’écriture

Clause de lecture

Clause générale

• Une clause est une sorte d’opération/primitive en Cypher.

• La clause est une notion fondamentale.

• elles sont dédiées à la création des nœuds, des relations, à

la recherche des données dans le graphe, au filtrage, au

projection, au trie des données, etc.

• En Neo4j, nous distinguons 3 type de clauses :

1. Clauses de lecture : ce sont des opérations de filtrage

ou de recherche de données dans la base selon des

critères spécifiques.

2. Clauses d’écriture : ce sont des opérations permettant

de créer, supprimer ou modifier des données (nœuds

relations, ou propriétés)

3. Clauses générales : ce sont des opérations qui ne font

partie ni de clauses de lecture ni de clause d’écriture

Est-un

Page 21: Base de données graphe, Noe4j concepts et mise en oeuvre

LE LANGAGE CYPHER : CLAUSES DE LECTURE

21

ReadClauses

Match

OptionalMatch

Where

Start

Aggregation

LoadCVS

count

sum AVGmax

max

• Match : spécifier le pattern à chercher

• Optional Match : similaire a Match, mais il retourne null en cas d’absence de résultat

• Where : permet de filtrer les résultats d'une requête de Match ou Optional Match..

• Start : permet de trouver des points de départ (nœud ou Relations). Start concerne seulement les éléments

indexés.

• Load CSV : permet d’importer un fichier csv

• Aggregation : permet d’utiliser des fonctions d’agrégation :

• Count : pour compter le nombre d’éléments

• Sum : pour sommer des valeurs

• AVG : pour faire la moyenne

• Max/min : pour le min ou le max• Ect.

Page 22: Base de données graphe, Noe4j concepts et mise en oeuvre

LE LANGAGE CYPHER : CLAUSES D’ÉCRITURE

22

WriteClauses

Create

Merge

Set

RemoveDelete

Foreach

• Create : créer un nœud ou une relation

• Merge: s’assure que le motif existe, sinon, il faut le créer

• Set : actualiser les labels ou les propriétés des nœuds ou des relations

• Delete: supprimer un nœud, une relation ou un path

• Remove : supprimer des propriétés et des labels d’un nœud ou une relation

• Create Unique : il fait appel à la fois a la clause Match et Create. Il peut créer un nœuds s’il n’existe

pas.

• Load CSV : importer un fichier csv et ou créer les éléments associés

• Foreach : actualiser les valeurs d’une liste appartenant à un Path ou un résultat d’agrégation

• Periodic Commit : limiter le nombre de lignes par transaction. il est utile pour éviter la surcharge de la

mémoire lors d’un chargement de fichier csv.CreateUnique

LoadCSV

PeriodicCommit

Page 23: Base de données graphe, Noe4j concepts et mise en oeuvre

LE LANGAGE CYPHER : CLAUSES GENERALES

23

GeneralClauses

Return

Orderby Limit

Unwind

With

• Ce sont des clauses générales qui s’utilisent avec celles de

lecture ou d’écriture.

• Return : permet de définir les données à inclure dans le résultat de la requête.

• With : permet d’enchainer des requêtes, similaire à pipe. Par conséquent le résultat d’une requête pourrait être accessible

pour la seconde requête.

• Order by : permet de trier le résultat de retour, similaire à orderby de SQL. Il est utilisé avec les clauses Return ou With.

• Limit : permet de limiter le nombre d’éléments retournés par la clause Return. Elle est similaire à la clause Limit de SQL.

• Skip : comme en SQL, il permet de retourner les resulats à partir d’une ligne donnée.

• Unwind : permet de transformer une liste d’éléments en une séquence de lignes. La liste peut être des paramètres ou des

résultats.

• Union : comme en SQL, cette clause permet de fusionner des jeux de données sans répétition.

• Call : permet d’invoquer une procédure déployée sur le serveur Neo4j.

Call

Union

Skip

Page 24: Base de données graphe, Noe4j concepts et mise en oeuvre

LES FONCTIONS DANS CYPHER

24

Fonction

Booléenne

Fonction

Scalaire Fonction

mathématique

Fonction

Liste

Fonction • Neo4j dispose une API de fonctions.

• Les fonctions sont classées en 4 classes :

• Les fonctions booléennes : ce sont des prédicats.

• Les fonctions scalaires : ce sont les fonctions qui

retournent un scalaire de type String, Entier,

nœud, ….

• Les fonctions mathématiques : ce sont des

fonctions numériques (abs, ceil, …),

trigonométriques, logarithmique (exp, log, sqrt,

…) et fonctions de traitement de chaine de

caractère

• Les fonctions qui retournent une liste

• Ces fonctions peuvent être utilisées dans les clauses.

• La majorité de fonctions peuvent retourner des

valeurs nulles

Page 25: Base de données graphe, Noe4j concepts et mise en oeuvre

DISTRIBUTIONS NEO4J

25

Distribution

Communautaire Distribution

Entreprise

Distribution

• Deux distributions Neo4j• Distribution communautaire

• Distribution entreprise

• Distribution communautaire

• Adaptée aux projets test/pilote

• Supporte les fonctionnalités clés

• ACID (Atomicité, Cohérence, Isolation, Durabilité)

• Langage Cypher

• API de programmation

• La distribution Entreprise :

• + Haute disponibilité

• + Scalabilité horizontale

• + Monitoring

• + Système de cache

• + Outils d’administration

Page 26: Base de données graphe, Noe4j concepts et mise en oeuvre

DRIVER POUR NEO4J

26

Natif

Java

C#

PythonJavascript

Driver

R

PHP

RubyErlang

C/C++

Haskell

• Neo4j offre plusieurs drivers.

• On distingue deux types :

• Driver natif : ce sont les drivers fournis

par Neo4j

• Driver non natif : ce sont les drivers

fournis par la communauté

• Les drivers natifs portent sur

• Java : par conséquent les langages

Java, Groovy, Clojure ou Kotlin sont

supportés

• .Net : le langage C# est supporté et

d’autres.

• Python

• Javascript

• Les drivers non natifs portent sur :

• R, PHP, Ruby, Erlang, C/C++, Haskel

Page 27: Base de données graphe, Noe4j concepts et mise en oeuvre

TYPE DE DONNÉES SUPPORTÉS

27

Type

Boolean

Integer

Float

String

Map

List

Node

Relationship

Path

• Neo4j dispose d’un système de types de

données pour le traitement et le

stockage des données.

• Le driver permet de traduire les

données d’un format à un autre.

• Les types de données supportés par

Noe4j sont

• Boolean

• Integer

• Float

• String

• List

• Map

• Node

• Relationship

• Path

Page 28: Base de données graphe, Noe4j concepts et mise en oeuvre

CAS D’UTILISATION

28

• Cette section présente la mise en œuvre d’un cas d’usage

• L’objectif consiste à modéliser et mettre en ouvre le site de partage

www.slideshare.net

• Les points abordés sont :

1. La modélisation

2. La mise en œuvre

• La mise en œuvre est réalisée avec CYPHER 3.1 et console web Neo4J.

Page 29: Base de données graphe, Noe4j concepts et mise en oeuvre

CAS D’UTILISATION : DESCRIPTION DU MODÈLE DE DONNÉES

29

• Sur Slideshare.net, nous avons :

• des adhérents

• des documents : ce sont des présentations publiées par des adhérents.

• Un document est associé à un domaine et disposant d’une licence.

• Un document peut être :

• visualisé par un adhérent ou un internaute

• apprécié par un adhérent

• commenté par un adhérent

• Un adhérent peut être suivi par un autre Adhérent.

• Un document et un adhérent disposent des propriétés :

• Adhérent : nom et émail

• Document : nom, nombre de pages, format, tag

Page 30: Base de données graphe, Noe4j concepts et mise en oeuvre

CAS D’USAGE : MODÈLE DE DONNÉES

30

Person Person

Slides

Follow

Licence

Domain

Category of

Like

Person

ViewHas a

Person

Comment

Page 31: Base de données graphe, Noe4j concepts et mise en oeuvre

CAS D’USAGE : MODÈLE DE DONNÉES

31

PersonPerson

Slides

Follow

Licence

DomainCategory of

Has a

Statistic

• De point de vue métier, il n’est

important de connaitre :

• Le nombre de visualisation d’un

slides par personne

• Le nombre de téléchargement

d’un document par personne

• Le nombre de Like par personne

• Par conséquent, nous créons un

neoud Statistic associé à chaque

document.

• Le nœud Statistic permet de

persister les statistiques globales

(téléchargement, like, visualisation)

associés à un document

Stat_Of

Page 32: Base de données graphe, Noe4j concepts et mise en oeuvre

CAS D’USAGE : PROPRIÉTÉS

32

• Nom

• Email

• Nom

• Format

• Nombre de pages

• Tag

• Nom

• Info

• Nom

• Views

• Downloads

• Comments

• Likes

• Shares

Person Slides

Licence Domain

Statistic

Page 33: Base de données graphe, Noe4j concepts et mise en oeuvre

CAS D’USAGE : ETAPES DE LA CRÉATION DU MODÈLE DE DONNÉES

33

Créer les nœuds de

type SlidesCréer les nœuds de

type AdhérentCréer la relation

« publier » entre les

adhérents et les slides

Créer la relation

« publier » entre les

adhérents et les slides

Créer la relation

« Follow » entre deux

adhérents

Créer les nœuds

« Domain » et

« Licence »

Créer la relation « Has

a » entre « Slides » et

« Domain »

Créer la relation « Is »

entre « Slides » et

« Licence »

Créer la relation

« Like »

Supprimer la relation

« Like »

Pour chaque « slides »,

créer un nœud

« Statistic » et créer la

relation « Statistic_Of »

Afficher le graphe des

données

1 2 3 4

5 6 7 8

9 10 11 12

Page 34: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LES ADHÉRENTS : CLAUSES CREATE

Create permet de créer desnœuds et relations.

Lors de la création, il est possible

de spécifier les propriétés sous

forme de clé valeur

Les propriétés sont entourées par

des accolades {}

Les propriétés sont séparées par

« ; ».

Chaque adhérent a deux

propriétés : Nom, Email

Il est possible de faire un

commentaire sur une ligne.

Clause create

// creer les adhérents : Blanc, Roux, Morel et Roche

CREATE

// creer l’adhérent Blanc Olivier

// specifier la propriètes nom et email

(BalancO:Adherent {name:'Blanc Olivier', email:'[email protected]'}),

// créer le reste des adhérents en specifiant le nom et l’email

(RouxS:Adherent {name:'Roux Stefan', email:'[email protected]'}),

(MorelA:Adherent {name:'Morel Alain', email:'[email protected]'}),

(RocheL:Adherent {name:'Roche Lara', email:'[email protected]'})

Créer 4 adhérents

34

M.MICHRAFY

Page 35: Base de données graphe, Noe4j concepts et mise en oeuvre

AFFICHER LES ADHÉRENTS : CLAUSES MATCH

La clause MATCH permetd’interroger les données, c-à-d des

nœuds et des relations.

Cette clause doit utiliser la clause

return pour afficher.

Sans la clause return, une erreur

sera obtenue.

La clause LIMIT permet de limiter le

nombre d’éléments affichés.

Clause MATCH

// Chercher les noeuds sur la base de données

MATCH (p)

// afficher les noeuds trouvés

RETURN (p)

// limiter l’affichage à quatre noeud

LIMIT 4

Créer 4 neouds de la base

35

M.MICHRAFY

Blanc Olivier

Morel Alain

Roux Stefan

Roche Lara

Vue graphe

Page 36: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LES DOCUMENTS ET AFFICHER LES NŒUDS DOCUMENTS

L’objectif est de créer 3documents de type Slides.

La notion LABEL permet de

regrouper le même nœud sous la

même catégorie.

La clause RETURN permet

d’afficher les 3 slides. Pour cela, il

faut spécifier le nom de chaque

slide.

Pour chaque document, on

précise le nom, le format, le

numéro de page et le tag.

Clause create

// creer les documents ave le Label Slides : ApacheSpark, Scala, MongoDB

CREATE

(ApacheSpark:Slides {name:'Apache SPark', format:'pdf', numPages:40,

tag:['spark', 'rdd', 'big Data', 'mapreduce']}),

(Scala:Slides {name:'Scala', format:'powerpoint', numPages:45, tag:['scala',

'programmation fonctionnelle', 'pattern matching', 'trait']}),

(MongoDB:Slides {name:'MongoDB', format:'pdf', numPages:45, tag:['MongoDB',

'Sharding', 'NoSQL', ' Fault Tolerance']})

// la claude retourn le nom associé à chaque documentRETURN ApacheSpark, Scala, MongoDB

Créer 3 documents

36

M.MICHRAFY

Scala

MongoDB ApacheSpark

Vue graphe

Page 37: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LA RELATION PUBLIER

La clause CREATE permet de créerdes relations (en spécifiant les

extrémités)

On suppose qu’Olivier a publié tous les

documents

Par conséquent, on associe la relation

publier avec Olivier et les documents.

Le processus est le suivant :

Trouver Olivier

Associer Olivier à chaque

document

Afficher le voisinage de Olivier

Clause create

// Trouver Blanc Olivier en utilisant la clause Where

MATCH (BlancO:Adherent) where BlancO.name='Blanc Olivier‘

// Pointer tout les slides ( s designe tout les slides)

MATCH (s:Slides)

// Créer la relation publier en Lara et les documents identifiers

CREATE (BlancO)-[r:Publish]-> (s)

// afficher le noeud Blanc Olivier et son voisinage

RETURN BlancO,s,r

Créer 3 relation « Publier »

37

M.MICHRAFY

Scala

MongoDB

ApacheSpark

Vue graphe

Blanc Olivier

Page 38: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LA RELATION SUIVRE

Avec la clause CREATE, nous créonsdeux relations «suivre».

Stefan et Alain vont suivre Olivier

Le processus est le suivant :

Trouver Olivier, Stefan et Alain

Créer la relation suivre entre Alain

et Olivier et aussi entre Stefan et

Olivier

Afficher le voisinage de Olivier

Clause create

// Trouver Olivier

MATCH (BlancO:Adherent) where BlancO.name='Blanc Olivier‘

// Trouver Alain

MATCH (MorelA:Adherent) where MorelA.name='Morel Alain‘

// Trouver Stefan

MATCH (RouxS:Adherent) where RouxS.name='Roux Stefan‘

// Creer la relation «Suivre» entre Olivier, Stefan, AlainCREATE (MorelA)-[:Follow]-> (BlancO)

CREATE (RouxS)-[:Follow]-> (BlancO)

// Afficher Oliver et son voisiange

RETURN BlancO, MorelA, RouxS

Créer 2 relations « Suivre »

38

M.MICHRAFY

Vue grapheBlanc Olivier

Morel Alain

Roux Stefan

Page 39: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LES NŒUDS DE TYPE DOMAINE ET LICENCE

Avec la clause CREATE, nous allonscréer :

Les nœuds Domaine

Les nœuds Licence

Clause create

// créer trois domaines : Lanagage, BigData, MongoDB

CREATE

(scala:Domain {name:'Lanagage'}),

(spark:Domain{name:'BigData'}),

(mongoDB:Domain{name:'NoSQL'})

// créer deux Licence : CC et CC By By-NC

CREATE

(cc:Licence{name:'CC', info:'cc by attribution'}),

(ccbync:Licence{name:'CC BY-NC', info:'attribution pas de modification'})

RETURN scala, spark, mongoDB, cc, ccbync

Créer les domaines et les licences

39

M.MICHRAFY

Vue grapheNoSQL

BigData CC

CC BY-NCLangages

Page 40: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LES RELATIONS SÉMANTIQUES DOCUMENT, DOMAINE

L’objectif est de créer des relations : Entre un document et un

domaine

Entre un document et une licence

Les étapes sont :

Trouver les documents

Trouver les domaines

Trouver les licences

créer les relations

Clause create

MATCH (spark:Slides) where spark.name='Apache SPark'

MATCH (scala:Slides) where scala.name = 'Scala'

MATCH (mongoDB:Slides) where mongoDB.name = 'MongoDB'

MATCH (lang:Domain) where lang.name='Langage'

MATCH (bigdata:Domain) where bigdata.name = 'BigData'

MATCH (nosql:Domain) where nosql.name='NoSQL'

CREATE (spark)-[:Category_Of]-> (bigdata)

CREATE (scala)-[: Category_Of]-> (lang)

CREATE (mongoDB)-[: Category_Of]-> (nosql)

RETURN spark,scala, mongoDB, lang, bigdata, nosql

Créer 3 relations « Category_Of»

40

M.MICHRAFY

Vue graphe

ScalaMongoDB Apache

Spark

NoSQLBigData Langages

Page 41: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LES RELATIONS SÉMANTIQUES DOCUMENT, DOMAINE

L’objectif est de créer des relations : Entre un document et un

domaine

Entre un document et une licence

Les étapes sont :

Trouver les documents

Trouver les licences

Créer les relations

Afficher le résultat

Clause create

// identifier les documents

MATCH (spark:Slides) where spark.name='Apache SPark'

MATCH (scala:Slides) where scala.name = 'Scala'

MATCH (mongoDB:Slides) where mongoDB.name = 'MongoDB'

// identifier les licences

MATCH (cc:Licence) where cc.name='CC'

MATCH (ccbync:Licence) where ccbync.name = 'CC BY-NC'

// créer les relations entre les documents et les licences

CREATE (spark)-[:Has_a]->(cc)

CREATE (scala)-[:Has_a]->(cc)

CREATE (mongoDB)-[:Has_a]->(ccbync)

// afficher le resultat

RETURN spark, scala, mongoDB, cc, ccbync

Créer 2 relations « Flow »

41

M.MICHRAFY

Vue graphe

Scala

MongoDB

ApacheSparkCC

BY-NC

CC BY-NC

Page 42: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER LES RELATIONS : VISUALISER

L’objectif est d’enregistrer le nombre

de fois qu’un adhérent à visualiser un

document.

Si la personne visualise le document

pour la première fois, nous créons une

relation « View » entre l’adhérent et le

document et Views = 1. Si la relation

existe, nous incrémentons la propriété

Views par 1.

Pour cela, nous utilisons la clause

MERGE avec la clause ON CREATE.

Clause create

// identifier l’adherent ‘Roche Lara’

OPTIONAL MATCH (p:Adherent) where p.name = 'Roche Lara‘

// identifier le document ‘Scala’

OPTIONAL MATCH (s:Slides) where s.name = 'Scala‘

// Créer la relation Like si’il existe pas et fixer Views à 0

MERGE (p)-[r:View]->(s)

ON CREATE SET r.Views = 0

// Incrementer la value de Views par 1

Set r.Views = r.Views+ 1

// retourner,p,s

RETURN r,p,s

Créer une relation visualiser

42

M.MICHRAFY

Vue graphe

ScalaRoche Lara

View

Page 43: Base de données graphe, Noe4j concepts et mise en oeuvre

SUPPRIMER LA RELATION VISUALISER

Pour supprimer une relation, il faut

d’abord identifier les nœuds associées.

La clause DELETE permet de supprimer

une relation.

La clause REMOVE permet de

supprimer une propriété d’une relation

ou d’un nœud.

Pour supprimer un nœud, il nécessaire

de supprimer d’abord les relations

associées.

Clause create

// identifier l’adherent ‘Roche Lara’

MATCH (p:Adherent) where p.name = 'Roche Lara‘

// identifier le document ‘Scala’

MATCH (s:Slides) where s.name = 'Scala‘

// identifier la relation entre p et s

OPTIONAL MATCH (p)-[r:View]->(s)

// supprimer la relation r

delete r

Supprimer une relation

43

M.MICHRAFY

Sortie Deleted 1 relationship, statement completed in 5 ms.

Page 44: Base de données graphe, Noe4j concepts et mise en oeuvre

CRÉER UN NŒUD STATISTIC ASSOCIÉ A CHAQUE DOCUMENT

La clause with joue le rôle d’un pipe. La clause set permet de mettre à jour les propriétés.

Chaque nœud Slides est associé à un nœud

Statistic, le nom de la relation est stat_of.

Le nœud Statistic comporte les propriétés Views,

Downloads, Comments, Likes, Share.

Le processus est le suivant :

Pour nœud Slides

1. Créer un neoud Statistic

2. Créer une relation stat_of

3. Ajouter les propriétés au nœud Statistic.

Clause create, with et set

MATCH (p:Slides)

WITH p

CREATE (q:Statistic{name:'Statistic ' + p.name})

WITH p,q

CREATE (p)-[r:stat_of]->(q)

WITH p,q

SET q.Views=0

SET q.Downloads=0

SET q.Comments=0

SET q.Likes=0

SET q.Shares=0

RETURN p,q

Créer 3 nœuds Statistic et 3 elations « stat_of »

44

M.MICHRAFY

Vue grapheScala

MongoDB

ApacheSpark

StatisticMongoDB

Statistic

Apache

Spark

Statistic

Scala

Page 45: Base de données graphe, Noe4j concepts et mise en oeuvre

VISUALISER LES DONNÉES

45

// afficher le graphe des données

Match (p) return p

Page 46: Base de données graphe, Noe4j concepts et mise en oeuvre

ENREGISTRER LA VISUALISATION D’UN DOCUMENT

// identifier le document : name = ‘Scala’

optional match (p:Slides) where p.name = 'Scala‘

// render p accessible pour la requête suivante

with p

// Chercher le voisin de p avec relation = stat_of

optional match (p)-[r:stat_of]->(q)

// Rendre q accessible pour la requête suivante

with q

Set q.Views= q.Views + 1

return q

Actualiser le nœud Statistic

46

M.MICHRAFY

Vue graphe

Statistic

Scala

Vue Rows

Views 1

Comments 0

name Statistic Scala

Downloads 0

Likes 0

Shares 0

L’objectif est de mette à jour les propriétés du

nœud Statistic suite à la lecture du document

Scala.

Cette mise à jour se fait via la clause SET

Le principe est le suivant :

Chercher le nœud en question

Chercher le voisin du nœud

Mettre à jour les propriètés

Clause create, with et set

Page 47: Base de données graphe, Noe4j concepts et mise en oeuvre

IDENTIFIER LE DOCUMENT LE PLUS LU

// p est une variable de type Statistic

match (p:Statistic)

// Rendre le scalaire m visible pour la requete suivante

with max(p.Views) as m

// identifier le noeud respectant la condition

optional match (p:Slides)-[r:stat_of]->(q:Statistic)

where q.Views = m

// retourner les noeuds

return p

Identfier le nœud cible

47

M.MICHRAFY

Statistic

Scala

L’objectif est de retourner le

document le plus lu.

Le principe est le suivant :

Identifier les nœuds Statistic

Calculer m qui est le max des

Views

Identifier le nœud Slides dont le

nœud associé Statistic avec

Views=m

Retourner le nœud en question

Clause match, with

Vue graphe

Page 48: Base de données graphe, Noe4j concepts et mise en oeuvre

DR MUSTAPHA MICHRAFY

CONTACT : [email protected]