0% ont trouvé ce document utile (0 vote)
38 vues16 pages

Introduction à Neo4j et ses concepts

Le document présente Neo4j, une base de données orientée graphe, en détaillant ses caractéristiques, concepts, et la manière d'écrire des bases de données avec le langage Cypher. Il met en avant la flexibilité et la puissance de Neo4j pour gérer des données fortement connectées tout en respectant les principes ACID. La conclusion souligne que Neo4j est plus performant que les bases de données relationnelles pour l'analyse de données dynamiques, bien qu'il ait des limitations en matière de partitionnement.

Transféré par

sounia.oakki
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
38 vues16 pages

Introduction à Neo4j et ses concepts

Le document présente Neo4j, une base de données orientée graphe, en détaillant ses caractéristiques, concepts, et la manière d'écrire des bases de données avec le langage Cypher. Il met en avant la flexibilité et la puissance de Neo4j pour gérer des données fortement connectées tout en respectant les principes ACID. La conclusion souligne que Neo4j est plus performant que les bases de données relationnelles pour l'analyse de données dynamiques, bien qu'il ait des limitations en matière de partitionnement.

Transféré par

sounia.oakki
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

21/02/2021

Université Ibn Tofaïl


Faculté des Sciences de Kénitra
Département d’ Informatique

BDNoSQL Neo4j
CHAPITRE 5
Master Big Data&Cloud Computing
Année universitaire 2020-2021

Prof . Saïd TKATEK


[email protected]

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 1

CHAPITRE 5 : PLAN

1. INTRODUCTION
2. CARACTÉRISTIQUES
3. LES CONCEPTS DE NEO4J
4. COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?
5. CONCLUSION

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK
2

1
21/02/2021

CHAPITRE 5 : INTRODUCTION

Neo4j est une base de données orientée graphe écrite en Java. Développée
par Neo Technology (société suédoise siégeant aux USA), les premières lignes
de codes datent de l'année 2000 et la version 1.0 est sortie en février 2010.

Neo4j est une base de données graphe en Java prévue pour être embarquée
dans une application ou accédée en client / serveur via une API REST. La
manipulation de graphe en Java avec Neo4j est très naturelle grâce à son API:
Node et Relationship sont les principales classes et permettent de modéliser
un graphe tout en adjoignant un ensemble de propriétés à chaque nœud et
relation.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK
333

CHAPITRE 5 : CARACTÉRISTIQUES

Neo4J l'une des premières bases de données orientées graphes, mais aussi
l'une des plus évoluées. Voici ses principales caractéristiques :

• transaction : c'est une base de données transactionnelle, respectueuse


des principes ACID (Atomicité, Cohérence, Isolation et Durabilité).

• haute disponibilité : via la mise en place d'un cluster.

• volumétrie : stocker et requêter des milliards de nœuds et de relations.

• Cypher : un langage de requête graphe déclaratif, simple et efficace.

• schemaless : pas de schéma préétabli.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK
444

2
21/02/2021

CHAPITRE 5 : LES CONCEPTS DE NEO4J

Les bases de données orientées graphes sont principalement composés de 3


éléments :
• Les nœuds.
• Les relations.
• Les propriétés.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK
555

CHAPITRE 5 : LES CONCEPTS DE NEO4J

En comparaison aux bases de données relationnelles, voici comment se


compose une base de données orientée graphe :

Ligne Colonnes
Clé
Table d’une d’une
étrangère
Table table

Label Noeud Relation Propriétés

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK
666

3
21/02/2021

CHAPITRE 5 : LES CONCEPTS DE NEO4J

Les nœuds
L'unité fondamentale composant un graphe est le nœud.
Les nœuds sont des enregistrements composés de propriétés de type
clef/valeur.
Généralement, ils représentent une entité du modèle.
Pour différencier les nœuds, Neo4j apporte la notion de « label ». Ceux-ci
permettent de
donner un rôle ou un type à un nœud.
Il est quand même important de noter qu’un nœud peut avoir plusieurs labels.
Ainsi, ceci nous permet de créer des nœuds de ce genre :

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 7


Prof. Saïd TKATEK 7

CHAPITRE 5 : LES CONCEPTS DE NEO4J

Les relations
Les relations entre les nœuds sont la clef de voûte des graphes, c'est ce qui
permet de lier des données et de créer des structures.
Pour Neo4J, les relations ont un sens. Autrement dit, elles ont un nœud de
départ et un nœud d’arrivé. Elles ont également un type et sont, comme les
nœuds, des enregistrements. En clair, celles-ci peuvent aussi porter de
propriétés de type clef/valeur.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 8


Prof. Saïd TKATEK 8

4
21/02/2021

CHAPITRE 5 : LES CONCEPTS DE NEO4J

