Vous êtes sur la page 1sur 34

NEO4J

L'équipe

Shaima Ben Cheikh Shaima Barhoumi


Plan De Travail
SGBD NOSQL NOSQL orienté Graphe NEO4J

● Définition ● Définition ● Définition


● Les types ● CAP: Acid vs Base ● historique
● Sharding ● Exemples d’usages
● Quelques base de
neo4j
NOSQL orienté
● Les caractéristiques
graphe
de neo4j
● Forces et Faiblesses
● Installation et
lancement de neo4j
● Exemple Simple
SGBD NOSQL
Définition
NoSQL est une approche de la conception de bases de données qui peut s’adapter à
une grande variété de modèles de données, y compris les formats avec des clés, des
documents, des colonnes et des graphiques (Graph Database). NoSQL, qui signifie « not
only SQL », est une alternative à la base de donnée relationnelle traditionnelles dans
lesquelles les données sont placées dans des tables et le schéma de données est
soigneusement conçu avant la construction de la base de données. Les bases de
données NoSQL sont particulièrement utiles pour travailler avec de grands ensembles
de données distribuées.
Les Types

1. NoSQL Orienté Clé /Valeur

2. NoSQL Orienté Colonnes

3. NoSQL Orienté Documents

4. NoSQL Orienté Graphe


