0% ont trouvé ce document utile (0 vote)
43 vues62 pages

Séance 2

Le document présente un cours sur les bases de données NoSQL, incluant une introduction générale, les caractéristiques des bases NoSQL, et une section spécifique sur MongoDB. Il aborde les opérations CRUD, les types de bases de données, et les avantages des systèmes NoSQL. Le cours est destiné aux étudiants de l'Université Moulay Ismail pour l'année universitaire 2024/2025.

Transféré par

Noussaiba Hissi
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)
43 vues62 pages

Séance 2

Le document présente un cours sur les bases de données NoSQL, incluant une introduction générale, les caractéristiques des bases NoSQL, et une section spécifique sur MongoDB. Il aborde les opérations CRUD, les types de bases de données, et les avantages des systèmes NoSQL. Le cours est destiné aux étudiants de l'Université Moulay Ismail pour l'année universitaire 2024/2025.

Transféré par

Noussaiba Hissi
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

UNIVERSITE MOULAY ISMAIL

Ecole Nationale des arts et des métiers


Département : Mathématiques et Informatique

Base de données NoSQL


Dr. EL HLOULI FATIMA ZOHRA
[Link]@[Link]

Année universitaire 2024/2025


2 Plan du cours
1. Rappel général sur les bases de données

2. Introduction au NoSQL

3. Introduction au MongoDB

4. Opérateur CRUD en MongoDB


Base de données NoSQL
Chapitre 1

Rappel général sur les bases de données


3
Qu'est-ce qu'une base de données ?

4
Introduction

 Une base de données est un ensemble de données stockées


de manière structurée permettant ainsi d’être utilisées par un
ou plusieurs programmes informatiques.

 Les données doivent être consultables selon n’importe quel


critère.
Exemple: trouver les livres de sciences fiction écrit par
des auteurs de moins de 25 ans entre 1925 et 1930.

 De plus la base de données doit permettre la mise à jour et la


consultation des données par plusieurs utilisateurs.

5
Systèmes de gestion de
bases de données
 Un système de gestion de base de données (SGBD) est un
ensemble de programmes permettant à plusieurs
utilisateurs d’accéder à une base de données en leur
donnant l’illusion qu’ils sont les seuls à travailler sur ces
données.
 Un SGBD doit permettre entre autres
 la recherche,
 la mise à jour,
 l’insertion,
 la suppression de données.

6
7 Les niveaux de données
8 Propriétés Clés d'un SGBD (1)
 Indépendance physique : C'est la capacité de modifier le schéma physique (la
façon dont les données sont stockées) sans affecter le schéma logique (la façon
dont les données sont vues par les utilisateurs).

 Indépendance logique : le SGBD interne peut être modifié sans remettre en


cause le niveau physique.

 Manipulabilité : des personnes ne connaissant pas la base de données et la


manière dont elle est stockée en machine doivent pouvoir manipuler les données.

 Rapidité des accès : le SGBD doit pouvoir répondre aux requêtes le plus
rapidement possible.
9 Propriétés des SGBD (2)
 Limiter les redondances : le SGBD doit éviter aux maximums le stockage des informations
redondantes afin d’éviter des pertes en espace mémoire et aussi pour éviter des erreurs.

 Vérification de l’intégrité : les données doivent être cohérentes entre elles. Par exemple, si
une donnée fait référence à une autre alors cette dernière doit être aussi présente dans la
base de données.
C’est le cas pour la bibliothèque : un emprunt fait toujours référence à un livre et ce
livre doit exister dans la base de données pour que celle-ci reste cohérente.

 Partageabilité des données : le SGBD doit permettre l’accès simultané aux données par
plusieurs utilisateurs.

 Sécurité des données : le SGBD doit présenter des mécanismes permettant de gérer les
droits d’accès aux données mais aussi d’assurer un bon fonctionnement après une panne.
Pour cela des mécanismes de sauvegardes doivent être mis en place.
Les types de bases de données (1)
 Base de données hiérarchique
La base de données hiérarchique suit un ordre de classement ou
une relation parent-enfant pour structurer les données.

 Base de données réseau