Les propriétés
Nous avons vu que les nœuds et les relations peuvent avoir des propriétés.
Leurs types possibles correspondent aux types primitifs de Java, ou à un
tableau de type primitif.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 9


Prof. Saïd TKATEK 9

CHAPITRE 5 : LES CONCEPTS DE NEO4J


Voici un exemple de graphe réalisé sous Neo4J :

Les cercles de couleur sont des nœuds :


- Ici, le bleu représente les labels « Acteurs » et les « Personnes »
- Le vert représente les labels « Films »
Chaque flèche est une relation parfois porteuse ou non de données. Ici, 3
relations différentes sont distinguables : « a dirigé », « a joué dans » et « a
produit ».
Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 10
Prof. Saïd TKATEK 10

5
21/02/2021

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Pour écrire ses requêtes, Neo4J utilise un langage appelé le Cypher.


 Le langage se veut simple et efficace dans la formulation des requêtes
d'interrogation et de mise à jour des bases de données orientées graphe.
Cypher est relativement simple dans sa construction syntaxique mais reste
néanmoins un langage efficace. Les concepteurs ont voulu permettre aux
utilisateurs de rester concentrés dans leur domaine d'expertise au lieu de
se perdre dans les formulations de requêtes en bases de données.
 Cypher définit un ensemble de fonctions. Parmi les plus courantes on
trouve MATCH et WHERE. MATCH est utilisé pour décrire le modèle de
recherche. Il est principalement basé sur les relations. WHERE est utilisé
pour l'ajout de contraintes aux modèles.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 11


Prof. Saïd TKATEK 11

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Les nœuds
Les nœuds sont représentés avec des parenthèses, ce qui ressemble à des
cercles : ()
S’il y a besoin d'identifier le nœud dans la requête (dans une clause WHERE par
exemple), il suffit de lui donner un nom : (monNoeud)
Pour spécifier un label, il suffit de l'ajouter comme ceci :
(monNoeud:monLabel)
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.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 12


Prof. Saïd TKATEK 12

6
21/02/2021

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Les relations
Les relations sont représentées une flèche de la forme « --> ».
S’il y a besoin d'identifier la relation dans la requête, nous pouvons 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]-> »
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.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 13


Prof. Saïd TKATEK 13

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Mise en pratique
Dans un premier temps, je vais créer un nom portant mon nom.

J’ai créé le nœud « moi », portant le label « Personne » et la propriété « nom


» étant ici mon prénom, c’est-à-dire « Fabien ».
Voyons à quoi ressemble le graphe :

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 14


Prof. Saïd TKATEK 14

7
21/02/2021

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Mise en pratique
On voit le nœud vers affichant la propriété « nom ».
Maintenant, créons moi des amis ! Voici une requête servant à créer d’autres
nœuds et les mettre en relation avec mon nœud :

Ici, la requête va, pour chaque nom dans le tableau, créer un nœud au label «
Personne » et portant la propriété « nom » du nom actuellement en lecture.
Celle-ci va également créer une relation « Ami » avec mon nœud.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 15


Prof. Saïd TKATEK 15

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Mise en pratique
Vous n’avez pas vraiment compris ? Voyons ce qu’est devenu le graphe !

Et voilà ! 4 nouveaux amis sont apparus !


D’où le côté pratique de Neo4J, il s’agit de la flexibilité !
La base peut être changeante, le graphe parvient à s’adapter aux nouveautés
là où une base de données relationnelle poserait sans doute plus de difficultés
à mettre à jour…
Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 16
Prof. Saïd TKATEK 16

8
21/02/2021

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Mise en pratique
Exemple de requête Cypher :

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 17


Prof. Saïd TKATEK 17

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Mise en pratique
Exemple 2 :
Trouver le nom des villes qui sont à côté de Montréal

MATCH (ville)-[:A_COTE]->(b) Trouve les nœuds qui ont un lien A_COTE vers un autre nœud
WHERE ville.nom = 'Montréal' Pour ces nœuds, ne retenir que ceux dont la ville est Montréal
RETURN DISTINCT b.nom Retourne au programme le nom de ces villes

Autres détails :
• « ville » et « b » sont des noms arbitraires et est similaire à un ALIAS pour
Oracle. On aurait pu écrire « c » et « vil »
• (ville) et (b) sont entre parenthèses, ce qui signifie qu’ils sont des nœuds
• [ :A_COTE] est entre crochets, ce qui signifie qu’il est une relation de type
A_COTE
• Dans la section MATCH, la flèche est de (ville) vers (b). voir le - et ->
• DISTINCT permet de supprimer les doublons
• La ligne START n’est pas nécessaire dans les cas où on ne veut pas
spécifiquement mentionner à Neo4j par où commencer sa recherche. Dans le
cas ci-dessus, on dit à Neo4j de commencer à partir des nœuds. Pour dire de
commencer à partir des relations, on aurait dit : START r=relationship(*)
Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 18
Prof. Saïd TKATEK 18

