Vous êtes sur la page 1sur 29

UNIVERSITE MERCURE INTERNATIONAL

Matière:

Base de données SQL et NON SQL

Enseignant:

Nom et Prénoms: Gomadje Dènakpon Wilfrid


Tél: +224612258057
Email : wgomadje@gmail.com
Web maketeur, Funnel Builder, Formateur

Année Académique: 2022- 2023


Plan du Cours:
I. SQL vs No SQL
a) Définitions et Historiques
b) Différence entre No-SQL et SQL
 Structure
 Support
 Évolutivité
 Langue
 Support
d)Avantages et Inconvénients No-SQL
e) Avantages et Inconvénients SQL
f) Quand utiliser SQL ou No-SQL
II. Introduction aux bases de données non-relationnelles
a) Introduction
b) Illustration des modèles de type NoSQL
 Gestion de documents
 Clé/valeur
 Lignes vers les colonnes
 Orienté graphe
c) NoSQL de type document
d) NoSQL de typa clé/valeur
e) NoSQL de type orienté vers la colonne
f) NoSQL de type orienté graphe
III. Modélisation logique arborescente et object en JSON
a) JavaScript Object Notation
b) La synthase JSON en bref : Règle synthétiques
c) Fondamental : Élément du format JSON
d) Principaux usages de JSON
IV. Imbrication avec JSON et Mongo( base de données orientée
document)
a) Présentation de MongoDB
b) Installation et démarrage de MongoDB
c) Créer des bases de données et des collections
d) Insertion des documents
e) Trouver des documents
f) Interroger MongoDB en JavaScript

V.Référence d’objet avec Neo4j(BD orientée graphe)


a) Installation de Neo4j
b) Démarrage de Neo4j
c) Test de Neo4j
d) Créer des nœuds et des relations

e) Trouver des nœuds et des relations


