Optimisation de requêtes sur des données massives dans un environnement distribué

La matérialisation (ou pré-calcul de résultats) est une des techniques permettant d'optimiser les requêtes. Le problème qui se pose alors peut être décrit comme suit: étant donné un ensemble de requêtes cibles (workload), quelles sont les "meilleures" parties de la base de données qu'on doit matérialiser afin d'optimiser le workload ? La définition de "meilleure" peut prendre plusieurs dimensions selon la fonction de coût que l'on veut minimiser.

Les choix de l'environnement distribué et du cadre applicatif ont également un impact très important : dans les réseaux distants (clouds,grilles), les temps de communication ne sont pas négligeables, l'usage de la mémoire partagée pour les machines parallèles est une contrainte forte lorsque les données manipulées sont massives. Toutes ces contraintes imposent de revisiter l'optimisation de requêtes lorsque les données sont massives et distribuées.

De premiers résultats ont été obtenus dans le cadre des cubes de données en tenant compte d'une famille restreinte de requêtes. Aussi, la dimension dynamique (des données et des requêtes) n'a pas été complètement prise en compte. Le travail demandé consiste à étendre les solutions au cas de requêtes plus complexes telles que les Skylines, Top-K, ou plus généralement les requêtes avec préférence. Dans un contexte interactif, l'utilisateur peut se contenter d’un « résumé » du résultat suffisamment significatif pour l’aider à préciser sa requête. La matérialisation peut être utilisée afin trouver « rapidement » les résumés. Enfin, on envisage d’étudier les problèmes traités dans un contexte distribué : non seulement on cherche les requêtes à pré-calculer mais aussi (i) par qui les calculer, (ii) où les stocker et (iii) comment les exploiter ? Le travail demande une étude théorique et une capacité à développer des programmes pour des expérimentations.

Page mise à jour le 24/05/2013 à 16:17