Il s’agit de contribuer à la
conception et l’implémentation d’une structure de données distribuées et
scalables capable de stocker des informations réparties dans un réseau
d’ordinateurs.
Les informations sont
stockées dans un arbre de recherche de binaire partitionné dynamiquement
en classes. Chaque classe est une partie de l’arbre et réside en
mémoire d’un serveur de données.
Des clients autonomes
peuvent ajouter, supprimer, modifier des informations ou tout simplement
faire des interrogations sur l’arbre global distribué sur le réseau. Les
clients disposent d’une image de l’arbre qui n’est pas en général
correcte. Cette image sera mise à jour au fur et à mesure qu’on effectue
les opérations sur l’arbre global.
Le nombre de nœuds par
serveur est un paramètre de la structure de données projetée. En
conséquence, quand celui-ci atteint un seuil donné, l’arbre est éclaté
en deux donnant ainsi naissance à un autre serveur de données et la
racine migre vers l’arbre parent selon une manière analogue à celle d’un
B-arbre.
Afin d’accélérer les
opérations dans les serveurs, les arbres ne seront pas maintenus
équilibrés (AVL ou Red Black). De temps à autre, on lance une procédure
qui équilibre totalement l’arbre.
Principaux problèmes :
Accès concurrent au
serveur, programmation réseau à l’aide socket,
Application :
implémentation d’une encyclopédie importante. |