SQL vs NoSQL
les différences expliquées + quand utiliser chacun :
Les bases de données SQL et NoSQL offrent chacune leurs propres
avantages et inconvénients. En savoir plus sur chacun d'entre eux, y
compris leurs structures, leur évolutivité et leurs cas d'utilisation.
Deux bases de données principales sont utilisées pour stocker les
données numériques : SQL (bases de données relationnelles) et
NoSQL (bases de données non relationnelles). Bien que les deux
méthodes stockent efficacement les données, elles diffèrent par leurs
structures, leur évolutivité, leurs relations, leur langage et leur prise en
charge.
Dans cet article, vous découvrirez chaque type de base de données, en
quoi elles sont similaires et différentes les unes des autres, et comment
décider quel type de base de données convient à votre application de
données particulière.
a) Définition
Qu'est-ce que SQL ?
Structured Query Language (SQL) est un langage de programmation
qui permet aux utilisateurs techniques et non techniques d'interroger,
de manipuler et de modifier des données dans une base de données
relationnelle.
Organisées en colonnes et en lignes dans une table, les bases de
données SQL utilisent un modèle relationnel qui fonctionne mieux
avec des données structurées bien définies, telles que des noms et des
quantités, dans lesquelles des relations existent entre différentes
entités. Dans une base de données SQL, les tables sont liées par des
"clés étrangères" qui forment des relations entre différentes tables et
champs, tels que les clients et les commandes ou les employés et les
départements.
Les bases de données SQL sont évolutives verticalement, ce qui
signifie que vous pouvez augmenter la charge maximale en ajoutant
d'autres composants de stockage comme la RAM ou le SSD. Bien que
dans certains cas, cela puisse signifier que les bases de données SQL
sont limitées par les ressources disponibles sur le serveur, le stockage
basé sur le cloud et d'autres technologies peuvent offrir une plus
grande évolutivité avec SQL.
Qu'est-ce que NoSQL ?
Les bases de données NoSQL sont des bases de données non
relationnelles qui stockent les données d'une manière autre que les
relations tabulaires utilisées dans les bases de données SQL. Alors que
les bases de données SQL sont mieux utilisées pour les données
structurées, les bases de données NoSQL conviennent aux données
structurées, semi-structurées et non structurées. Par conséquent, les
bases de données NoSQL ne suivent pas un schéma rigide, mais ont
plutôt des structures plus flexibles pour s'adapter à leurs types de
données. De plus, au lieu d'utiliser SQL pour interroger la base de
données, les bases de données NoSQL utilisent différents langages de
requête (certaines n'ont même pas de langage de requête).
Les bases de données NoSQL sont évolutives horizontalement, ce qui
signifie qu'elles utilisent plusieurs nœuds dans un cluster pour gérer
des charges de travail accrues. Cela permet aux architectes de données
de les mettre à l'échelle simplement en complétant les clusters avec
des serveurs supplémentaires.
Les bases de données non relationnelles NoSQL fonctionnent bien
avec des données non structurées et possèdent généralement les
propriétés suivantes : NoSQL est sans schéma (pas de modèle de
données fixe).
Les bases de données NoSQL ont un schéma dynamique pour les
données non structurées, ce qui facilite et accélère l'intégration des
données dans certains types d'applications.
NoSQL utilise des modèles de données non tabulaires, qui peuvent
être orientés document, clé-valeur ou basés sur des graphiques. Les
bases de données NoSQL les plus courantes incluent MongoDB,
Cassandra, HBase, Redis, Neo4j et CouchDB.

NoSQL gère les défis d'échelle et d'agilité auxquels vous pouvez être
confrontés dans les applications modernes, en particulier celles qui
traitent de gros volumes de données en évolution rapide. Ces
demandes existent dans tous les domaines verticaux et applicatifs de
l'industrie, y compris l'IoT, l'analyse des utilisateurs, la
personnalisation, la technologie publicitaire, le commerce
électronique, les jeux et les réseaux sociaux.
b) Différences entre NoSQL et SQL
À un niveau élevé, les bases de données NoSQL et SQL présentent de
nombreuses similitudes.
En plus de prendre en charge le stockage de données et les requêtes,
ils permettent également de récupérer, de mettre à jour et de supprimer
des données stockées. Cependant, sous la surface se cachent des
différences significatives qui affectent les performances, l'évolutivité
et la flexibilité de NoSQL par rapport à SQL.
Voici quelques-unes des principales différences entre les bases de
données SQL et NoSQL :
Structure
Les bases de données SQL sont basées sur des tables, tandis que les
bases de données NoSQL peuvent être orientées document, des paires
clé-valeur ou des structures graphiques. Dans une base de données
NoSQL, un document peut contenir des paires clé-valeur, qui peuvent
ensuite être triées et imbriquées.
Évolutivité
Les bases de données SQL évoluent verticalement, généralement sur
un seul serveur, et obligent les utilisateurs à augmenter le matériel
physique pour augmenter leurs capacités de stockage. En effet, bien
que des options de stockage dans le cloud soient disponibles, les bases
de données SQL peuvent être d'un coût prohibitif pour les entreprises
lorsqu'elles traitent de grandes quantités de données volumineuses.
Les bases de données NoSQL offrent une évolutivité horizontale, ce
qui signifie qu'il suffit d'ajouter plus de serveurs pour augmenter leur
charge de données. Cela signifie que les bases de données NoSQL
conviennent mieux aux infrastructures modernes basées sur le cloud,
qui offrent des ressources distribuées.
Langue
Les bases de données SQL utilisent SQL (Structured Query
Language). Les bases de données NoSQL utilisent JSON (JavaScript
Object Notation), XML, YAML ou un schéma binaire, facilitant les
données non structurées. SQL a un schéma à définition fixe, tandis
que les bases de données NoSQL sont plus flexibles.
Support
SQL est un langage standard populaire qui est bien pris en charge par
de nombreux systèmes de bases de données différents, tandis que
NoSQL a différents niveaux de prise en charge dans divers systèmes
de bases de données.
En ce qui concerne le support, vous constaterez généralement que plus
d'aide est disponible pour les bases de données SQL que NoSQL. En
effet, SQL est une technologie plus établie et compte donc beaucoup
plus d'utilisateurs et de développeurs qui peuvent vous aider à
résoudre vos problèmes. En revanche, NoSQL est encore relativement
nouveau, avec moins d'aide disponible sur les forums ou via la
communauté. Vos options d'assistance peuvent être limitées si vous
rencontrez des difficultés pour l'utiliser.
Avantages et inconvénients de SQL
SQL est la lingua franca des données. C'est le langage que vous
utiliserez le plus pour interroger des bases de données et déplacer des
données structurées entre des applications traditionnelles. C'est un
langage puissant qui peut vous aider à faire de nombreuses choses
liées aux données, mais qui présente également certains inconvénients.
Voici quelques avantages et inconvénients de l'utilisation de SQL pour
le stockage et la récupération de données.
Avantages de SQL :
✔ SQL est largement compris et pris en charge ; la plupart des
développeurs le savent bien.
✔ SQL est extrêmement utile pour les agrégations simples sur
de grands ensembles de données, telles que le calcul de
moyennes.
✔ SQL est extrêmement utile pour configurer des tâches ETL
simples, en particulier si les formats d'entrée et de sortie sont des
bases de données relationnelles.
✔ SQL est bien documenté et facile à apprendre.
Inconvénients de SQL:
✗ Les performances de SQL peuvent être médiocres sur des
ensembles de données substantiels car il nécessite plusieurs
passages sur les données pour effectuer de nombreuses
opérations (en particulier les jointures).
✗ Le débogage SQL peut être compliqué car il ne fournit pas de
messages d'erreur informatifs.
✗ La syntaxe de SQL a tendance à être verbeuse par rapport aux
langages de programmation comme Python ou R, ce qui rend
plus difficile l'écriture de transformations complexes sous forme
de scripts ou de fonctions.
Avantages et inconvénients de NoSQL
Un avantage important de NoSQL est que vous n'avez pas à définir de
schéma à l'avance (ou jamais). Cela facilite l'ajout de nouvelles
colonnes sans traiter tous les problèmes liés à la modification d'une
vaste table contenant déjà de nombreuses données. Cela signifie
également que si vos requêtes ne nécessitent pas SQL, vous pouvez
éviter les frais généraux liés à l'analyse et à la compilation des
instructions SQL, à la modélisation et au stockage, ce qui améliore
considérablement les performances lorsque vous traitez de grandes
quantités de données.
Cependant, NoSQL est moins mature que SQL. Voici un aperçu des
avantages et des inconvénients de NoSQL.
Avantages de NoSQL :
✔ Schéma flexible
✔ Utilisable sur les plates-formes d'infrastructure
✔ distribuée Infrastructure à faible coût
✔ Disponibilité et débit élevés
Inconvénients de NoSQL :
✔ Technologie moins mature et difficile à gérer
✔ Capacités de requête limitées
✔ Incohérence des données et performances médiocres dans
certains scénarios complexes