La base de données est similaire à une base de données
hiérarchique mais présente quelques modifications. La base de
données réseau connecte l'enregistrement enfant à divers
enregistrements parents, permettant ainsi des relations
bidirectionnelles.

 Base de données orientée objet


Dans une base de données orientée objet, le système stocke les
informations à la manière d'un objet.

10
Les types de bases de données(2)

 Base de données relationnelle


Une base de données relationnelle est orientée table, où
chaque bit de données est lié à tous les autres bits de
données.

Base de données non relationnelle ou NoSQL


 Une base de données sans SQL utilise une variété de
formats, tels que des documents, des graphiques, des
colonnes larges, etc., ce qui offre une excellente flexibilité
et évolutivité à la conception d'une base de données.

11
12 Exemples de SGBD
Base de données NoSQL
Chapitre 2

Introduction au NoSQL
13
14 Limites de SGBD relationnel
Contexte:
 Depuis les années 2000, un déluge de données considérable

 De tels volumes ne sont plus gérables par des solutions traditionnelles

 Problèmes des 3V

• Volume (Le volume des données augmente considérablement)


Difficulté d’intégration
• Vélocité (fréquence rapide de génération de données)
dans les SGBD existant
• Variété(Les données sont souvent de nature hétérogène)
15 Il faut trouver une solution
Un nouveau système permettant :

 Une meilleure mise à l’échelle (scalabilité) dans des contextes fortement


distribués.

 Permettre une gestion simplifiée et meilleure de données hétérogènes.

 Création de systèmes complémentaires aux SGDBR adressant leurs limites sans


pour autant les remplacer.
16 Solutions propriétaires
A partir de là, les innovations s'enchaînent :
• En 2005, Google lance la base de données Google Bigtable,

• En 2007 Amazon lance Amazone DynamoDB,


17 Naissance du mouvement NoSQL

 Le terme NoSQL a été créé par Johan Oskarsson en


2009 au cours d’une rencontre à San Fransisco.

 Il cherchait un hashtag Twitter pour désigner les bases


de données comme Bigtable et Dynamo.

Johan Oskarsson
18 Caractéristiques des bases NoSQL(1)

 Ce sont des bases de données Non-relationnelles

 Open source pour la plupart

 Souvent installées sur un cluster (grappe de serveurs)

Cluster
 Acceptent les données de structures complexes ou
imbriquées
19 Caractéristiques des bases NoSQL(2)

 Pas de schéma pour les données ou schéma dynamique.

 Partitionnement horizontal des données (sharding) sur plusieurs noeuds (serveurs)


pour le traitement des données via des algorithmes « MapReduce ».

 Réplication des données sur plusieurs nœuds.


20 Avantages des BD NoSQL

 Évolutivité

 Disponibilité

 Tolérance aux pannes


21 Bases de données NoSQL
22 Familles des BDDs NoSQL

 Stocker les informations de la façon la mieux adaptée à leur représentation :

• Clé-valeur / Key-value

• Colonne / Column

• Document

• Graphe / Graph
23 Clés-valeurs

 Repose sur le couple clé-valeur.


 Fonctionne comme une table de hachage.
 Solution simple et efficace.
 La valeur contient des données hétérogènes.
 Donc pas de schéma, pas de structure.
24 Colonnes

 Se focalise sur les attributs.


 Evite le traitement des colonnes inutiles lors des requêtes.
 Adaptée pour traitements de masse (stats, calculs analytiques, …).
 Moins appropriée pour la lecture de données spécifiques.
25 Documents

 Repose sur la notion de clé-valeur (également sur les champs)


 Les valeurs sont structurées
 Manipuler des informations avec données complexes (listes, imbrications, etc.)
 Langages d’interrogation riches
26 Graphe
 Basées sur les théories des graphes.
 S’appuie sur les notions de noeuds, de relations et des propriétés qui leur sont rattachées.
 Conçues pour les données dont les relations sont représentées comme graphes, et ayant
des éléments interconnectés, avec un nombre indéterminé de relations entre elles.
 Adapté aux traitements des données des réseaux sociaux.
