Vous êtes sur la page 1sur 25

FACULTE DE SCIENCES - KENITRA

Rapport de Mini Projet

Sujet :

Base de données NoSQL ( Neo4j, MongoDB )

Réalisé par :

EL MANSSOURI AYOUB
MOKET HAMZA

Encadré par :

Pr. TKATEK SAID

Pour Le module de :

Base de données NoSQL


Master Big Data & Cloud computing (S3)
CHAPITRE I : Les bases de données NoSQL

1. Qu'est-ce que NoSQL ?

NoSQL Database est un système de gestion de données non relationnel, qui ne


nécessite pas de schéma fixe. Il évite les jointures et est facile à mettre à
l'échelle. L'objectif principal de l'utilisation d'une base de données NoSQL est pour
les magasins de données distribués avec des besoins de stockage de données
énormes. NoSQL est utilisé pour le Big data et les applications Web en temps
réel. Par exemple, des entreprises comme Twitter, Facebook et Google collectent
chaque jour des téraoctets de données utilisateur.

La base de données NoSQL signifie "Not Only SQL" ou "Not SQL". Bien qu'un
meilleur terme soit « NoREL », NoSQL a fait son chemin. Carl Strozz a introduit le
concept NoSQL en 1998.

Le SGBDR traditionnel utilise la syntaxe SQL pour stocker et récupérer des


données afin d'obtenir des informations supplémentaires. Au lieu de cela, un
système de base de données NoSQL englobe un large éventail de technologies de
base de données qui peuvent stocker des données structurées, semi-structurées,
non structurées et polymorphes.
2. Pourquoi NoSQL ?

Le concept de bases de données NoSQL est devenu populaire auprès des géants de
l'Internet comme Google, Facebook, Amazon, etc. qui traitent d'énormes volumes
de données. Le temps de réponse du système devient lent lorsque vous utilisez le
SGBDR pour des volumes de données massifs.

Pour résoudre ce problème, nous pourrions « faire évoluer » nos systèmes en


mettant à niveau notre matériel existant. Ce processus est coûteux.

L'alternative à ce problème consiste à répartir la charge de la base de données sur


plusieurs hôtes chaque fois que la charge augmente. Cette méthode est connue
sous le nom de « scaling out ».

La base de données NoSQL n'est pas relationnelle, elle évolue donc mieux que les
bases de données relationnelles car elles sont conçues pour les applications Web.

3. Bref historique des bases de données NoSQL :

• 1998- Carlo Strozzi utilise le terme NoSQL pour sa base de données


relationnelle légère et open source
• 2000- La base de données de graphes Neo4j est lancée
• 2004- Google BigTable est lancé
• 2005- CouchDB est lancé
• 2007- Le document de recherche sur Amazon Dynamo est publié
• 2008- Facebooks ouvre les sources du projet Cassandra
• 2009- Le terme NoSQL a été réintroduit
4. Fonctionnalités de NoSQL :

Non relationnel :

• Les bases de données NoSQL ne suivent jamais le modèle relationnel


• Ne jamais fournir de tables avec des enregistrements à colonnes fixes
• Travailler avec des agrégats autonomes ou des BLOB
• Ne nécessite pas de mappage relationnel objet et de normalisation des
données
• Pas de fonctionnalités complexes telles que les langages de requête, les
planificateurs de requêtes, les jointures d'intégrité référentielle, ACID

Sans schéma

• Les bases de données NoSQL sont soit sans schéma, soit ont des schémas
assouplis
• Ne nécessite aucune sorte de définition du schéma des données
• Offre des structures hétérogènes de données dans le même domaine

NoSQL est sans schéma

API simple

• Offre des interfaces faciles à utiliser pour le stockage et l'interrogation des


données fournies
• Les API permettent des méthodes de manipulation et de sélection de
données de bas niveau
• Protocoles textuels principalement utilisés avec HTTP REST avec JSON
• Principalement utilisé aucun langage de requête NoSQL standard
• Bases de données Web fonctionnant en tant que services Internet
Distribué

• Plusieurs bases de données NoSQL peuvent être exécutées de manière