Quand l'utiliser : SQL ou NoSQL


Décider quand utiliser NoSQL par rapport à SQL est essentiel car ils
diffèrent par leur structure, leurs capacités et leurs cas d'utilisation
idéaux.
Une base de données relationnelle comme SQL est une excellente
option si vous cherchez à créer une application structurée autour d'une
relation entre des tables de données. SQL fonctionne également bien
lorsque vous souhaitez vous assurer que vos données sont cohérentes
entre les tables. Cependant, les bases de données relationnelles ne sont
pas toujours le meilleur choix en termes de flexibilité ou d'évolutivité.
Une base de données NoSQL non relationnelle n'utilise pas de tables
structurées mais utilise à la place des schémas flexibles pour le
stockage de données non structurées. Cela vous donne plus de
possibilité d'adapter votre projet selon vos besoins. Cependant, cela
signifie également que vous avez moins de contrôle sur la cohérence
et les relations entre les données.
Voici quelques situations où NoSQL pourrait vous sembler le plus
logique :
• Vous avez besoin de hautes performances, en particulier de
performances de lecture : le fonctionnement des systèmes
NoSQL distribués tels que Cassandra et Riak signifie que vous
pouvez généralement obtenir des performances de lecture très
élevées en ajoutant plus de boîtes. Certains vont jusqu'à
répliquer automatiquement les données sur les nœuds pour vous
assurer que vous avez toujours accès à de nombreuses copies de
vos données.
• Vous avez besoin d'une haute disponibilité (HA) : les
données sont répliquées sur les nœuds d'un système NoSQL, de
sorte que la défaillance d'un seul nœud n'entraîne pas
nécessairement une perte de données ou un temps d'arrêt pour
votre application. Cela signifie également que vous pouvez
facilement ajouter ou supprimer des nœuds de clusters sans
affecter la disponibilité.