27 Principes du NoSQL

 Les bases NoSQL relâchent certaines contraintes pour garantir les performances

 Elles sont B.A.S.E


 Basically Available : Le système garantie un taux de disponibilité de la donnée
 Soft-state : La base n’est pas nécessairement cohérente à tout instant
 Eventually consistent : La base atteindra, à terme, un état cohérent
28 Théorème de CAP

 Théorème de CAP
"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"
Base de données NoSQL
Chapitre 3

Introduction au MongoDB
29
30 MongoDB

 Base de données NoSQL

 Sortie en 2009

 Orientée documents

 Pas de schémas, pas de structure de table, pas de typage

 Fournit un langage basé sur JavaScript


31 Vocabulaire(1)

 Base de donnée :
• Conteneur physique pour les collections.
• Chaque base de données a ses propres fichiers sur le système de fichiers.
• Un serveur MongoDB typique gère plusieurs bases de données.
 Exemple:

Articles
Auteurs
BlogDB Collections
Catégories

32 Vocabulaire(2)
 Collection:
• Groupe de documents MongoDB.
• Équivalent d'une table SGBDR.
• Existe au sein d'une seule base de données.
• Collections n'appliquent pas de schéma rigide.
• Les documents d'une collection peuvent avoir des champs différents.
 Exemple: Articles
Document 1
Document 2
Document 3
Document 4

La collection : Articles
33 Vocabulaire(2)
 Document:
• Document : Ensemble de paires clé-valeur.
• Les documents ont un schéma dynamique.
• Schéma dynamique : Documents d'une collection peuvent avoir des ensembles de
champs différents.
• Les champs communs dans les documents d'une collection peuvent contenir différents
types de données.

• Exemple: Document 1 Exemple: Document 2


{
{ "_id": ObjectId("5fec3d11a2b4e06d1b6d9cf5"),
"_id": ObjectId("5fec3d11a2b4e06d1b6d9cf4"), "titre": "Création de collections MongoDB",
"titre": "Introduction à MongoDB", "auteur": "Jane Doe",
"auteur": "John Smith", "contenu": "Pour créer une collection dans MongoDB...",
"contenu": "MongoDB est une base de données NoSQL...", "date_publication": ISODate("2023-01-10T[Link]Z"),
"date_publication": ISODate("2023-01-05T[Link]Z") "image_de_couverture": "cover_image.jpg",
} "tags": ["MongoDB", "Base de données"]
}
fields
34 BSON /JSON MongoDB

 MongoDB utilise le format BSON (Binary JSON) pour stocker les


données.

BSON : Acronyme pour Binary JSON. C'est un format de données


binaire utilisé par MongoDB.

JSON : Acronyme pour JavaScript Object Notation. C'est un format


de données texte populaire.
35
36 SQL /MongoDB
Base de données NoSQL
Chapitre 4

Les opérations CRUD sur Mongodb


37
38 CRUD

• Create (insérer de nouveaux documents dans la base de


données MongoDB)

• Read (interroger un document dans la base de données)

• Update(modifier des documents existants dans la base de


données)

• Delete(supprimer des documents de la base de données)


39 L’opération Create

MongoDB propose deux opérations de création différentes


que vous pouvez utiliser pour insérer des documents dans
une collection :

[Link]()
permet d'insérer un seul document dans la collection.
[Link]()
permet d’insérer plusieurs documents à la fois.
40
[Link]()
• syntaxe
[Link](
{ field1: value1, field2: value2, ... }
)

db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez insérer le document.

insertOne() : Méthode pour insérer un document unique.

{ field1: value1, field2: value2, ... } : Les champs et leurs valeurs que vous souhaitez insérer
dans le document
41
[Link]()
• Exemple

[Link](
{ nom: "Alice", age: 28, email: "alice@[Link]" }
)

un nouveau document est inséré dans la collection "maCollection" avec


les champs "nom", "age", et "email" et leurs valeurs respectives.
42 [Link]()
[Link](
[
• syntaxe { field1: value1, field2: value2, ... },
{ field1: value1, field2: value2, ... },
// Ajoutez d'autres documents ici
]
)
db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez insérer les documents.

insertMany() : Méthode pour insérer plusieurs documents en une seule opération.

[...] : Un tableau de documents à insérer. Chaque document est un objet BSON qui
contient les champs et leurs valeurs.