NOSQL orienté graphe
Définition
• une base de données orientée graphe correspond à un
système de stockage capable de fournir une adjacence
entre éléments voisins : chaque voisin d'une entité est
accessible grâce à un pointeur physique.
•C'est une base de données orientée objet adaptée à
l'exploitation des structures de données de type graphe
ou dérivée, comme des arbres.
CAP: Acid vs Base
ACID : Pour mettre en rapport les problématiques de la base de données relationnelle, on parle de
propriétés ACID pour les transactions (séquences d'opérations/requêtes) :

● Atomicité : Une transaction s’effectue entièrement ou pas du tout


● Cohérence : Le contenu d’une base doit être cohérent au début et à la fin d’une transaction
● Isolation : Les modifications d’une transaction ne sont visibles/modifiables que quand celle-ci a été
validée
● Durabilité : Une fois la transaction validée, l’état de la base est permanent (non affecté par les pannes
ou autre)
CAP: Acid vs Base
BASE :Du coup, les propriétés BASE ont été proposées pour caractériser les bases NoSQL :
● Basically Available : quelle que soit la charge de la base de données (données/requêtes), le système
garantie un taux de disponibilité de la donnée
● Soft-state : La base peut changer lors des mises à jour ou lors d'ajout/suppression de serveurs. La base
NoSQL n'a pas à être cohérente à tout instant
● Eventually consistent : À terme, la base atteindra un état cohérent
CAP: Acid vs Base
Théorème de CAP :
un théorème très intéressant reposant sur 3 propriétés fondamentales pour caractériser les bases de
données (relationnelles, NoSQL et autres) :
1.Consistency (Cohérence) : Une donnée n'a qu'un seul état visible quel que soit le nombre de
réplicas
2.Availability (Disponibilité) : Tant que le système tourne (distribué ou non), la donnée doit être
disponible
3.Partition Tolerance (Distribution) : Quel que soit le nombre de serveurs, toute requête doit fournir
un résultat correct

Dans toute base de données, vous ne pouvez respecter au plus que 2 propriétés parmi la cohérence,
la disponibilité et la distribution ( CA OU CP OU AP ).
CAP: Acid vs Base
Sharding
le sharding est une méthode qui permet de partitionner un ensemble de données venant d’une même base de
données. On fractionne ainsi notre base de données en plusieurs sous-ensembles de données également
appelées « datasets ». ​
Il existe deux principales méthodes de sharding ou partitionnement : le partitionnement horizontal et le
partitionnement vertical.
Sharding
le partitionnement horizontal : permet de séparer les lignes et de les stocker dans différents
serveurs.
Considérons l’exemple d’une chaîne de magasins qui possède une base de données de ses clients et leurs
produits achetés. Le schéma suivant représente un partitionnement horizontal. Dans le premier fragment,
nous avons toutes les informations concernant les produits qui coûtent moins de 100€ alors que dans le
deuxième, nous avons les informations concernant les produits qui coûtent plus de 100€.
Sharding
le partitionnement vertical : quant à lui permet de séparer les colonnes et de les stocker dans
différents serveurs.
En reprenant l’exemple précédent, nous pouvons également effectuer un partitionnement vertical. Le premier
fragment contiendra les informations personnelles d’un utilisateur alors que le deuxième fragment contiendra
les informations sur les produits achetés.
Quelques base de NOSQL orienté graphe
NEO4J
Définition:

Neo4j est l’une des base de données leader sur le


marché du stockage des données au format graphe.
Elle enregistre les données sous un format objet
représenté comme un nœud et les lie ensemble
avec des arêtes.
Historique:

Neo4j est un
système de gestion de base de données au
code source libre basé sur les graphes, développé
en Java , par la société suédo-américaine Neo
technology. Le produit existe depuis 2000, la version
1.0 est sortie en février.
Exemple d’usage neo4j:
Logistique : calculer le meilleur chemin pour livrer un
client
Social, collaboration : rechercher très facilement qui
sont les amis de mes amis
Droits d’accès : gestion des groupes, utilisateurs et
droits rapidement et sans redondance . . .
les caractéristiques de neo4j :
● Neo4j intègre son propre langage de requêtage , le Cypher

● La possibilité d'exécuter plusieurs millions de requêtes par


seconde sur des relations entre noeuds
● Fonctionnement en cluster possible (peut répartir la charge sur
plusieurs serveur

● ACID : propriétés qui garantissent une transaction informatique


fiable
Forces et Faiblesses:

Forces Faiblesses
open source work in progress : le système n`est
pas forcément complet mais évolue
vite!
un moteur puissant accessible il n’est pas évident dans l'interface
facilement. de base de rendre les graphes
dynamiques
Système de requêtage plus plaisant oblige à architecturer correctement
que le SQL les modèles de données

Simplicité de mise en place Stockage d’objets complexes


Installation et lancement de neo4j:
Nous allons ici installer la version Community de Neo4J, je vous invite à
vous rendre sur cette page pour télécharger la version correspondante à
votre système.
https://neo4j.com/download/
Vous retrouverez également sur cette page les différentes instructions
d’installation et de mise en place pour que votre installation soit
fonctionnelle.
Installation et lancement de neo4j:
Installation et lancement de neo4j:
Installation et lancement de neo4j:
Installation et lancement de neo4j:
Installation et lancement de neo4j:
Installation et lancement de neo4j:
Exemple Simple :
L’exemple Staff → Company

Nous allons partir de l’exemple présenté


précédemment qui lie un employé avec
une entreprise. Dans un premier temps
nous allons définir nos nœuds comme
ceci :
Exemple Simple :
CREATE (Theo:Staff {title:'Theo', joined:2014, job:
L’exemple Staff → Company
'Developer', city: 'Nantes'})

CREATE (Jon:Staff {title:'Jonathan', joined:2013,


Nous allons maintenant transposer ces job: 'Project Manager', city: 'Lille'})
nœuds en langage Cypher utilisé pour
CREATE (Synbioz:Company {name:'Synbioz',
écrire nos requêtes au sein de Neo4J. born:2007})
Exemple Simple :
L’exemple Staff → Company
MATCH (n:Staff)

MATCH (m:Company {name: 'Synbioz'})


ajouter les relations qui lient Synbioz à
Jon et Theo: CREATE (n)-[:WORK_IN]->(m)
Exemple Simple :
L’exemple Staff → Company

Voici le rendu que nous devrions avoir:


MERCI

Vous aimerez peut-être aussi