Introduction aux bases de données NoSQL


a) Introduction
SQL est le langage de haut niveau pour interroger des DB
relationnelle. Le succès des SGBDR est sans doute parce qu’ils tirent
leur fondement des mathématiques: La théorie des ensemble et
l’algèbre relationnelle.Les géants comme Oracle, Microsoft et IBM
ont une importante part du marché dans ces SGBDR.
Seulement, Not Only SQL propose de laisser de côté certaines
contraintes des bases de données relationnelles. (dénormalisation, pas
de FK). Dans ce contexte, il est plus intéressant d’avoir un langage de
haut niveau pour exploiter les bases de données. Contrairement aux
BD SQL, qui fonctionnent toutes sous le même principe, il existe
plusieurs types de BD No SQL :
 Clé/Valeurs: Redis(VmWare) , SimpleDB (Amazon)
 Des lignes vers les colonnes: le stockage des données est sous
forme de colonne plutôt que de lignes. BigTable(Google),
HBase
 Gestion de documents: MongoDB, Cassandra.
 Orienté Graph: Neo4J
Les bases de données NoSQL sont des bases de données réparties: Sur
plusieurs serveurs.
b) Illustration des modèles de type NoSQL
Exemple : Représentation de ventes en relationnel
Table Saless
#ticket #date #book
1 01/01/16 2212121504
1 01/01/16 2212141556
2 01/01/16 2212141556

Table Book
#isbn #title #author
2212121504 Scenari 1
2212141556 NoSQL 2

Table Author
#id surname firstname
1
2 Bruchez Rudi

Exemple : Représentation de ventes en colonne


Family Sales
#ticket

1 date
01/01/16

date books
2 01/01/16 2212141556

Family Book
#isbn
title
2212121504 Scenari

title a-surname a-firstname


2212141556 NoSQL Bruchez Rudi

Exemple : Représentation de ventes en document


Collection Sales
#oid
"ticket" : 1
"date" : "01/01/16"
4d040766076 "books" : [
6b236450b45
"_id" : 2212121504
a3
"_id" : 2212141556
]
"ticket" : 2
4d040766076 "date" : "01/01/16"
6b236450b45 "books" : [
a4 "_id" : 2212141556
]

Collection Book
#oid
"isbn" : 2212121504
4d040766076 "title" : "Scenari"
6b236450b45
a5

"isbn" : 2212141556
"title" : "NoSQL"
4d040766076
"author" : {
6b236450b45
"surname" : Bruchez
a6
"firstname" : Rudi
}
Exemple : Représentation de ventes en document (avec
imbrication redondante)
Collection Sales
#oid
"ticket" : 1
"date" : "01/01/16"
"books" : [
{
"isbn" : 2212121504
"title" : "Scenari"
}
4d040766076
{
6b236450b45
"isbn" : 2212141556
a3
"title" : "NoSQL"
"author" : {
"surname" : Bruchez
"firstname" : Rudi
}
}
]
"ticket" : 2
"date" : "01/01/16"
"books" : [
{
"isbn" : 2212141556
4d040766076
"title" : "NoSQL"
6b236450b45
"author" : {
a4
"surname" : Bruchez
"firstname" : Rudi
}
}
]

Exemple : Représentation de ventes en graphe


Classe Sales
#oid
property ticket : 1
4d040766076 property date : 01/01/16
6b236450b45
relation book : 4d0407660766b236450b45a5
a3
relation book : 4d0407660766b236450b45a6