distribuée
• Offre des capacités de mise à l'échelle automatique et de basculement
• Souvent, le concept ACID peut être sacrifié pour l'évolutivité et le débit
• Généralement pas de réplication synchrone entre les nœuds distribués
Réplication multi-maître asynchrone, peer-to-peer, réplication HDFS
• Fournir uniquement une cohérence éventuelle
• Architecture de rien partagé. Cela permet moins de coordination et une
distribution plus élevée.

NoSQL n'est rien partagé

5. Types de bases de données NoSQL :

Les bases de données NoSQL sont principalement classées en quatre types : paire
clé-valeur, orientée colonne, basée sur le graphique et orientée document. Chaque
catégorie a ses attributs et ses limites uniques. Aucune des bases de données
spécifiées ci-dessus n'est meilleure pour résoudre tous les problèmes. Les
utilisateurs doivent sélectionner la base de données en fonction de leurs besoins
en produits.

Types de bases de données NoSQL :

• Basé sur une paire clé-valeur


• Graphe orienté colonnes
• Graphiques basés
• Orienté document
Basé sur une paire clé-valeur :

Les données sont stockées dans des paires clé/valeur. Il est conçu de manière à
gérer beaucoup de données et une charge importante.

Les bases de données de stockage de paires clé-valeur stockent les données sous
forme de table de hachage où chaque clé est unique, et la valeur peut être un
JSON, un BLOB (Binary Large Objects), une chaîne, etc.

Par exemple, une paire clé-valeur peut contenir une clé comme « Website »
associée à une valeur comme « Kaggle ».

Base de données NoSQL basé sur une paire clé-valeur

C'est l'un des exemples de base de données NoSQL les plus basiques. Ce type de
base de données NoSQL est utilisé comme une collection, des dictionnaires, des
tableaux associatifs, etc. Les magasins de valeurs clés aident le développeur à
stocker des données sans schéma. Ils fonctionnent mieux pour le contenu du
panier.

Redis, Dynamo, Riak sont quelques exemples NoSQL de bases de données de


stockage clé-valeur. Ils sont tous basés sur le papier Dynamo d'Amazon.
Basé sur des colonnes :

Les bases de données orientées colonnes fonctionnent sur des colonnes et sont
basées sur le papier BigTable de Google. Chaque colonne est traitée
séparément. Les valeurs des bases de données à colonne unique sont stockées de
manière contiguë.

Base de données NoSQL basée sur des colonnes

Ils offrent des performances élevées sur les requêtes d'agrégation telles que SUM,
COUNT, AVG, MIN, etc., car les données sont facilement disponibles dans une
colonne.

Les bases de données NoSQL basées sur des colonnes sont largement utilisées
pour gérer les entrepôts de données, la veille économique , le CRM, les catalogues
de cartes de bibliothèque,

Cassandra, HBase, Hypertable sont des exemples de requête NoSQL de base de


données basée sur des colonnes.

Orienté document :

La base de données NoSQL orientée document stocke et récupère les données


sous forme de paire clé-valeur, mais la partie valeur est stockée sous forme de
document. Le document est stocké aux formats JSON ou XML. La valeur est
comprise par le DB et peut être interrogée.
Relationnel vs orienté document

Dans ce diagramme sur votre gauche, vous pouvez voir que nous avons des lignes
et des colonnes, et à droite, nous avons une base de données de documents qui a
une structure similaire à JSON. Maintenant, pour la base de données
relationnelle, vous devez savoir quelles colonnes vous avez et ainsi de
suite. Cependant, pour une base de données de documents, vous disposez d'un
magasin de données comme un objet JSON. Vous n'avez pas besoin de définir ce
qui le rend flexible.

Le type de document est principalement utilisé pour les systèmes CMS, les
plateformes de blogs, les analyses en temps réel et les applications de commerce
électronique. Il ne doit pas être utilisé pour des transactions complexes qui
nécessitent plusieurs opérations ou requêtes sur différentes structures d'agrégat.

MongoDB, Amazon SimpleDB, CouchDB, Riak, Lotus Notes sont des systèmes de
SGBD populaires issus de documents.

Basé sur des graphiques :

Une base de données de type graphe stocke les entités ainsi que les relations entre
ces entités. L'entité est stockée en tant que nœud avec la relation en tant
qu'arêtes. Une arête donne une relation entre les nœuds. Chaque nœud et chaque
arête a un identifiant unique.
Base de données NoSQL basée sur des graphiques