9
21/02/2021

CHAPITRE 5 : COMMENT ÉCRIRE UNE BASE DE DONNÉES SOUS NEO4J ?

Mise en pratique
Exemple 3 :
Trouver le nom des villes qui sont à côté de Laval, mais pas de Montréal

START v=node(*), v3=node(*)


MATCH (v)-[:A_COTE]->(v2)
WHERE
v2.nom = 'Laval' AND
v3.nom = 'Montréal' AND
NOT ((v)-[:A_COTE]->(v3))
RETURN v

Détails :
• La valeur de retour est le nœud au complet, pas seulement le nom du nœud.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 19


Prof. Saïd TKATEK 19

CHAPITRE 4 : CONCLUSION

Neo4j est un SGB graphe puissant, évolué et en pleine expansion. Il


permet de traiter des données fortement connectées sous forme de
graphe tout en maintenant les propriétés transactionnelles fiables ACID.

Neo4j est un système cohérent et fortement disponible mais peu


résistent au partitionnement. Des travaux pour améliorer ce point sont
néanmoins en cours.

Il est bien plus performant qu'un SGBDR classique pour analyser des
données fortement connectées et dynamiques mais n'est pas approprié
pour des données non liées.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 20


Prof. Saïd TKATEK 20

10
21/02/2021

Université Ibn Tofaïl


Faculté des Sciences de Kénitra
Département d’ Informatique

BDNoSQL HBase
CHAPITRE 5 et 6
Master Big Data&Cloud Computing
Année universitaire 2020-2021

Prof . Saïd TKATEK


[email protected]

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 21

CHAPITRE 6 : PLAN

1. INTRODUCTION
2. STRUCTURE INTERNE
3. TABLES ET RÉGIONS
4. CARACTÉRISTIQUES
5. STRUCTURE DES DONNÉES
6. EXEMPLE
22

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK
22

11
21/02/2021

CHAPITRE 6 : INTRODUCTION

 HBase est un système de stockage efficace pour des données très


volumineuses. Il permet d’accéder aux données très rapidement même
quand elles sont gigantesques. Une variante de HBase est notamment
utilisée par FaceBook pour stocker tous les messages SMS, email et chat.

 HBase mémorise des n-uplets constitués de colonnes (champs). Les n-


uplets sont identifiés par une clé. À l’affichage, les colonnes d’un même n-
uplet sont affichées successivement :

Clés Colonnes et Valeurs

isbn7615 colonne=auteur valeur="Jules Verne"

isbn7615 colonne=titre valeur="De la Terre à la Lune"


23
isbn7892 colonne=auteur valeur="Jules Verne"

isbn7892 colonne=titre valeur="Autour de la Lune"

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 23
23
23

CHAPITRE 6 : STRUCTURE INTERNE

 Pour obtenir une grande efficacité, les données des tables Hbase sont
séparées en régions. Une région contient un certain nombre de n-uplets
contigus (un intervalle de clés successives).
 Une nouvelle table est mise initialement dans une seule région.Lorsqu’elle
dépasse une certaine limite, elle se fait couper en deux régions au milieu
de ses clés. Et ainsi de suite si les régions deviennent trop grosses.
 Chaque région est gérée par un Serveur de Région (Region Server). Ces
serveurs sont distribués sur le cluster, ex: un par machine. Un même
serveur de région peut s’occuper de plusieurs régions de la même table.
Au final, les données sont stockées sur HDFS.

24

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 24
24
24

12
21/02/2021

CHAPITRE 6 : TABLES ET RÉGIONS

 Une table est découpée en régions faisant à peu près la même taille. Le
découpage est basé sur les clés. Chaque région est gérée par un Serveur
de région. Un même serveur peut gérer plusieurs régions.

25

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 25
25
25

CHAPITRE 6 : CARACTÉRISTIQUES

Voici quelques caractéristiques de HBase :


• Les n-uplets sont classés selon leur clé, dans l’ordre alphabétique. Cette
particularité est extrêmement importante pour la recherche d’informations.
On est amené à définir les clés de façon à rapprocher les données
connexes.
• Les n-uplets de HBase peuvent être incomplets. Les colonnes ne sont pas
forcément remplies pour chaque n-uplet, au point qu’on peut même avoir
des colonnes différentes pour les n-uplets. Ce ne sont pas des valeurs null,
mais des colonnes carrément absentes. On qualifie ça de «matrice creuse»
(sparse data).
• Les colonnes appelées qualifiers sont groupées en familles.
• Les valeurs, appelées cellules sont enregistrées en un certain nombre de
versions, avec une date appelée timestamp.

