Examen BDA 2025
Rendu du TP1
Préparer ce que vous avez fait dans le TP1 pour être rendu.
Je veux avoir un unique archive (format zip ou
tar.gz) avec :
- Un répertoire racine
prenom.nom - Un sous répertoire
TP1 - Un sous répertoire
Exam
Vous pouvez prendre un peu de temps pour remettre en forme votre TP, mais attention, c’est du temps que vous ne mettrez pas sur le reste de l’examen.
La note prendra en compte la qualité des rendus dans Exam ET la qualité de TP.
Le rendu est à faire par mail
Une répartition des deux tables
Nous allons repartir sur le TD1 et mettant en place un mécanisme avec plusieurs bases de données en écritures qui se partage la table des messages.
Si vous n’avez pas executé le script préparatoire à cet examen, commencer par le faire, en téléchargeant ce script sur une VM fraiche crée pour l’occasion.
Ce dernier va :
- Préparer la VM en donnant aux correcteurs des accès
- Installer plusieurs packages
- Faire cohabiter trois instances de PostgreSQL sur la même machine.
Les bases de données vont cohabiter : l’une sur le port 5432, puis 5433 et 5434.
- Question 0 Installez le schéma du TD1 qui a été modifié dans chacune des instances PostgreSQL.
CREATE TABLE channel(
name TEXT PRIMARY KEY,
description TEXT,
created_date TIMESTAMP default now()
);
CREATE TABLE messages(
uuid TEXT PRIMARY KEY,
channel_name TEXT REFERENCES channel(name),
pseudo TEXT,
message TEXT,
inserted TIMESTAMP default now()
);L’objectif de ce TD–examen est de répartir chacune des deux tables
entre trois instances PostgreSQL. Le nombre d’instances
étant fixe, nous n’avons pas besoin d’implémenter d’algorithme
d’élasticité et nous pouvons utiliser une approche naïve.
Partie 1. Distribution des lignes de chaque table
Chacune des tables doit être distribuée sur les trois serveurs de manière non élastique. Nous n’ajouterons pas de bases de données supplémentaires par la suite.
Détaillez une stratégie de distribution des lignes pour chacune des
deux tables dans les trois instances dans votre fichier
Readme en faisant en sorte que chaque ligne soit présente
sur exactement deux instances de PostgreSQL (taux de réplication de
deux).
Est-ce que votre stratégie va répartir uniformément les lignes dans chacune des bases de données ?
Question 2. Taux de réplication
Quelles sont les avantages et les inconvénient d’un taux de réplication de \(2\) par rapport aux autres valeurs possibles ?
Question 3. Implémenter votre stratégie
Adapter l’API que vous avez réalisé dans le cadre du TD1 afin de réaliser la stratégie que vous avez suggéré dans la question 1.
Faites attention à ce que les données en sortie de votre API soient bien dédupliquée et ordonnée chronologiquement pour la fonction qui récupère les derniers messages.
Question 4. Système disponible ? Système Cohérent?
Dans l’état actuel de votre implémentation, et sans la modifier particulièrement, indiquez en justifiant, si votre système est cohérent, disponible, les deux ou aucun des deux?
- Proposez des modifications sans les réaliser qui pourrait permettre d’ajouter à votre implémentation la cohérence, la disponibilité ou les deux.
Question 5. Évaluez l’efficacité de votre stratégie
Détaillez dans le fichier Readme une proposition de méthodologie pour estimer l’efficacité de votre stratégie d’implémentation.
Mettez en place cette stratégie ou une version moins idéales de
celle-ci et donnez le résultat de votre mesure dans le
Readme.
Question 6. Convergence à terme
Une stratégie de cohérence à terme permet à un système qui
est toujours disponible de se rendre cohérent quand les nœuds se
reconnectent en réconciliant leur état. Proposez sans la
réaliser une stratégie de cohérence à terme que vous
détaillerez dans le fichier Readme.
Essayez d’implémenter ce mécanisme dans votre API.
Compiled the: lun. 20 oct. 2025 09:55:53 CEST