4d040766076 property ticket : 2


6b236450b45 property date : 01/01/16
a4 relation book : 4d0407660766b236450b45a6

Classe Book
#oid
4d040766076 property title : Scenari
6b236450b45
a5

4d040766076 property title : NoSQL


6b236450b45 relation author : 4d0407660766b236450b45a8
a6

Classe Author
#oid
4d040766076 property surname : Bruchez
6b236450b45 property firstnam : Rudi
a8

c) NoSQL de type Documents


Dans une BD orientée document, « un enregistrement » est un
document, qui est une structure de données composée de paires
de champs et de valeurs. Un document est encapsulé dans des accolades {...},
pouvant contenir des listes de clés/valeurs. Les documents sont similaires aux
objets JSON. Une valeur peut être un type scalaire (entier, nombre, texte,
booléen, null), des listes de valeurs [...], ou des documents
imbriqués. Le but de ce stockage est de manipuler des documents contenant des
informations avec une structure complexe (types, listes, imbrications)

➔ Une
collection
est un
ensemble
de
documents. C’est comme une table dans une base de
données relationnelle. Les collections se trouvent dans une
base de données.
Dddd

Les types d’application aux bases de données NoSql de type document


Types d’application: Bases de Données connues:

gestion des historiques d’utilisateurs sur CouchBase (Apache, Hadoop) : AT&T, Disney,
réseaux sociaux PayPal

Collections de produits, dépôts de logiciels, DynamoDB (Amazon) : BMW,


collections multimédia, etc.)

• Gestion de contenu (bibliothèques MongoDB (MongoDB) : ADP, Adobe, Bosch, Cisco,


numériques, eBay, Electronic Arts, Expedia

d) NoSQL de type Clé-Valeur


Le but de la famille clé-valeur est l'efficacité et la simplicité.
Un système clé-valeur agit comme une énorme table de hachage distribuée sur le
réseau. Tout repose sur le couple Clé/Valeur. La base de données clé-valeur
repose sur un tableau comportant seulement deux colonnes :
• La clé qui identifie la donnée de manière unique et permet de la gérer.
• La valeur qui contient n'importe quel type de données (différents formats)
➢ des valeurs simples : chaînes de caractères, des entiers, etc.
➢ des objets complexes : références à des fichiers dans la base de données, des
tuples (groupe de valeurs), etc.
Le fait d'avoir n'importe quoi comme valeur, implique qu'il n'y ait ni schéma, ni
structure pour le stockage. Il n'y a pas la possibilité d'exploiter ni de contrôler la
structure des données. En ce sens, si vous savez ce que vous cherchez (la clé) et
que vous manipulez directement la valeur il n’y a pas de problème à retrouver
l’information.

Les types d’application aux bases de données NoSQL de type clé/valeur


e) NoSQL de type Orienté vers la colonne
Contrairement au BD relationnelle où les données sont représentés dans des
lignes, le stockage orienté colonne change ce paradigme en se focalisant sur
chaque attribut et en les distribuant. Il est alors possible de focaliser les requêtes
sur une ou plusieurs colonnes, sans avoir à traiter les informations inutiles (les
autres colonnes).

Modèle relationnel:

Modèle orienté colonnes: seules les valeurs non nulles sont stockées