26

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 26
26
26

13
21/02/2021

CHAPITRE 6 : STRUCTURE DES DONNÉES

• Au plus haut niveau, une table HBase est un dictionnaire <clé, n-uplet>
trié sur les clés,
• Chaque n-uplet est une liste de familles,
• Une famille est un dictionnaire <nomcolonne, cellule> trié sur les noms de
colonnes (aussi appelées qualifier),
• Une cellule est une liste de (quelques) paires <valeur, date>.
La date, un timestamp permet d’identifier la version de la valeur.

Donc finalement, pour obtenir une valeur isolée, il faut fournir un quadruplet :
(clé, nomfamille, nomcolonne, date)

Si la date est omise, HBase retourne la valeur la plus récente. 27

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 27
27
27

CHAPITRE 6 : EXEMPLE

On veut enregistrer les coordonnées et les achats de clients. On va construire


une table contenant trois familles :
• La famille personne contiendra les informations de base :
 colonnes personne:nom et personne:prenom
• La famille coords contiendra l’adresse :
 colonnes coords:rue, coords:ville, coords:cp, coords:pays
• La famille achats contiendra les achats effectués :
 colonnes achats:date, achats:montant, achats:idfacture

HBase autorise à dé-normaliser un schéma (redondance dans les


informations) afin d’accéder aux données plus rapidement.

28

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique Prof. Saïd TKATEK 28
28
28

14
21/02/2021

CHAPITRE 6 : EXEMPLE

Nature des clés


Les familles et colonnes constituent un n-uplet. Chacun est identifié par une
clé.
Les clés HBase sont constituées de n’importe quel tableau d’octets : chaîne,
nombre. . . En fait, c’est un point assez gênant quand on programme en Java
avec HBase, on doit tout transformer en tableaux d’octets : clés et valeurs. En
Java, ça se fait par :

final byte[] octets = Bytes.toBytes(donnée);

Si on utilise le shell de HBase, alors la conversion des chaînes en octets et


inversement est faite implicitement, il n’y a pas à s’en soucier.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 29


Prof. Saïd TKATEK 29

CHAPITRE 6 : EXEMPLE

Ordre des clés


 Les n-uplets sont classés par ordre des clés et cet ordre est celui des
octets. C’est donc l’ordre lexicographique pour des chaînes et l’ordre des
octets internes pour les nombres. Ces derniers sont donc mal classés à
cause de la représentation interne car le bit de poids fort vaut 1 pour les
nombres négatifs ; -10 est rangé après 3.
Par exemple, si les clés sont composées de "client" concaténée à un numéro,
le classement sera :
client1
client10
client11
client2
client3
Il faudrait écrire tous les numéros sur le même nombre de chiffres.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 30


Prof. Saïd TKATEK 30

15
21/02/2021

CHAPITRE 6 : EXEMPLE

Choix des clés


 Pour retrouver rapidement une valeur, il faut bien choisir les clés. Il est
important que des données connexes aient une clé très similaire.
 Par exemple, on veut stocker des pages web. Si on indexe sur leur
domaine, les pages vont être rangées n’importe comment. La technique
consiste à inverser le domaine, comme un package Java.

URL URL inversé


info.iut-lannion.fr com.alien.monster
monster.alien.com com.alien.www
mp.iut-lannion.fr fr.iut-lannion.info
www.alien.com fr.iut-lannion.mp
www.iut-lannion.fr fr.iut-lannion.www

Même chose pour les dates : AAAAMMJJ

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 31


Prof. Saïd TKATEK 31

CHAPITRE 6 : EXEMPLE

Éviter le hotspotting
 Il faut également concevoir les clés de manière à éviter l’accumulation de
trafic sur une seule région. On appelle ça un point chaud (hotspotting). Ça
arrive si les clients ont tendance à manipuler souvent les mêmes n-uplets.
 Paradoxalement, ça peut être provoqué par le classement des clés pour
l’efficacité comme dans le transparent précédent.
 Ça vient aussi du fait qu’il n’y a qu’un seul serveur par région*. Il n’y a
donc pas de parallélisme possible.
 Pour résoudre ce problème, on peut disperser les clés en rajoutant du « sel
», c’est à dire un bidule plus ou moins aléatoire placé au début de la clé, de
manière à écarter celles qui sont trop fréquemment demandées : un
timestamp, un hash du début de la clé…

*Une évolution de HBase est demandée pour permettre plusieurs serveurs sur une même
région.

Master Big Data&Cloud Computing (cours BD NoSQL) Département d’ Informatique 32


Prof. Saïd TKATEK 32

16

Vous aimerez peut-être aussi