{ field1: value1, field2: value2, ... } : Les champs et leurs valeurs pour chaque document
que vous souhaitez insérer.
43
[Link]()
• Exemple

[Link]([
{ nom: "Alice", age: 28, email: "alice@[Link]" },
{ nom: "Bob", age: 32, email: "bob@[Link]" },
{ nom: "Charlie", age: 25, email:
"charlie@[Link]" }
])

Dans cet exemple, trois documents sont insérés dans la collection


"maCollection". Chaque document est spécifié comme un objet BSON
dans le tableau passé à insertMany().
44 L’opération Read

MongoDB dispose de deux méthodes pour lire les


documents d'une collection:

[Link]()

[Link]()
45 [Link]()

• syntaxe
[Link](
{ query },
{ projection }
)

db : Référence à la base de données.

maCollection : Nom de la collection à partir de laquelle vous souhaitez extraire des documents.

find() : Méthode pour rechercher des documents dans la collection.

{ query } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer les documents.

{ projection } (facultatif) : C'est un objet JSON qui spécifie quels champs doivent être inclus ou
exclus dans les résultats de la recherche.
46 [Link]()

• Exemple
[Link](
{ age: { $gte: 25 } }, // Rechercher les personnes de 25 ans ou plus
{ nom: 1, age: 1 } // Afficher uniquement les champs "nom" et "age"
)

Dans cet exemple, find() recherche tous les documents dans la collection
"maCollection" où l'âge est supérieur ou égal à 25 ans. Les résultats n'incluront que
les champs "nom" et "age" en fonction de la projection spécifiée.
47 [Link]()

• syntaxe
[Link](
{ query },
{ projection }
)
db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez rechercher un document unique.

findOne() : Méthode pour rechercher un seul document qui correspond aux critères spécifiés.

{ query } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer les documents. Vous
pouvez spécifier les champs et leurs valeurs pour trouver un document qui correspond à ces critères.

{ projection } (facultatif) : C'est un objet BSON qui spécifie quels champs doivent être inclus ou exclus
dans le résultat de la recherche.
48 [Link]()

• Exemple
[Link](
{ age: 30 }, // Rechercher une personne de 30 ans
{ nom: 1, age: 1 } // Afficher uniquement les champs "nom" et "age"
)

Dans cet exemple, findOne() recherche le premier document dans la collection


"maCollection" où l'âge est égal à 30 ans. Le résultat n'inclura que les champs "nom" et
"age" en fonction de la projection spécifiée.
49 L’opération Update

il existe trois méthodes différentes de mise à jour des


documents :

[Link]()

[Link]()

[Link]()
50 [Link]()

• syntaxe
[Link](
{ filter },
{ update }
)

db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez mettre à jour un document unique.

updateOne() : Méthode pour mettre à jour un seul document qui correspond aux critères spécifiés.

{ filter } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer le document que vous
souhaitez mettre à jour.
{ update } : C'est un objet BSON qui spécifie comment mettre à jour le document trouvé. Vous pouvez
utiliser des opérateurs tels que $set, $inc, etc., pour modifier les champs du document.
51 [Link]()

• Exemple
[Link](
{ nom: "Alice" }, // Rechercher un document avec le champ "nom" égal
à "Alice"
{ $set: { age: 31 } } // Mettre à jour le champ "age" à 31
)

Dans cet exemple, updateOne() recherche le premier document dans la


collection "maCollection" où le champ "nom" est égal à "Alice" et met à jour
le champ "age" à 31.
52 [Link]()

• syntaxe
[Link](
{ filter },
{ update }
)

db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez mettre à jour plusieurs
documents.

updateMany() : Méthode pour mettre à jour plusieurs documents qui correspondent aux
critères spécifiés.

{ filter } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer les documents
que vous souhaitez mettre à jour.
{ update } : C'est un objet BSON qui spécifie comment mettre à jour les documents trouvés.
53 [Link]()

• Exemple
[Link](
{ age: { $gte: 30 } }, // Rechercher les personnes de 30 ans ou plus
{ $set: { statut: "Terminé" } } // Mettre à jour le champ "statut" à
"Terminé"
)