Les types d’application aux bases de données NoSQL de type orienté vers
colonnes
f) NoSQL de type Graphe
Les structures graphiques ont pu être représentées dans des bases de données de
modèles de réseaux à partir de la fin des années 1960. (le NoSQL, n’est pas
nouveau) .Dès le milieu des années 1980, les graphiques étiquetés pouvaient être
représentées dans des graphic databases, comme le modèle logique
de données.
Il existe plusieurs types de graphiques qui peuvent être classés par catégories: .
• Graphique social : il s'agit des liens entre les personnes ; par exemple,
Facebook, Twitter et l'idée de
six degrés de séparation.
• Graphique d'intention : il traite du raisonnement et de la motivation. (détection
de Fraude)
• Graphique de consommation : également appelé "graphique de paiement", le
graphique de
consommation est très utilisé dans le secteur du commerce de détail pour suivre
la consommation des
clients individuels.
• Graphique des intérêts : ce graphique représente les intérêts d'une personne et
est souvent complété par un graphique social.
Dans la base orientée graphe, les données stockées sont : les nœuds, les liens et
des propriétés sur ces nœuds et ces liens. Les requêtes que l'on peut exprimer sont
basées sur la gestion de chemins, de propagations, d'agrégations, voire de
recommandations.
Les nœuds sont identifiés de manière unique. Ce type de stockage n’est pas
évident les graphes suivants montrent un exemple de graphe pour un réseau
social. Au vu des personnes (nœuds) et de leurs relations (périphéries), vous
pouvez déterminer qui sont les « amis des amis » d'une certaine personne : par
exemple, les amis des amis d'Howard.
Les types d’application aux bases de données NoSQL de type graphique
Types d’applications:
• Relations entre utilisateurs dans les réseaux sociaux (Twitter ou Instagram)
• Analyse du comportement d'achat des clients dans les magasins en ligne
• L'analyse des risques, la détection des fraudes et la recherche de pannes.
BD Connues:
• Neo4j (open source)
• FlockDB (Twitter)
• OrientDB (Appache)
• Oracle NoSQL

Modélisation logique arborescente et objet en


JSON
a) JavaScript Object Notation

Définition : Introduction
JSON est un format de représentation logique de données, hérité de la
syntaxe de création d'objets en JavaScript.
C'est un format réputé léger (il ne contient pas trop de caractères de
structuration), assez facilement lisible par les humains, facilement
parsable par les machines, et indépendant des langages qui l'utilisent (sa
seule fonction est de décrire des données, qui sont ensuite utilisées
différemment pour chaque cas suivant le contexte).

Exemple : Un fichier JSON simple

1 {
2 "nom" : "Norris",
3
4 "prenom" : "Chuck", "age" : 73,
5 "etat" : "Oklahoma"
6
7
8
}
Attention : JSON est Indépendant de tout langage
Bien que JSON puise sa syntaxe du JavaScript, il est indépendant de tout
langage de programmation. Il peut ainsi être interprété par tout langage à
l'aide d'un parser.

Complément : extension
Un fichier au format JSON à pour extension .json .

b) La syntaxe JSON en bref : Règles synthétiques

➔ Il ne doit exister qu'un seul élément père par document contenant tous
les autres un élément racine.
➔ Tout fichier JSON bien formé doit être :
- soit un objet commençant par { et se terminant par },
- soit un tableau commençant par [ et terminant par ].
Cependant ils peuvent être vides, ainsi [] et {} sont des JSON valides.
➔ Les séparateurs utilisés entre deux paires/valeurs sont des virgules.
➔ Un objet JSON peut contenir d'autres objets JSON.
➔ Il ne peut pas y avoir d'éléments croisés.

c) Fondamental: Elements du format JSON


lL existe deux types d'éléments :
✔ Des couples de type "nom": valeur, comme l'on peut en trouver dans
les tableaux associatifs.
✔ Des listes de valeurs, comme les tableaux utilisés en programmation.
Définition : Valeurs possibles
✔ Primitifs : nombre, booléen, chaîne de caractères, null.
✔ Tableaux : liste de valeurs (tableaux et objets aussi autorisés) entrées
entre crochets, séparées par des virgules.
✔ Objets : listes de couples "nom": valeur (tableaux et objets aussi
autorisés) entrés
entre accolades, séparés par des virgules.
Exemple :
d) Principaux usages de JSON