Par rapport à une base de données relationnelle où les tables sont faiblement
connectées, une base de données Graph est de nature multi-relationnelle. La
relation de traversée est rapide car elles sont déjà capturées dans la base de
données et il n'est pas nécessaire de les calculer.

Base de données de base de graphes principalement utilisée pour les réseaux


sociaux, la logistique, les données spatiales.

Neo4J, Infinite Graph, OrientDB, FlockDB sont des bases de données populaires
basées sur des graphes.

6. Qu'est-ce que le théorème CAP ?

Le théorème CAP est aussi appelé théorème de brasseur. Il indique qu'il est
impossible pour un magasin de données distribué d'offrir plus de deux garanties
sur trois :

• Cohérence
• Disponibilité
• Tolérance de partition

Cohérence (Consistency) :

Les données doivent rester cohérentes même après l'exécution d’une opération.
Cela signifie qu'une fois les données écrites, toute future demande de lecture
devrait contenir ces données. Par exemple, après avoir mis à jour le statut de la
commande, tous les clients devraient pouvoir voir les mêmes données.
Disponibilité (Availability) :

La base de données doit toujours être disponible et réactive. Il ne devrait pas y


avoir de temps d'arrêt.

Tolérance de partition (Partition Tolerance) :

La tolérance de partition signifie que le système doit continuer à fonctionner


même si la communication entre les serveurs n'est pas stable. Par exemple, les
serveurs peuvent être partitionnés en plusieurs groupes qui peuvent ne pas
communiquer entre eux. Ici, si une partie de la base de données n'est pas
disponible, les autres parties ne sont toujours pas affectées.

7. Cohérence éventuelle (Eventual consistency) :

Le terme « cohérence éventuelle » signifie avoir des copies de données sur


plusieurs machines pour obtenir une disponibilité et une évolutivité élevées. Ainsi,
les modifications apportées à n'importe quel élément de données sur une machine
doivent être propagées à d'autres répliques.

La réplication des données peut ne pas être instantanée car certaines copies
seront mises à jour immédiatement tandis que d'autres en temps voulu. Ces
copies peuvent être mutuellement, mais avec le temps, elles deviennent
cohérentes. D'où le nom de cohérence éventuelle.

BASE : Basically Available, Soft state, Eventual consistency

• Basically Available signifie que DB est disponible tout le temps selon le


théorème CAP
• Soft state signifie même sans entrée ; l'état du système peut changer
• Eventual consistency signifie que le système deviendra cohérent au fil du
temps
8. Avantages de NoSQL :

• Peut être utilisé comme source de données principale ou analytique


• Capacité de Big Data
• Pas de point de défaillance unique
• Réplication facile
• Pas besoin de couche de mise en cache séparée
• Il offre des performances rapides et une évolutivité horizontale.
• Peut gérer des données structurées, semi-structurées et non structurées
avec le même effet
• Programmation orientée objet facile à utiliser et flexible
• Les bases de données NoSQL n'ont pas besoin d'un serveur dédié hautes
performances
• Prise en charge des langages et plates-formes de développement clés
• Simple à mettre en œuvre par rapport à l'utilisation du SGBDR
• Il peut servir de source de données principale pour les applications en
ligne.
• Gère le Big Data qui gère la vitesse, la variété, le volume et la complexité
des données
• Excelle dans les opérations de bases de données distribuées et de centres
de données multiples
• Élimine le besoin d'une couche de mise en cache spécifique pour stocker les
données
• Offre une conception de schéma flexible qui peut être facilement modifiée
sans temps d'arrêt ni interruption de service

9. Inconvénients de NoSQL :

• Pas de règles de normalisation


• Capacités de requête limitées
• Les bases de données et les outils SGBDR sont relativement matures
• Il n'offre aucune capacité de base de données traditionnelle, comme la
cohérence lorsque plusieurs transactions sont effectuées simultanément.
• Lorsque le volume de données augmente, il est difficile de conserver des
valeurs uniques car les clés deviennent difficiles
• Ne fonctionne pas aussi bien avec les données relationnelles
• La courbe d'apprentissage est raide pour les nouveaux développeurs
• Options open source donc pas si populaires pour les entreprises.

