Le Projet

Année 2013-2014

Former les binômes (pas de trinome).

Préparation

Vérifier que vous pouvez démarrer 2 serveurs kvstore. Attention chaque serveur doit avoir son propre dossier kvroot et son propre port d'écoute. Si le dossier kvroot est sur votre compte, préciser son emplacement lors du démarrage de kvlite. Préciser le port d'écoute au démarrage du serveur et également au démarrage des applications qui accèderont à votre serveur kvlite. Rmq: si vous disposez de plusieurs machines, vous pouvez démarrer les serveurs kvlite sur des machines différentes.

Partie 1 : Transactions et concurrence

Rédiger un rapport (+ code source commenté) du TmeKvstore. Au moins une page pour votre avis personnel sur la faisabilité de traiter des transactions avec un système de stockage de paires {clé,valeur}.

Partie 2 : Transactions et équilibrage de charge

Soit un profil Pi contenant des objets Oij. Chaque objet a 5 attributs numériques (valeur entière) et 5 attributs textuels (dont la valeur est un mot quelconque). On considère un ensemble de profils (P1 à P1000) avec leurs objets. Les profils sont répartis dans N bases (les stores S1 à SN). Une transaction Ti ajoute 100 nouveaux objets dans le profil Pi. Dans un profil, les numéros d'objet ajoutés sont consécutifs et suivent ceux des objets existants. On considère une application Ai qui itère pendant 10 secondes. Chaque itération consiste à exécuter une transaction Ti puis à mesurer son temps d'exécution. L'application Ai retourne le temps de réponse moyen de Ti.

Définir les clés servant à stocker les profils avec leurs objets et à connaitre le nombre d'objets que contient chaque profil.

Etape 1: Etat initial

Les profils sont répartis entre les stores, par hachage de la clé. Le store Sy contient les produits Pi tels que h(i)=y. On considère C transactions simultanées et indépendantes (chaque transaction accède à un profil différent). Soit Ky l'ensemble des clés k présentes dans Sy (telles que h(k)=y).

On a C applications A(k1) à A(kC) qui accèdent à des données de S1 (telles que ki appartient à K1 quel que soit i dans [1, C]). Mesurer le temps de réponse moyen pour différentes valeurs de C allant de 1 à 10. Que pouvez vous dire de l'augmentation du temps de réponse en fonction de C ? Recommencer les mêmes mesures après avoir limité les ressources de calcul que le store peut utiliser. Pour cela, éteindre le store puis le rallumer en utilisant la commande taskset :

taskset -c 1 java -jar lib/kvstore.jar kvlite -root /tmp/kvstore

On considère 5 applis A(a1) à A(a5) accédant à des données de S1 (tous les ai appartiennent à K1), et 5 applis A(b1) à A(b5) accédant à des données de S2 (tous les bi appartiennent à K2). Mesurer le temps de réponse moyen obtenu. Le temps de réponse est-il identique sur S1 et S2 ? Obtient-on un temps de réponse proche du cas C=5 de la question précédente ?

Etape 2: Catalogue

Décrire toutes les informations à connaitre pour pouvoir déplacer une donnée de Si vers Sj.

Etape 3: Déplacement

Proposer une solution pour déplacer une ou plusieurs données depuis un store trop chargé vers un store moins chargé.


Accueil, LesTme, DiversLiens, Anciens projets: Projet2004, Projet2005, Projet2006_2007, Projet2011, Projet2012