Vous êtes sur la page 1sur 17

Compte rendu 1

Bases de Données Avancées

Réalisé par : Kaouther MESSAOUDI 3 DNI 2

2023-2024
Objectifs du TP :
Le TP aborde les points suivants :
1. Familiarisation avec un système NoSQL

2. Prise en main de la logique Map/Reduce


3. Familiarisation avec les concepts de réplication et sharding et Mise en place d’un cluster
MongoDB

Travail demandé :
1. Mise en route et opérations basiques
1.2. Shell Mongo et CRUD
les commandes show dBs et show collections permettent respectivement d’afficher les
bases et les collections créées.

Pour créer ou se placer sur une base différente, bdTest dans notre cas, tapez use bdTest.

1. Insérez un document dans la collection inventory comme suit :


2. Insérez un autre document dans la collection inventory comme suit :

3. Insérez plusieurs documents `à la fois avec la commande insertMany :

pour afficher les documents que vous venez d’insérer dans la collection inventory.

Recherche
Les recherches dans MongoDB se font avec les méthodes find, findOne et findMany. MongoDB
dispose d’un langage propriétaire pour interroger les collections. Ce langage a la même expressivité
que SQL excepté pour les jointures. Exécutez les requetés suivantes et donnez les requetés
´équivalentes en SQL.
• Cette commande cherche les documents dans la collection inventory où le champ
qty est égal à 25.
• SQL : SELECT * FROM inventory WHERE qty = 25;

Cette commande cherche les documents dans la collection inventory où le champ item
commence par la lettre "p" en utilisant une expression régulière.

SQL : SELECT * FROM inventory WHERE item LIKE 'p%';


Cette commande cherche les documents où le champ qty est 25 et renvoie uniquement le
champ item pour chaque document correspondant.

• SELECT item FROM inventory WHERE qty = 25;


Cette commande cherche les documents où le champ qty est inférieur à 30 en utilisant
l'opérateur $lt et compte le nombre de documents correspondants.

• SQL: SELECT * FROM inventory WHERE qty < 30;

permet de rechercher les documents où le champ status est égal à "A" ET le champ qty est
inférieur ou égal à 30.
SQL : SELECT * FROM inventory WHERE status = 'A' AND qty <= 30;
Cette commande cherche des documents dans la collection inventory où soit le champ
status est égal à "A" OU le champ qty est supérieur ou égal à 10.

SQL : SELECT * FROM inventory WHERE status = 'A' OR qty >= 10;

Cette commande cherche les documents où le champ qty est supérieur à 30 en utilisant
l'opérateur $gt (supérieur à).
Cette commande cherche les documents où le champ qty est 25 et renvoie uniquement le
champ item pour chaque document correspondant.
Modification
Les modifications se font avec les m´méthodes update, updateOne et updateMany. Ces
m´méthodes prennent en entrée deux paramètres, le premier indiquant les documents sur lesquels
s’effectuera la modification et le second la modification elle-même (db.collection.updateOne(, , )).
Suppression
La suppression se fait avec les m´méthodes delete, deleteOne et deleteMany.

2.2 Import d’un fichier • Telechargez la collection movies vue en cours `a l’adresse https://drive.
google.com/file/d/0BxrjRB_M1OMVOHJHQ3RDdW5KM2c/view?usp=sharing • Dans une autre
fenêtre, importer le fichier movies.json avec la commande ci-après. La commande importe les
documents contenus dans le fichier movies.json dans la collection movies de la base dbtp. Notez que
vous n’avez pas besoin de créer ni la collection ni la base avant d’exécuter la commande. L’argument
jsonArray de la commande indique `a l’utilitaire d’import qu’il s’agit d’un tableau d’objets `a créer
individuellement, et non d’un unique document JSON

7 Création d’un cluster MongoDB


7.1 Réplication
1. On crée deux instances du serveur sur la même machine, avec une base chacun. cd dbtp; mkdir
noeud1; mkdir noeud2 2. Lan¸cons maintenant les 2 serveurs, chacun sur un port. Ils forment le
Replica Set rs0
3. Connectons un client au premier serveur.

4. Et initialisons le RS

5. On peut alors ajouter le second noeud (remplacer localhost par le nom de la machine).
6. db.isMaster() : indique s’il s’agit du primary

7. rs.status() : informations complètes sur le replica set


8. Test d’insertion

=> On ne peut pas lire d’une nœud slave ;

rs.slaveOk(), cette commande permet de lire à partir d'un nœud esclave (slave) dans un ensemble de
réplicas. Lorsque vous exécutez rs.slaveOk() dans le shell mongo, cela autorise les opérations de
lecture sur un nœud esclave, ce qui signifie que vous pouvez effectuer des requêtes de lecture
(comme find) sur un nœud esclave, même si le serveur est configuré en tant que nœud esclave
(slave) dans un ensemble de réplicas.
Tuons notre maître.

Dans MongoDB, un ensemble de réplicas est un ensemble de serveurs MongoDB interconnectés qui
maintiennent des copies synchronisées des données, offrant ainsi une haute disponibilité et une
tolérance aux pannes. Chaque ensemble de réplicas a un nœud primaire (primary node) et plusieurs
nœuds esclaves (secondary nodes).

Si le nœud primaire (master) dans un ensemble de réplicas échoue ou devient inaccessible pour une
raison quelconque, MongoDB utilise un processus appelé élection pour élire un nouveau nœud
primaire (master) parmi les nœuds esclaves (secondary nodes) disponibles.

Voici comment le processus se déroule lorsqu'un nœud primaire (master) échoue dans un ensemble
de réplicas MongoDB :

• Détection de la panne du nœud primaire:


• Les autres nœuds du même ensemble de réplicas détectent la perte de communication avec
le nœud primaire (master). Cela peut être dû à une défaillance matérielle, un problème
réseau ou une maintenance planifiée.
• Élection d'un nouveau nœud primaire (master):
• Les nœuds esclaves (secondary nodes) qui restent accessibles et fonctionnels organisent une
élection pour choisir un nouveau nœud primaire (master) parmi eux.
• Le processus d'élection utilise un mécanisme basé sur la priorité, l'état de réplication, et
d'autres critères pour déterminer quel nœud esclave sera élu comme le nouveau nœud
primaire (master).
• Le nœud élu devient le nouveau nœud primaire (master) et prend en charge les opérations
d'écriture et de lecture.
• Reprise de l'activité normale:
• Une fois qu'un nouveau nœud primaire (master) est élu, le système reprend son activité
normale et les opérations d'écriture et de lecture peuvent être effectuées sur ce nouveau
nœud primaire.

Il est important de noter que ce processus d'élection est automatique et ne nécessite aucune
intervention manuelle. Cela garantit que le système reste disponible et fonctionnel même en cas de
panne d'un nœud primaire.

L'ajout d'un nouveau nœud au sein de l'ensemble de réplicas permet d'améliorer la redondance et la
tolérance aux pannes, mais cela ne modifie pas directement le processus d'élection. Le nouvel ajout
contribue à la distribution de la charge et à la répartition des données, améliorant ainsi les
performances et la résilience de l'ensemble de réplicas.

Vous aimerez peut-être aussi