CHAPITRE II : Les bases de données de graphes ( Neo4j )

1. Qu'est-ce qu'une base de données de graphes ?

Une base de données de graphes stocke des nœuds et des relations au lieu de
tables ou de documents. Les données sont stockées comme vous pourriez
esquisser des idées sur un tableau blanc. Vos données sont stockées sans les
restreindre à un modèle prédéfini, ce qui permet une manière très flexible de les
penser et de les utiliser.

2. Pourquoi des bases de données graphiques ?

Nous vivons dans un monde connecté et comprendre la plupart des domaines


nécessite de traiter de riches ensembles de connexions pour comprendre ce qui se
passe réellement. Souvent, nous constatons que les liens entre les éléments sont
aussi importants que les éléments eux-mêmes.
Alors que les bases de données relationnelles existantes peuvent stocker ces
relations, elles les naviguent avec des JOIN opérations coûteuses ou des
recherches croisées, souvent liées à un schéma rigide. Il s'avère que les bases de
données "relationnelles" gèrent mal les relations. Dans une base de données de
graphes, il n'y a pas de JOIN ni de recherche. Les relations sont stockées
nativement avec les éléments de données (les nœuds) dans un format beaucoup
plus flexible. Tout dans le système est optimisé pour parcourir rapidement les
données ; des millions de connexions par seconde, par noyau.

Les bases de données de graphes relèvent de grands défis que beaucoup d'entre
nous relèvent quotidiennement. Les problèmes de données modernes impliquent
souvent des relations plusieurs-à-plusieurs avec des données hétérogènes qui
créent des besoins pour :

• Naviguer dans des hiérarchies profondes,


• Trouvez des connexions cachées entre des éléments distants, et
• Découvrez les interrelations entre les éléments.

Qu'il s'agisse d'un réseau social, de réseaux de paiement ou d'un réseau routier,
vous constaterez que tout est un graphe de relations interconnectées. Et lorsque
nous voulons poser des questions sur le monde réel, de nombreuses questions
portent sur les relations plutôt que sur les éléments de données individuels.
3. Le modèle de graphe de propriétés :

Dans Neo4j, les informations sont organisées en nœuds, relations et propriétés.

Les nœuds sont les entités du graphe.