Dans cet exemple, updateMany() recherche tous les documents dans la


collection "maCollection" où l'âge est supérieur ou égal à 30 ans et met à
jour le champ "statut" à "Terminé" pour ces documents.
54 [Link]()
[Link](
{ filter },
• syntaxe { replacement }
)
db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez remplacer un document


unique.

replaceOne() : Méthode pour remplacer un seul document qui correspond aux critères
spécifiés.

{ filter } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer le document
que vous souhaitez remplacer.

{ replacement } : C'est un objet BSON qui spécifie le document de remplacement complet. Le


document spécifié ici sera utilisé pour remplacer le document trouvé. Assurez-vous que le
document de remplacement a la même structure que le document à remplacer.
55 [Link]()

[Link](
• Exemple { nom: "Alice" }, // Rechercher un document avec le champ "nom"
égal à "Alice"
{ nom: "Alicia", age: 29, email: "alicia@[Link]" } //
Remplacer le document avec ces nouvelles valeurs
)

Dans cet exemple, replaceOne() recherche le premier document dans la


collection "maCollection" où le champ "nom" est égal à "Alice" et le
remplace par un nouveau document spécifié dans { replacement }. Le
document de remplacement doit avoir la même structure que le document
d'origine.
56 L’opération Delete

MongoDB propose deux méthodes différentes pour supprimer


des enregistrements d'une collection :

[Link]()

[Link]()
57 [Link]()
[Link](
{ filter }
• Syntaxe )

db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez supprimer un document


unique.

deleteOne() : Méthode pour supprimer un seul document qui correspond aux critères
spécifiés.

{ filter } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer le document
que vous souhaitez supprimer.
58 [Link]()

[Link](
• Exemple { nom: "Alice" } // Supprimer un document avec le
champ "nom" égal à "Alice"
)

Dans cet exemple, deleteOne() recherche le premier document dans la


collection "maCollection" où le champ "nom" est égal à "Alice" et le
supprime de la collection.
59 [Link]()
[Link](
{ filter }
• Syntaxe )

db : Référence à la base de données.

maCollection : Nom de la collection dans laquelle vous souhaitez supprimer plusieurs


documents.

deleteMany() : Méthode pour supprimer plusieurs documents qui correspondent aux critères
spécifiés.

{ filter } : C'est un objet BSON qui spécifie les critères de recherche pour filtrer les documents
que vous souhaitez supprimer.
60 [Link]()

[Link](
• Exemple { age: { $lt: 30 } } // Supprimer tous les documents où l'âge est
inférieur à 30
)

Dans cet exemple, deleteMany() recherche tous les documents dans la


collection "maCollection" où l'âge est inférieur à 30 et les supprime de
la collection.
61 Les opérateurs de comparaison

Les opérateurs de comparaison sont utilisés pour effectuer des requêtes


conditionnelles dans MongoDB.

1. $eq (Égal) Correspond aux documents où la valeur d'un champ est égale à une
valeur spécifiée.

2. $ne (Non Égal) Correspond aux documents où la valeur d'un champ n'est pas
égale à une valeur spécifiée.

3. $gt (Supérieur à) Correspond aux documents où la valeur d'un champ est


strictement supérieure à une valeur spécifiée.

4. $gte (Supérieur ou Égal à) Correspond aux documents où la valeur d'un champ est
supérieure ou égale à une valeur spécifiée.
62 Les opérateurs de comparaison
5. $lt (Inférieur à) Correspond aux documents où la valeur d'un champ est strictement
inférieure à une valeur spécifiée.

6. $lte (Inférieur ou Égal à) Correspond aux documents où la valeur d'un champ est
inférieure ou égale à une valeur spécifiée.

7. $in (Dans une liste) Correspond aux documents où la valeur d'un champ est
présente dans une liste de valeurs spécifiée.

8. $nin (Pas dans une liste) Correspond aux documents où la valeur d'un champ n'est
pas présente dans une liste de valeurs spécifiée.

Exemple : trouvera les documents où l'âge est compris entre 25 (inclus) et 30 (exclus).

[Link](
{ age: { $gte: 25, $lt: 30 } }
)

Vous aimerez peut-être aussi