Chargement asynchrones :
Avec la montée en flèche des chargements asynchrones tels que l'AJAX
(Asynchronous JavaScript And XML) dans le web actuel (qui ne
provoquent pas le rechargement total de la page), il est devenu de plus en
plus important de pouvoir charger des données organisées, de manière
rapide et efficace.
Avec XML, le format JSON s'est montré adapté à ce type de besoin
Les APIs :
Des sociétés telles que Twitter, Facebook ou LinkedIn, offrent
essentiellement des services
basés sur l'échange d'informations, et font preuve d'un intérêt grandissant
envers les moyens possibles pour distribuer ces données à des tiers.
Alors qu'il n'y a pas de domination totale d'un des deux formats (JSON ou
XML) dans le domaine des APIs, on constate toutefois que JSON est en
train de prendre le pas là où le format XML avait été pionnier.

Exemple : APIs retournant des données au format JSON


Twitter : https://dev.twitter.com/rest/public3 : récupération de données du
réseau social.
Netatmo : https://dev.netatmo.com/doc/publicapi4 : récupération de
données météo

Les bases de données:


Le JSON est très utilisé dans le domaine des bases de données NoSQL
(MongoDB, CouchDB, Riak...).
On notera également qu'il est possible de soumettre des requêtes à des
SGBDR et de récupérer une réponse en JSON.

Imbrication avec JSON et Mongo( base de


données orientée document)
a) Présentation de MongoDB
MongoBD est une base de données open source NoSQL orientée
document. Elle stocke des données au format JSON (en fait BSON, qui est
une version binaire de JSON).
Le serveur MongoDB est organisé en plusieurs databases :
 Chaque database contient des collections.
 Chaque collection contient des documents.
 Chaque document est au format JSON et contient donc des propriétés.

SQL MongoDB
base de données et/ou schéma base de données
table collection
enregistrement document
attribut (atomique) propriété (chaîne, entier, tableau,
structure)
Tableau 1 Comparaison SQL / MongoDB
Schema-less
C'est une base schema-less, aussi une collection peut contenir des
documents de structures différentes et il n'est pas possible de définir la
structure a priori d'une collection. La structure d'une collection n'est donc
définie que par les document qui la compose, et elle peut évoluer
dynamiquement au fur et à mesure des insertions et suppressions.
Identification clé / valeur
Chaque document est identifié par un identifiant nommé _id unique pour
une collection, fonctionnant comme une clé primaire artificielle.
Architecture
MongoDB fonctionne a minima sous la forme d'un serveur auquel il est
possible de se connecter avec un client textuel (mongo shell).
MongoDB peut être distribuée sur plusieurs serveurs (partitionnement
horizontal ou sharding) et accédée à travers de multiples couches
applicatives (langages, API...)

b) Installation et démarrage de MongoDB

MongoDB est disponible sur Windows,OSX et Linux.


https://docs.mongodb.com/manual/installationClient textuel Mongo (mongo
shell)
Pour se connecter à un serveur MongoDB :
 présent sur la même machine : exécuter simplement mongo dans un
terminal ;
 distant sur le port standard de MongoDB : exécuter mongo --host nom-du-
serveur.
Test
Une fois connecté exécuter le code suivant pour vérifier le bon fonctionnement
de la base :
db.test.insert({ "a":0 })
db.test.find()
Le résultat attendu est le suivant, la clé générée étant bien entendu différente :
{ "_id":ObjectId("574ebe32b3286a9a8fadfb55"), "a":0 }

c) Créer des bases de données et des collections


Fondamental : Créer une base et une collection
MongoDB est une base schema-less, la création des bases et des
collections est dynamique lors d'une première insertion de données.
Méthode
Pour créer une base de données il faut exécuter une instruction use sur une
nouvelle base de données, puis donner un ordre d'insertion d'un premier
document JSON avec insert.
Exemple

use db1
db.col1.insert( { "x":1 } )
Syntaxe : Catalogue de données
 On peut voir la liste des bases de données avec :
show dbs
 On peut voir la liste des collections de la base de données en cours avec :
show collections
 On peut voir le contenu d'une collection avec :
db.col1.find()

d) Insertion des documents

L'insertion de données dans une base MongoDB se fait avec