• Les nœuds peuvent être étiquetés avec des étiquettes, représentant leurs
différents rôles dans votre domaine. (Par exemple, Person).
• Les nœuds peuvent contenir n'importe quel nombre de paires clé-valeur,
ou properties. (Par exemple, name)
• Les étiquettes de nœud peuvent également attacher des métadonnées (telles
que des informations d'index ou de contrainte) à certains nœuds.

Les relations fournissent des connexions dirigées et nommées entre deux entités
de nœud (par exemple PersonneLOVESPersonne).

• Les relations ont toujours une direction, un type, un nœud de début et un


nœud de fin, et elles peuvent avoir des propriétés, tout comme les nœuds.
• Les nœuds peuvent avoir n'importe quel nombre ou type de relations sans
sacrifier les performances.
• Bien que les relations soient toujours dirigées, elles peuvent être naviguées
efficacement dans n'importe quelle direction.

4. Qu'est-ce que Neo4j ?

Neo4j est une base de données de graphes native open-source NoSQL qui fournit
un backend transactionnel compatible ACID pour vos applications qui est
accessible au public depuis 2007.
Neo4j est une base de données de graphes native, ce qui signifie qu'elle
implémente un véritable modèle de graphe jusqu'au niveau du stockage. Les
données ne sont pas stockées sous la forme d'une "abstraction graphique" au-
dessus d'une autre technologie, elles sont stockées comme vous le faites sur un
tableau blanc. Ceci est important car c'est la raison pour laquelle Neo4j surpasse
les autres graphiques et reste si flexible. Au-delà du graphique de base, Neo4j
fournit ce que vous attendez d'une base de données ; Transactions ACID, prise en
charge des clusters et basculement d'exécution. Cette stabilité et cette maturité
expliquent pourquoi il est utilisé depuis des années dans des scénarios de
production pour les charges de travail des grandes entreprises.

Qu'est-ce qui fait de Neo4j le graphique le plus facile à utiliser ?

• Cypher, un langage de requête déclaratif similaire à SQL, mais optimisé


pour les graphes. Maintenant utilisé par d'autres bases de données comme
SAP HANA Graph et Redis graph via le projet openCypher .
• Traversées en temps constant dans de grands graphiques pour la
profondeur et la largeur grâce à une représentation efficace des nœuds et
des relations. Permet une mise à l'échelle jusqu'à des milliards de nœuds
sur un matériel modéré.
• Schéma de graphique de propriété flexible qui peut s'adapter au fil du
temps, permettant de matérialiser et d'ajouter de nouvelles relations
ultérieurement pour raccourcir et accélérer les données du domaine lorsque
les besoins de l'entreprise changent.
• Pilotes pour les langages de programmation populaires, notamment Java,
JavaScript, .NET, Python et bien d'autres.
5. Où et comment Neo4j est-il utilisé ?

Neo4j est aujourd'hui utilisé par des milliers de startups, d'établissements


d'enseignement et de grandes entreprises dans tous les secteurs, y compris les
services financiers, le gouvernement, l'énergie, la technologie, la vente au détail et
la fabrication. De la nouvelle technologie innovante à la conduite d'entreprises, les
utilisateurs génèrent des informations avec des graphiques, génèrent de nouveaux
revenus et améliorent leur efficacité globale.

6. Installer Neo4j :

Il existe un certain nombre d'options pour installer Neo4j et commencer à exécuter


des requêtes Cypher.

Le moyen le plus simple de configurer un environnement pour développer une


application avec Neo4j et Cypher est d'utiliser Neo4j Desktop. Téléchargez Neo4j
Desktop depuis https://neo4j.com/download/ et suivez les instructions
d'installation de votre système d'exploitation.

7. Qu'est-ce que Neo4j Desktop :

Neo4j Desktop est un IDE de développeur ou un environnement de gestion pour


les instances Neo4j similaire à Enterprise Manager, mais en mieux. Vous pouvez
gérer autant de projets et de serveurs de bases de données localement que vous le
souhaitez et également vous connecter à des serveurs Neo4j distants. Neo4j
Desktop est livré avec une licence de développeur gratuite de Neo4j Enterprise
Edition. Le Java Runtime est également fourni.
Chaque serveur de base de données géré via le bureau peut être configuré, mis à
niveau et maintenu via l'interface utilisateur, aucune ligne de commande n'est
nécessaire. Vous pouvez installer des extensions Neo4j populaires comme APOC
ou la bibliothèque Graph Data Science en un seul clic.

Semblables aux plugins IDE, les Graph Apps sont des applications Web
d'assistance qui facilitent l'interaction avec Neo4j. Ils couvrent la visualisation et
l'interrogation avec Neo4j Browser et Bloom, les outils d'importation pour les
bases de données relationnelles et les outils de surveillance pour interroger les
analyseurs de journaux.

8. Ouvrir Neo4j Desktop pour la première fois :

Si vous ouvrez Neo4j Desktop pour la première fois, il devrait vous demander
d'enregistrer le logiciel avec une clé d'activation. Cette clé d'activation est générée
lors du premier téléchargement de Neo4j Desktop et sera affichée sur la page de
confirmation du téléchargement. Gardez-le dans un endroit sûr.

Copiez cette clé d'activation dans le formulaire d'enregistrement du logiciel et


cliquez sur Activer pour continuer.
9. Les sections de la barre latérale de Neo4j Desktop :

La barre latérale gauche de Neo4j Desktop affiche des icônes de haut niveau pour
les projets, les applications graphiques, les paramètres, les clés d'activation et les
informations Neo4j.

• En haut, le dossier avec un signet ( ) affiche la liste des projets que vous
avez créés.

• La DBMS section ( ) indique quelles versions de la base de données


sont utilisées dans vos projets (le cas échéant) et répertorie les projets et
bases de données actuellement configurés.

• Une autre section Graph Apps ( ) vous permet d'ajouter et d'intégrer des
applications graphiques avec Neo4j.

• La Notification Center section ( ) vous permet de mettre à jour le


logiciel.

• La Software Keys section ( ) montre les licences qui sont attachées à


cette installation dans Neo4j Desktop, qui inclut l'activation de Desktop lui-
même ainsi que toutes les licences d'application graphique.

• La About section ( ) contient des informations sur Neo4j lui-même et


comprend des liens vers le site Web principal de la société, ainsi que des
informations sur les versions et les licences.
10- Création du projet :
o Ajoutez un nouveau projet en cliquant sur Nouveau en haut de la barre
latérale :

o Cela crée un projet nommé Project :

o Vous voulez que vos projets portent un nom décrivant l'objectif du


projet. Vous pouvez modifier le nom d'un projet en survolant la zone à
droite du nom du projet et en sélectionnant le bouton Modifier :
o Ensuite, vous tapez un nom pour le projet et sélectionnez le bouton
"Vérifier" pour enregistrer le nom.

o Et ici, nous voyons le projet avec le nom modifié :

11- Création d'un SGBD :


Un SGBD est une instance de Neo4j Server qui contient les bases de
données system et neo4j, mais peut contenir plus de bases de données
(fonctionnalité multi-db de Neo4j 4.x Enterprise Edition)

Dans un projet Neo4j Desktop, vous pouvez créer un ou plusieurs SGBD. Ensuite,
vous allez créer un SGBD local dans un projet et le démarrer.

Dans le projet où vous souhaitez ajouter le SGBD, cliquez sur le bouton Add, puis
sélectionnez Local DBMS :
Cela ouvre une boîte de dialogue dans laquelle vous spécifierez les détails du
SGBD.

o Vous pouvez utiliser le nom par défaut du SGBD, qui est Graph DBMS,
mais vous devez lui donner un nom qui aide à identifier le cas d'utilisation
du SGBD. Ici, nous spécifions MyDBMS comme nom
o Vous devez spécifier un mot de passe pour le SGBD, entrez donc un mot de
passe dont vous vous souviendrez.
o Neo4j Desktop créera un SGBD avec la version par défaut de Neo4j
Desktop. Cependant, vous pouvez sélectionner une version différente.

Après avoir spécifié les détails du SGBD que vous souhaitez créer, vous cliquez
sur le bouton Create :

Et voici ce que vous devriez voir une fois le SGBD créé avec succès :
N'oubliez pas que vous ne pouvez pas démarrer plus d'un SGBD. Si vous n'avez
pas d'autres SGBD démarrés dans Neo4j Desktop, vous pouvez démarrer votre
SGBD nouvellement créé en survolant la droite du nom du SGBD et en cliquant
sur le bouton Start :

Le SGBD prendra quelques secondes pour démarrer. Après le démarrage, vous


devriez voir quelque chose comme ceci :

Une fois le SGBD démarré, vous pouvez y accéder avec des clients exécutés sur
votre système, tels que Neo4j Browser, Neo4j Bloom, etc. Dans Neo4j Desktop, le
SGBD est un serveur d'entreprise, mais il n'est accessible que localement.

Vous avez maintenant créé votre propre SGBD.

o Ajout d'un plug-in :

Un plugin est une fonctionnalité supplémentaire qui peut être activée pour un
SGBD. Actuellement avec la dernière version de Neo4j Desktop qui utilise un
SGBD 4.2.x, les plugins suivants sont livrés avec Neo4j Desktop que vous pouvez
installer :
• Procédures impressionnantes pour Cypher (APOC)
• Bibliothèque de science des données graphiques
• GraphQL
• Flux Neo4j

Vous pouvez installer ou désinstaller un plugin à partir de cet onglet. La version


du plugin doit être compatible avec la version du SGBD. Neo4j Desktop assurera
la compatibilité. Après avoir installé ou désinstallé un plug-in, vous devez
redémarrer le SGBD.

Nous voyons que nous pouvons maintenant accéder aux procédures APOC pour ce
SGBD.

o Modification des paramètres du SGBD :

Vous pouvez afficher les paramètres du SGBD en sélectionnant le menu déroulant


à droite du bouton Open et en sélectionnant Settings. Les paramètres actuels du
SGBD s'affichent. Ensuite, commentez "dbms.directories.import=import", puis
redémarrer le SGBD.
Maintenant que nous avons couvert les bases de Neo4j Desktop, vous pouvez
commencer à travailler avec des données en utilisant notre langage de
requête, Cypher .

Vous aimerez peut-être aussi