l'instruction : db.collection.insert(Document JSON).
Si la collection n'existe pas, elle est créée dynamiquement.
L'insertion associe un identifiant (_id) à chaque document de la collection.
Exemple
e) Trouver des documents
La recherchede données dans une base MongoDB se fait avec
l'instruction: db.collection.find(Document JSON, document JSON), avec :
a_ le premier document JSON définit une restriction ;
b_ le second document JSON définit une projection (ce second argument
est optionnel).

1 db.Cinema.find({"nom":"Honkytonk Man"})

Exemple : Restriction
retourne les document JSON tels qu'ils ont à la racine un attribut "nom"
avec la valeur "Honkytonk Man".

1 db.Cinema.find({"nom":"Honkytonk Man"}, {"nom":1, "realisateur":1} )

Exemple : Restriction et projection


retourne les document JSON tels qu'ils ont à la racine un attribut "nom"
avec la valeur "Honkytonk Man", et seul les attributs situés à la racine
"nom" et "realisateur" sont projetés (en plus de l'attribut "_id" qui est
projeté par défaut).
f) Interroger Mongo en JavaScript
Le console mongo permet d’exécuter des programme JavaScript avec instruction
load.

//test.js print("Hello world");


1
1 2
> load("test.js")

Parcours d'un résultat de requête Mongo

Référence d’objets avec Neo4j(BD orienté


graphe)
a) Installation de Neo4J
L'installation présentée ici est uniquement destinée à tester
Neo4J localement. L'installation de Neo4j peut être réalisée
localement sans droit administrateurs.
Installation de Neo4J
1. Télécharger depuis : http://neo4j.com/download/14
2. Choisir la version Community Edition
3. Suivez la procédure suivant votre système d'exploitation (Mac OSX,
Linux/UNIX,
Windows)

b) Démarrage de Neo4J
➢ Lancer le serveur

Le démarrage du serveur dépend du système d'exploitation.


• Sous Windows et Mac OSX lancer l'application et cliquer sur le bouton
Start
• Sous Linux exécuter : $NEO4J_HOME/bin/neo4j console
➢ Lancer le client
Ouvrir un navigateur Web à l'adresse : http://localhost:747416

Complément
• Pour arrêter le processus serveur sous Linux : $NEO4J_HOME/bin/neo4j
stop
• Pour réinitialiser les basesde données : supprimer le dossier
$NEO4J_HOME/data/graph.db/
c) Test de Neo4J

 Les requêtes s'écrivent dans la partie haute.


 Les résultats se visualisent dans la partie basse.
Exemple : Créer un nœud
create (n) return n
Exemple : Voir tous les nœuds
match (n) return n

d) Créer des nœuds et des relations


Exemple : Créer un nœud avec une propriété
create (n {name:'Sun'}) return n
Exemple : Créer un nœud avec un label
create (n:Astre {name:'Sun'}) return n
Syntaxe : Créer des relations
le formalisme pour les relations est :
 ()<-[]-()
 ()-[]->()
 ()<-[]->()
 ()-[]-()

où :
 on mettra nos nœuds à l'intérieur des parenthèses ()
 on mettra nos relations à l'intérieur des crochets []
 enfin on désignera le sens de la relation avec la flèche

Exemple : Créer deux nœuds et une relation entre ces deux noeuds
create (e:Astre {name:'Earth'}) <-[:Satellite {distance:384000}]- (m:Astre
{name:'Moon'}) return e, m
Exemple : Créer deux nœuds et une relation entre ces deux noeuds
en plusieurs instructions
create (e:Astre
{name:'Earth'}) create
(m:Astre {name:'Moon'})
create (e)<-[:Satellite {distance:384000}]-
(m) return e, m
Remarque
 CTRL+ENTER
Lance la commande présente dans la ligne de commande.
 SHIFT+ENTER
Permet de faire un saut de ligne dans la ligne de commande (sans
l'exécuter)
e) Trouver des nœuds et des relations
Exemple : Trouver un noeud avec une propriété
match (n {name:'Sun'}) return n
Exemple : Trouver un nœud avec un label
match (n:Astre) return n
Exemple : Trouver des nœuds en fonction d'une relation
match (n1) <-[r:Satellite]- (n2) return r,n1,n2

Vous aimerez peut-être aussi