Flora - Un Optimiseur pour Bases de Donn ees a Objets1

Transcription

Flora - Un Optimiseur pour Bases de Donn ees a Objets1
Flora - Un Optimiseur
pour Bases de
1
Donnees a Objets
Daniela Florescu { Jean-Robert Gruser { Hubert
Naacke { Zhao-Hui Tang { Mikal Ziane
* Projet Rodin, INRIA-Rocquencourt. Bp 105, 78153 Le Chesnay Cedex
France
** Laboratoire CNRS-Prism, Universit
e de Versailles St-Quentin. 45, Avenue
des Etats-Unis 78035 Versailles Cedex France
*** Universit
e de Paris V, IUT - D
epartement Informatique. 143, Avenue de
Versailles 75016 Paris France
resume. Dans cet article nous presentons le systeme Flora, un environnement pour
l'optimisation de requ^etes a objets. S'appuyant sur une algebre tres generale qui supporte le modele ODMG et sur une architecture modulaire qui allie extensibilite et
ecacite, il est capable de tirer partie d'une riche palette de connaissances semantiques. Contrairement a la plupart des optimiseurs pour SGBDO, le systeme Flora
s'appuie sur un modele de co^ut. Ce modele de co^ut a ete partiellement valide et nous
resumons en n d'article les principaux resultats de cette validation.
abstract. In this article, we present the Flora system, a plateform for the optimization of object-oriented database queries. Based on a very general algebra which
supports the ODMG model, Flora can take advantage of sophisticated semantic knowledge. Contrary to most OODBMS's optimizers, the Flora system relies on a cost
model whose partial evaluation is also presented here.
mots-cles : base de donnees, requ^ete, objet, OQL, optimisation, modele de co^ut,
reecriture semantique.
key words : database, query, object, OQL, optimization, cost model, validation,
semantic rewriting.
1
Ce travail a ete partiellement nance par le projet ESPRIT IDEA.
1
1 Introduction
La declarativite et surtout la simplicite du systeme relationnel en ont fait un
cadre ideal pour l'optimisation de requ^etes. Les modeles a objets ne sont pas
aussi declaratifs mais surtout beaucoup plus complexes ce qui rend la realisation
d'un optimiseur nettement plus complexe. De nombreux SGBDO (Systeme
de Gestion de Bases de Donnees a Objets) n'ont d'ailleurs pas de veritable
optimiseur, ou bien celui-ci ne s'appuie que tres rarement sur un modele de
co^ut.
Dans le cadre du projet ESPRIT IDEA, nous avons concu, realise et partiellement valide un environnement pour l'optimisation de requ^etes a objets:
le systeme Flora. Vu la diversite des modeles a objets, nous avons deni une
algebre tres generale qui supporte notamment le modele ODMG. Cette algebre
est decrite formellement et en detail dans Flo96]. Nous en presentons ici une
version tres synthetique et informelle (section 2).
Lors de la conception de l'optimiseur Flora, deux objectifs principaux se sont
naturellement imposes. D'abord, il est essentiel d'obtenir des plans d'execution
ecaces avec des temps d'optimisation raisonnables. Ensuite, le contexte objet, fortement evolutif, suggere que l'optimiseur soit extensible, an de pouvoir
s'adapter aux evolutions des langages de requ^etes et des techniques d'evaluation.
Nous avons donc deni une architecture modulaire basee sur un petit ensemble
de concepts generaux mis en oeuvre de facon uniforme (section 3).
Un des points forts de notre optimiseur est sa capacite a utiliser un ensemble
particulierement riche de connaissances semantiques. Ces connaissances sont
exprimees dans un langage declaratif qui permet de les enrichir tres facilement
(section 4).
Contrairement a la plupart des optimiseurs pour SGBDO, le notre s'appuie
sur un modele de co^ut (section 5). Cette approche, bien que plus complexe
que celle basee sur des heuristiques, permet d'obtenir des plans d'execution de
meilleure qualite. Pour cela il faut neanmoins que le modele de co^ut soit able,
c'est pourquoi nous avons fait porter une partie de nos eorts sur la validation
de ce modele (section 6).
1.1 Contexte
Le systeme Flora est un environnement pour l'optimisation de requ^etes objet.
Il comporte essentiellement un compilateur qui traduit une requ^ete objet en un
programme imperatif ecace, exprime dans le langage d'interface du SGBDO
cible.
L'optimiseur Flora n'est pas concu pour un SGBD particulier. Cependant,
nous supposons que le SGBD cible fait partie de la famille \langage de programmation de base de donnees". Ce type de SGBD objet etend des langages
de programmation objet, comme C++ ou Smalltalk, avec des fonctionnalites
bases de donnees (persistance, transactions, requ^etes, etc.). Ils orent aussi un
langage de requ^etes declaratif, qui s'execute dans le m^eme environnement que
l'application, en partageant le systeme de types et l'espace de travail du langage
de programmation. Cette architecture fournit un seul environnement pour les
2
donnees les objets de la base apparaissent alors de facon transparente comme
des objets du langage de programmation. Des exemples de tels systemes sont
O2 et ObjectStore, que nous avons utilise pour valider notre optimiseur.
L'architecture du prototype Flora est decrite gure 1. Ses composants principaux sont la metabase, le compilateur et l'explainer. La m
etabase est la partie du compilateur qui permet de gerer les informations decrivant les donnees
stockees dans la base, informations qui sont necessaires pour la compilation
des programmes et l'optimisation de requ^etes. La metabase contient plusieurs
types d'informations: (i) les informations relatives au schema objet, c.-a-d. la
denition des classes, des types et fonctions utilisateurs, et la denition des
variables nommees (ii) les informations concernant les contraintes d'integrite
(iii) les denitions des vues (materialisees ou virtuelles) (iv) les statistiques correspondant aux donnees et (v) les decisions concernant le placement physique
des donnees, ainsi que la denition des methodes d'acces disponibles.
Le modele de donnees est celui du standard ODMG RGGC93]. C'est celui
de la plupart des prototypes et produits SGBDO recents qui cherchent a deployer completement l'approche objet.
Le compilateur accepte en entree deux langages: Flora et OQL. Complet
et simple, le langage OQL manipule des objets complexes sans privilegier la
construction ensembliste, ni la clause select-from-where. Une requ^ete dans ce
langage est syntaxiquement construite par l'application recursive d'operateurs,
de methodes ou de fonctions, en partant de constantes et de variables.
Le langage Flora FGN+ 95] a ete concu (en parallele a OQL) pour la manipulation et l'interrogation des donnees objet. Flora est un langage imperatif
fortement type, base sur le modele objet du standard ODMG. Il supporte naturellement les calculs sur les collections, notamment les requ^etes declaratives,
comme le langage propose dans Bla94]. Ainsi, les requ^etes declaratives et le
code imperatif se combinent dans le m^eme programme, s'appuyant sur le m^eme
systeme de types. La conception du langage Flora nous a permis de developper
tres t^ot un optimiseur de requ^etes objet qui a pu ^etre facilement adapte au
langage OQL.
Les composants majeurs du compilateur sont les suivants: (i) l'analyseur
syntaxique et semantique, (ii) l'optimiseur de requ^etes, (iii) le generateur de
code. Pendant la compilation, le programme ecrit en Flora (sa partie imperative, aussi bien que sa partie declarative) est traduit par l'analyseur syntaxique
dans la representation interne. Ensuite, le vericateur de type teste la correction du programme, en utilisant les informations du schema stockees dans la
metabase. Lors de la verication syntaxique, les expressions select-from-where
(SFW)1 sont detectees et envoyees a l'optimiseur.
Pour chaque requ^ete, l'optimiseur examine un ensemble de plans d'execution
et choisit le plan d'execution le plus ecace parmi ceux examines. Le m^eme
optimiseur peut ^etre utilise pour la compilation de ces deux langages (Flora et
OQL) car (i) les deux langages s'appuient sur le m^eme modele de donnees et sur
1 M^
eme si syntaxiquement, les autre types d'expression correspondent aussi a des requ^etes
OQL, elles ne sont pas interessantes du point de vue de l'optimisation.
3
Schema
Requete
Contraintes d’integrite
Vues
Catalog
Compilateur
Analyseur
utilise
Metabase
Schema
Contraintes d’Integrite
Definitions de Vues
Optimiseur
Statistiques
Placement
Generateur de code
Program imperatif
Figure 1: L'architecture du compilateur Flora.
le m^eme systeme de types et (ii) les requ^etes OQL correspondent parfaitement a
la partie declarative du langage Flora. L'algebre objet proposee a la section 2 et
qui constitue la base formelle de notre travail d'optimisation, peut representer
aussi bien les requ^etes OQL que la partie declarative du langage Flora.
Dans Flora, l'optimisation des requ^etes est statique, c.-a-d. precede leur
execution. Ainsi, chaque requ^ete est optimisee une seule fois quel que soit le
nombre d'execution de cette requ^ete.
Le plan d'execution produit par l'optimiseur pour une requ^ete donnee remplace la requ^ete correspondante dans le programme initial. Le g
en
erateur de
code traduit ensuite la representation interne du plan d'execution dans un programme du langage imperatif admis par le SGBDO cible. Dans le prototype
actuel, le code genere par l'optimiseur est exprime dans le langage O2 C/O2Api
pour ^etre execute par le SGBD O2 . Ce langage utilise le m^eme systeme de
types que les langages d'entree (OQL ou Flora) et possede les primitive de
base pour exprimer les plans d'execution produits par l'optimiseur (c.-a-d. les
primitives d'iteration sur les collections et les primitives utilisant les methodes
d'acces telles que les index).
Finalement, l'explainer permet, gr^ace a son interface graphique, de piloter
la compilation et l'optimisation de requ^etes, l'execution des plans produits, la
visualisation graphique des informations gerees par la metabase, des requ^etes et
des plans d'evaluation examines par l'optimiseur, le parametrage de l'activite
4
de l'optimiseur et l'execution des programmes generes par le SGBDO cible.
1.2 Criteres de qualite de l'optimiseur
KMP93] propose un certain nombre de criteres de qualite qui peuvent ^etre
resumes comme suit:
extensibilit
e et adaptabilit
e: l'architecture de l'optimiseur doit pouvoir ^etre
adaptee facilement a de nouvelles methodes d'acces, de nouvelles transformations, etc., au fur et a mesure que celles-ci sont supportees par le systeme
am
elioration progressive: l'optimiseur doit pouvoir ^etre ameliore au fur et
a mesure de l'experience accumulee apres l'optimisation d'un certain nombre
de requ^etes. A l'extr^eme, nous pouvons imaginer un optimiseur qui s'adapte
lui-m^eme en fonction du retour (feed-back) qu'il peut obtenir apres l'execution
des requ^etes
pr
evision de la qualit
e: le compromis entre le temps consacre a l'optimisation
et la qualite du meilleur plan d'execution produit doit ^etre considere. En eet,
la qualite du plan d'execution doit ^etre mesuree en fonction du temps necessaire a l'optimiseur pour le produire
d
egradation douce: ce critere est lie au precedent. En reduisant le temps
d'optimisation, la qualite du meilleur plan d'execution produit doit se degrader
doucement tout en restant raisonnable
evaluation anticip
ee des alternatives : les performances de l'optimiseur dependent fortement du nombre d'alternatives examinees. Typiquement, des heuristiques sont utilisees pour restreindre l'espace de recherche examine. Une strategie
egalement ecace consiste a retarder l'examen des alternatives potentiellement
moins interessantes. Pour cela, il faut pouvoir estimer tres t^ot la qualite du
meilleur plan d'execution courant.
Durant la conception de l'optimiseur Flora nous avons toujours eu comme
objectif de satisfaire ces criteres de qualite.
2 Algebre objet
Un plan d'execution pour une requ^ete peut ^etre represente par un terme d'une
certaine algebre. Les entites manipulees ainsi que les transformations qui constituent la base du processus d'optimisation dierent selon l'algebre supportee
par l'optimiseur. Le choix de l'algebre determine la puissance du modele de
donnees, la puissance du langage de requ^etes supporte ainsi que la complexite
et les performances de l'optimiseur.
Deux criteres essentiels ont guide le choix de notre algebre objet. D'abord,
elle doit supporter le standard ODMG, ce qui revient a avoir un systeme de
types aussi general que le modele objet ODMG et un ensemble d'operateurs
capable de supporter le langage de requ^etes objet OQL. Ensuite, l'ensemble
des operateurs de l'algebre doit faciliter le processus d'optimisation.
Les SGBDO representent les objets conceptuels en utilisant des identiants
d'objets (OIDs). Conceptuellement, un objet est un couple (OID valeur). Les
objets de m^eme nature sont regroupes en classes. L'ensemble des types de
5
notre algebre est deni en appliquant recursivement quatre constructeurs de
type: set, list, bag et tuple, a partir de l'ensemble des classes de la base de
donnees et de l'ensemble des types atomiques predenis (ex. string, integer).
2.1 Les operateurs de l'algebre
Contrairement a l'algebre relationnelle, dont les operateurs ne manipulent que
des relations (c.-a-d. ensembles de tuples), une algebre objet doit manipuler
uniformement des donnees de n'importe quel type (entier, objets, ensemble
d'entiers, listes de listes, etc.). Ainsi, notre algebre objet doit avoir des operateurs manipulant des collections et des operateurs manipulant les donnees simples, comme par exemple, les operateurs arithmetiques, les operateurs booleen,
etc. Les operateurs manipulant des collections sont similaires aux operateurs
de l'algebre relationnelle (c.-a-d. union, dierence, selection, projection, etc.).
L'algebre utilisee est une algebre typee. Chaque operateur a une signature
qui decrit le type des donnees auxquelles il peut ^etre applique et chaque terme
de l'algebre a un type associe. Elle manipule uniformement des operateurs du
premier ordre (c.-a-d. dont les arguments sont des donnees) comme les operateurs arithmetiques, l'union ou la dierence, et des operateurs du second ordre
(c.-a-d. dont les arguments peuvent ^etre des fonctions) comme les quanticateurs, l'operateur de groupement et les operateurs de selection, projection et
jointure.
Trois algebres dierentes sont considerees dans le processus d'optimisation:
l'algebre initiale, dont les termes constituent une representation directe des
requ^etes OQL, l'algebre logique contenant un ensemble d'operateurs logiques
elementaires (c.-a-d. pour lesquels il existe un algorithme les implantant) et
l'algebre physique contenant l'ensemble des algorithmes implantes dans les couches
basses du systeme. Classiquement, les optimiseurs considerent seulement deux
niveaux d'abstraction (c.-a-d. l'algebre logique et l'algebre physique), mais,
pour certaines techniques d'optimisation(ex. l'optimisation semantique ou l'utilisation
des vues materialisees), l'introduction d'un niveau supplementaire est necessaire.
De nombreux operateurs sont communs entres ces trois niveaux. Par exemple, les operateurs arithmetiques ne sont pas modies lors du processus
d'optimisation. Par contre, l'operateur de selection-projection-jointure n-aire
(SPJ) deni dans l'algebre initiale est transforme dans l'algebre logique en
operateurs unaires ou binaires.
2.2 Les Operateurs SPJ
Le choix des operateurs SPJ a ete guide par les motivations suivantes: (i)
l'algebre doit contenir des operateurs susamment riches pour couvrir le langage OQL et (ii) elle ne doit pas contenir d'operateurs redondants.
L'algebre initiale. Ce niveau d'algebre contient un seul operateur n-aire,
collect, qui generalise les operateurs SPJ, avec toutes leurs variantes connues
6
dans l'algebre relationnelle (jointure externe, semi-jointure, etc.) ou dans les
algebres objet (ex. jointure dependante). Cet operateur construit une collection
resultat a partir de n collections (non necessairement independantes), d'une
fonction de selection n-aire et d'une fonction de projection n-aire. Il est deni
par deux variantes: collect , correspondant a la decision exprimee en OQL
\les duplicats sont gardes et l'ordre n'est pas preserve dans le resultat", et
collect , correspondant a la decision \les duplicats et l'ordre sont preserves
dans le resultat".
L'algebre logique. Dans l'algebre logique, les operateurs n-aires collect et
collect se decomposent chacun en deux operateurs: un operateur unaire de
selection-projection et un operateur binaire de selection-projection-jointure.
L'algebre physique. A chaque operateur unaire ou binaire de l'algebre
initiale correspond un certain nombre d'algorithmes physique l'implantant.
L'operateur select se transforme en deux algorithmes scan et indexscan.
L'operateur join se transforme dans l'algebre physique en cinq algorithmes
dont hashjoin, indexjoin et nestedjoin.
bag
list
list
bag
bag
bag
Nous pouvons faire deux remarques concernant les algebres objet que nous
considerons. Premierement, les operateurs SPJ (c.-a-d. l'operateur n-aire collect
de l'algebre initiale, ainsi que les operateurs unaires ou binaires select et join de
l'algebre logique) sont presentes avec deux variantes (bag et list), selon le type
des collections arguments et le type de la collection resultat. En eet, le code
genere (c.-a-d. le modele d'execution) pour toutes ces variantes est identique.
Par exemple, les deux variantes de l'operateur collect s'executent par n boucles
imbriquees. Cependant, certaines transformations utilisees pas l'optimiseur ne
s'appliquent que sur une certaine variante de ces operateurs. Deuxiemement,
l'operateur binaire de jointure de notre algebre ne verie aucune propriete
algebrique telle que la commutativite ou l'associativite. En eet, comme il
generalise la jointure dependante et la jointure sur les listes, cet operateur
n'est pas commutatif. De plus, il prend en entree non seulement deux collections mais aussi deux fonctions representant le predicat a tester et la projection
a appliquer. Il ne peut donc pas verier la propriete d'associativite. Ceci a une
consequence importante sur l'algorithme d'ordonnancement d'operations que
nous pouvons utiliser. En eet, ces algorithmes, developpes dans le cadre de
l'algebre relationnelle, exploitent les proprietes algebriques de ces operateurs.
3 Architecture
L'architecture de l'optimiseur Flora a ete concue pour atteindre un bon compromis entre ecacite et extensibilite, c.-a-d. en preservant les avantages des
optimiseurs bases sur des regles, sans penaliser ni le temps d'optimisation, ni
la qualite du plan d'execution produit. Pour ^etre extensible, l'optimiseur Flora
est base sur un ensemble de transformations elementaires. Cependant, an
d'eviter les surco^uts inherents aux optimiseurs bases sur des regles (en particulier le pattern-matching), les transformations algebriques predenies (communes a toutes les applications) ne sont pas decrites dans un langage declaratif
7
mais codees directement dans l'optimiseur. Pour simplier le probleme du
contr^ole de l'application des regles dans le contexte objet ou le nombre de
transformations est tres grand, nous avons opte pour une architecture modulaire, comme celle proposee dans MZD93] . D'autre part, le choix du meilleur
plan d'execution est eectue en fonction d'un modele de co^ut.
Un autre objectif important a ete de construire une bonne plateforme pour
experimenter les elements principaux d'un optimiseur: les transformations, les
heuristiques, les strategies de recherche et les fonctions de co^ut. Pour ce faire,
nous avons construit un module d'explication graphique, appele explainer, qui
permet d'etudier et de demontrer le comportement de l'optimiseur.
3.1 Espaces de recherche
L'activite principale de l'optimiseur est d'explorer l'espace de recherche, c.-a-d.
l'ensemble des plans d'execution equivalents a la requ^ete initiale.
Une requ^ete est representee dans l'optimiseur par un terme algebrique.
Graphiquement, un terme peut ^etre represente par un arbre, dont les feuilles
representent des donnees et les nuds internes representent des operateurs (qui
peuvent ^etre des operateurs predenis de l'algebre ou des operateurs denis par
l'application).
La representation interne est susamment generale pour pouvoir coder aussi
bien les requ^etes initiales, que les plans d'execution physiques. Une requ^ete
initiale est representee par un terme de l'algebre initiale et un plan d'execution
par un terme de l'algebre physique.
Pendant l'optimisation, l'optimiseur maintient en permanence trois espaces
de recherche: l'espace de recherche initial, l'espace de recherche logique et
l'espace de recherche physique. Chaque espace de recherche contient la liste
(sans double) des termes de son l'algebre respective (initiale, logique ou physique),
equivalents au terme correspondant a la requ^ete a optimiser.
L'optimisation debute par l'introduction du terme correspondant a l'espace
de recherche initial. A la n de l'optimisation, le terme de co^ut minimal de
l'espace de recherche physique constitue le resultat de l'optimisation.
An de satisfaire le critere de qualite \evaluation anticipee des alternatives"
que nous nous sommes xe, l'optimiseur associe a chaque terme, independamment du niveau d'algebre, une estimation de co^ut d'evaluation potentiel. Par
exemple, pour les termes de l'algebre initiale, la fonction du co^ut est proportionnelle a la quantite des donnees impliquees dans la requ^ete2 . Pour les
termes de l'algebre logique, qui contient deja l'ordonnancement d'operations,
une estimation du co^ut d'evaluation plus ne est possible, en supposant que
l'algorithme physique le plus co^uteux est utilise pour chaque operateur logique
(nestedLoop pour l'operateur join, et scan pour l'operateur select, etc.). Finalement, pour les termes de l'algebre physique, une estimation de co^ut plus
complexe est eectuee.
2 Le but n'est pas d'obtenir une estimation ne du temps r
eel d'execution. Ce qui nous
interesse ici est le ratio des co^uts d'evaluation des termes de chaque espace de recherche.
8
Les fonctions de co^ut utilisees dans l'optimiseur Flora sont developpees dans
Gru96]. Les plans d'execution incomplets3, potentiellement co^uteux sont examines par l'optimiseur le plus tard possible.Dans chaque espace de recherche,
les termes sont tries en permanence selon leur fonction de co^ut. Lorsqu'un nouveau terme est produit, il est insere dans son espace de recherche en fonction
du co^ut estime.
3.2 Architecture modulaire
En concevant l'optimiseur Flora, nous nous sommes eorce de preserver les
avantages de l'approche par regles sans sourir de ses inconvenients. Ainsi,
l'optimiseur est base sur une bibliotheque de transformations elementaires,
logiquement formulees comme des couples de termes equivalents, avec variables libres. Du point de vue de l'implementation, une transformation est un
objet qui peut ^etre active par l'envoi d'un terme de l'algebre et qui produit un
ensemble de termes equivalents.
Les transformations peuvent ^etre classees en fonction des connaissances
qu'elles utilisent. Les transformations pr
ed
enies n'utilisent que les proprietes
algebriques des operateurs predenis de l'algebre (ex. la commutativite de
l'operateur union avec l'operateur select). Ces transformations sont communes
a toutes les applications. Pour augmenter leur ecacite, ces transformations ne
sont pas ecrites dans un langage declaratif (ce qui impliquerait l'utilisation d'un
algorithme de pattern-matching), mais implantees directement dans l'optimiseur.
Un autre type de transformations concerne les transformations s
emantiques
utilisant les connaissances speciques a une certaine application (ex. la reecriture basee sur les liens inverses ou la reecriture en utilisant des vues materialisees), decrites en utilisant des assertions. Lors de la compilation d'une assertion, une nouvelle transformation semantique est ajoutee a la bibliotheque des
transformations elementaires.
Pour eviter le contr^ole complexe de l'application des transformations elementaires, celles-ci sont regroupees dans des modules, comme dans l'optimiseur
Epoch MZD93]. Les transformations utilisant le m^eme type de connaissances
sont donc regroupees dans le m^eme module. Par exemple, les principaux
modules de l'optimiseur Flora sont la simplication, la reecriture semantique,
l'ordonnancement d'operations, la reecriture algebrique et l'optimisationphysique.
Chaque module a un but particulier et une strategie locale qui determine la
facon dont le module atteint son but. De facon similaire aux transformations,
les modules sont des objets que l'on peut activer en leur envoyant des termes.
Un module active produit un ensemble de termes equivalents, en appliquant
sa propre strategie. Pour atteindre son but, un module peut faire appel a des
transformations et/ou a d'autres modules.
Les modules sont regroupes dans une hierarchie. Un module parent peut
activer des modules ls, en leur envoyant des termes (en utilisant la m^eme
3 On appelle incomplet un plan d'ex
ecution qui ne contient pas encore toutes les decisions
d'evaluation.
9
interface que pour les transformations). Un module ls produit un ensemble de
termes equivalents, selon sa strategie locale, et les retourne au module parent.
Un module parent peut appeler un module ls, mais ne contr^ole en aucun cas
la strategie locale de ce dernier.
Cette architecture modulaire permet un grand degre d'extensibilite. Tout
d'abord, l'ensemble des transformations elementaires peut ^etre etendu facilement. L'ajout d'une nouvelle transformation dans l'optimiseur necessite seulement son codage et son integration dans le module qui lui correspond. Ainsi, cet
ajout se fait sans impact sur le code de l'optimiseur. De plus, la strategie locale
de chaque module peut ^etre changee localement, sans impact sur les autres modules. Par exemple, on peut changer la strategie du module d'ordonnancement
d'operations ou on peut inhiber l'optimisation semantique, sans changer le reste
de l'optimiseur.
Il y a cependant des restrictions sur l'ordre d'application des transformations
et/ou des modules, car ils ne peuvent pas ^etre combines de facon arbitraire.
Certains modules supposent que d'autres modules ou transformations ont ete
deja invoques (c.-a-d. l'ordonnancement d'operations doit ^etre eectue apres
l'optimisation semantique, les predicats doivent ^etre mis sous la forme normale
avant d'eliminer les quanticateurs, etc.).
3.3 Principaux modules
Les principaux modules utilises par l'optimiseur Flora sont la simplication, la
r
e
ecriture s
emantique, l'ordonnancement d'op
erations, la r
e
ecriture alg
ebrique
et l'optimisation physique. Dans cette section nous presentons leur buts, leurs
strategies ainsi que les transformations appliquees par chacun de ces modules.
Le but du module de simplication est de transformer le terme SFW (SelectFrom-Where) initial (terme de l'algebre initiale) dans un terme equivalent
(toujours un terme de l'algebre initiale), a la fois plus simple et plus facile
a optimiser. Ceci est realise en appliquant les transformations suivantes: (i)
elimination des variables locales (ii) elimination des vues virtuelles (iii) desimbrication des requ^etes imbriquees dans la clause from (iv) desimbrication des
requ^etes imbriquees dans la clause where (v) mise sous forme normale des
predicats (vi) ajout de la clause distinct (si possible) (vii) elimination des
quanticateurs existentiels (si possible). Contrairement aux transformations
appliquees dans les autres modules, elles ne creent pas de choix mais transforment directement le terme original.
Le but de la r
e
ecriture s
emantique est d'examiner, a partir d'une requ^ete
OQL originale (c.-a-d. un terme de l'algebre initiale), un ensemble de requ^ete
OQL equivalentes (c.-a-d. termes de l'algebre initiale) potentiellement moins
co^uteuses a evaluer. Ceci est realise en appliquant des transformations qui
utilisent les connaissances semantiques (c.-a-d. contraintes d'integrite) et/ou
les connaissances concernant les vues materialisees.
Deux observations peuvent ^etre faites concernant ce module. Premierement,
les transformations appliquees ici creent des choix, c.-a-d. par l'application de
ces transformations, le terme original n'est en aucun cas modie. Un nouveau
10
Simplification
Reecriture source a source
Algebre Intiale
cout croissant
Ordonancement d’Operations
Reecriture Algebrique
Algebre Logique
Controle
Global
cout croissant
Optimisation Physique
Algebre Physique
cout croissant
Figure 2: Les espaces de recherche.
terme produit par une telle transformation est insere a son tour dans la liste
qui forme l'espace de recherche initial, s'il n'existe pas deja. Deuxiemement, la
strategie de ce module consiste a appliquer des transformations semantiques,
en boucle, jusqu'a la n de l'optimisation, contrairement au module de simplication, qui ne s'execute que lorsqu'un autre module l'appelle explicitement.
Le module d'ordonnancement d'op
erations construit, a partir d'un terme de
l'espace de recherche initial, un ensemble de termes de l'algebre logique. Ceuxci sont inseres dans l'espace de recherche logique, en fonction de leur co^ut. De
facon similaire au module precedent, le module d'ordonnancement d'operations
s'execute dans une boucle, sans interruption jusqu'a la n de l'optimisation. Il
examine ainsi les termes de l'algebre initiale (c.-a-d. les elements de l'espace de
recherche) dans l'ordre croissant de co^uts, les plans incomplets potentiellement
co^uteux etant examines apres les plans de co^uts potentiellement reduits.
Le module de r
e
ecriture alg
ebrique applique aux termes de l'espace de
recherche logique un ensemble de transformations correspondant aux proprietes
des operateurs de l'algebre logique. Il produit ainsi d'autre termes, qui sont
11
inseres dans le m^eme espace, selon leurs co^uts respectifs.
La dierence avec la reecriture algebrique eectuee dans les optimiseur relationnels, reside principalement dans l'absence des transformations habituelles,
provenant de l'associativite et de la commutativite de l'operateur join et de la
commutativite de l'operateur join avec l'operateur select, car ces deux operateurs ne verient plus ces proprietes algebriques. Par consequent, la complexite
de la reecriture algebrique est bien reduite.
Finalement, a chaque terme de l'algebre logique correspond un ensemble de
termes de l'algebre physique, construit par le module d'optimisation physique.
La t^ache principale de ce module est de detecter, en fonction des structures
d'acces disponibles, les algorithmes physiques qui peuvent executer chaque
operateur logique. Les nouveaux termes produits sont inseres, en fonction de
leur co^ut dans l'espace de recherche physique.
Une image globale de l'activite de l'optimiseur est donnee gure 2.
3.4 Contr^ole de l'optimiseur
Classiquement, un optimiseur procede en un certain nombre d'etapes (c.-a-d.
reecriture, ordonnancement de jointures, optimisation physique), executees
sequentiellement. Determiner un contr^ole xe c.-a-d. un ordre exact pour
l'application des transformations et/ou des modules, adapte pour toutes les
requ^etes, est une t^ache d'une grande complexite. De plus, trouver un tel ordre
semble impossible si l'on desire que l'optimiseur produise un plan d'execution
ecace dans un temps optimal quelle que soit la requ^ete.
Dans notre optimiseur, nous avons mis en oeuvre la solution suivante. Les
modules de reecriture semantique, d'ordonnancement d'operations, de reecriture algebrique et d'optimisation physique s'executent de facon concurrente.
Chaque module est execute par un processus leger (\thread") dierent, ce qui
permet leur execution simultanee, sans synchronisation globale rigide.
Un avantage considerable de cette approche est le fait que l'optimiseur possede, a tout moment4, au moins un plan d'execution. A chaque instant du
processus d'optimisation, le meilleur plan est toujours le premier terme de
l'algebre physique. Il est evident que le co^ut estime pour le meilleur plan
d'execution diminue avec le temps d'optimisation. Ainsi, l'optimisation peut
^etre interrompue a tout moment, ce qui satisfait le critere de qualite \degradation douce'.
L'activite de l'optimiseur est supervisee par un contr^oleur global qui peut
interrompre l'executions des modules lorsque l'une des conditions suivantes est
veriee: (i) le temps d'optimisation depasse le budget maximal admis, (ii)
la taille de l'espace de recherche initial examine depasse la limite superieure
admise, (iii) la taille de l'espace de recherche logique examine depasse la limite superieure admise, (iv) la taille de l'espace de recherche physique examine depasse la limite superieure admise, (v) le meilleur plan d'execution produit est satisfaisant, (vi) le rapport entre le temps d'optimisation et le temps
4
Au moins apres la production du premier plan d'execution.
12
d'execution estime pour le meilleur plan d'execution depasse la limite maximale
admise.
4 Optimisation semantique
Dans les bases de donnees relationnelles, l'optimisation semantique a pour objectif de tirer prot des connaissances sur des entites du monde reel, et donc
des proprietes des donnees stockees dans la base, an de trouver, pour une
requ^ete donnee, des alternatives de calcul ecaces. L'information semantique
est typiquement decrite par un ensemble de contraintes d'integrite.
Avec un modele de donnees objet, les donnees sont principalement structurees en classes, qui peuvent capturer directement les associations et le code
applicatif. Les donnees sont representees dans la base comme des objets et
les associations sont implementees par des liens directs (via les identiants
d'objets) qui permettent un acces navigationnel rapide entre les dierents objets. En speciant pour une certaine classe un lien mono ou multi-value vers
une autre classe, les requ^etes peuvent suivre ce lien an d'atteindre les objets recherches. Dans ce cas, les alternatives de calcul pour une telle requ^ete
ne sont plus construites en utilisant les proprietes algebriques des operations,
mais, principalement, en utilisant la semantique des liens qui relient les nuds
dans le graphe d'objets.
Certaines contraintes semantiques sont representees naturellement et maintenues sans surco^ut dans les SGBDO en etant directement exprimees dans le
schema. Les contraintes de ce type sont appelees les contraintes s
emantiques
implicites. Des exemples typiques de contraintes d'integrite implicites sont la
relation de sous-typage et la relation referentielle (c.-a-d. les liens directs entre les classes), qui representent deux notions inherentes au modele objet. Les
contraintes qui sont explicitement speciees par les utilisateurs sont appelees
contraintes s
emantiques explicites. Le but de cette section est d'examiner ce
deuxieme type de contraintes qui, dans un certain sens, generalise les contraintes implicites. Nos contraintes semantiques explicites sont typiquement
des predicats decrivant des proprietes veriees par les donnees de la base.
Nous avons identie plusieurs categories de connaissances semantiques. Une
premiere categorie concerne les assertions d'equivalence qui permettent de declarer les eventuelles redondances de donnees dans la base. Un seconde categorie concerne les assertions de valeur nulle des expressions elles permettent d'appliquer des transformations classiques (\type-based rewriting") qui
font la correspondance entre les jointures fonctionnelles et les jointures explicites avec les extensions de classes. Une troisieme categorie concerne les cles
(c.-a-d. identiants uniques) des diverses collections, en generalisant la notion
de cle telle qu'elle est denie dans la norme ODMG. Finalement, les assertions
d'inclusion ou les assertion d'appartenance generalisent les informations que
l'on peut obtenir en exploitant la denition des classes (ex. relation d'heritage,
l'appartenance d'une instance d'une classe a l'extension de la classe respective, etc.) pour des donnees qui ne sont pas forcement des objets et pour des
collections qui ne sont pas forcement des extensions de classes.
13
4.1 Les assertions d'equivalence
L'elimination de la redondance des donnees n'est pas un objectif de la conception d'un schema de base de donnees objet. La connaissance concernant
la redondance de donnees peut ^etre utile pour l'optimisation, car elle permet
d'examiner plusieurs manieres d'obtenir les m^emes donnees demandees par une
requ^ete, avec des co^uts potentiellement dierents.
Les redondances eventuelles d'un schema objet sont speciees a l'optimiseur
a l'aide d' assertions d'equivalence que nous denissons comme suit. Une assertion d'
equivalence est une formule logique du premier ordre de la forme
suivante:
forall
< variable declaration >] ]
t1
t2
ou une declaration de variable peut avoir l'une des formes suivantes:
<var name> of type <type expression>
<var name> in <col>
(1)
(2)
ou t1 et t2 sont des termes du m^eme type et chaque terme col utilise dans
une declaration de variable est un terme de type set, bag ou list. Les termes
utilises dans les declarations de variables, ainsi que t1 et t2 peuvent utiliser
les variables nommees du schema, ainsi que les variables quantiees declarees
auparavant. Les expressions de type utilisees dans la declaration des variables
peuvent ^etre des expressions de type generales avec des variables.
Dans le processus d'optimisation, les assertions d'equivalence sont utilisees
comme des regles de reecriture. Une assertion d'equivalence arme que deux
termes t1 et t2 sont evalues a la m^eme valeur pour toute substitution correcte
des variables quantiees. Etant donne un terme initial t a optimiser, elle permet
de remplacer toute occurence de t1 dans t par t2 (ou les occurences de t2 par
t1), produisant ainsi des termes equivalents a t.
La correction de la reecriture(c.-a-d. le fait qu'un terme t derive de t en
utilisant l'assertion A est equivalent a t) est assuree seulement si l'assertion
A est valide. Dans toutes les instances de bases de donnees du schema S ou
l'assertion A est valide, nous garantissons que les deux termes t et t sont
evalues a la m^eme valeur.
0
0
4.2 Autres assertions
A la dierence de SQL, le langage OQL est un langage type et la connaissance
concernant les types peut ^etre exploitee lors de l'optimisation de requ^etes. La
connaissance concernant le type d'une sous-expression d'une certaine expression
SFW peut ^etre exploitee pour transformer la jointure implicite5 produite par
5 Navigation d'une classe d'objets a
une autre classe d'objets via un calcul de fonction. Ce
type de jointure est appelee aussi navigation ou jointure fonctionnelle.
14
cette sous-expression dans une jointure explicite6 utilisant les extensions des
classes. Les deux types de jointures representent des alternatives d'execution
pour une m^eme requ^ete logique et l'optimiseur doit choisir la meilleure en
fonction du co^ut estime de ces alternatives.
Pour appliquer la transformation d'une jointure implicite en jointure explicite l'information concernant les types n'est pas susante. Des informations
semantiques supplementaires sont necessaires pour la raison suivante: les assertions de non nullite garantissent que certains termes ne sont jamais evalues a la valeur nil (dans le cas mono-value) ou n'incluent jamais la valeur nil
(dans le cas multi-value) 7 . Cette information est utilisee dans la transformation de la jointure implicite en jointure explicite et vice-versa.
En utilisant ce type d'assertion, on peut denir des liens inverses simples,
des liens inverses generalises (obtenus comme combinaison d'autres liens), des
fonctions materialisees, des vues materialisees, des fonctions inverses, etc.
Le modele de donnees objet, base sur les classes, les extensions de classes
et l'heritage, permet d'inferer deux types d'informations semantiques particulieres: (i) l'inclusion de l'extension d'une sous-classe dans l'extension d'une
super-classe (c.-a-d. tout objet de la sous-classe est egalement instance de la
super-classe) (ii) l'inclusion de toute collection d'objets de type c (qui ne contient pas la valeur nil) dans l'extension de la classe c. Ces deux types de connaissances, intrinseques au modele de donnees objet et deduites a partir de la
denition du schema, peuvent ^etre exploitees lors de l'optimisation de requ^etes
an d'examiner d'autres alternatives d'execution pour une requ^ete donnee.
Les assertions d'inclusion generalisent les contraintes speciques au modele de donnees objets. Une assertion d'inclusion arme que la valeur d'un terme
multi-value t1 est incluse dans la valeur d'un autre terme multi-value t2 .
De facon similaire aux assertions d'inclusion, les assertions d'appartenance
arment que la valeur d'un terme mono-value t1 est un element de la collection resultat d'un autre terme multi-value t2. En utilisant cette connaissance, il
est possible de remplacer dans l'expression d'un terme la jointure fonctionnelle
denie par t1 par une jointure explicite impliquant la collection t2.
Ce type de reecriture generalise la reecriture basee sur les types (CD92,
JWKL90]). Avec la reecriture basee sur les types, l'assertion d'appartenance
utilisee est celle inherente au modele objet: la valeur d'un terme t de type
c (c etant une classe) appartient a l'extension de la classe c8 . Les assertions
d'equivalence denies ici generalisent ce genre d'information an de couvrir
d'autres cas: la connaissance sur l'appartenance du resultat de l'evaluation
d'un terme a une collection complexe.
6 Jointure classique impliquant les extensions de classes, dont le pr
edicat teste la fonction
faisant la correspondance entre les objets.
7 Ce type d'assertion g
eneralise la clause
du langage SQL.
8 Ceci a condition de ne pas evaluer a la valeur nil.
not null
15
A : UNIVERSITE
A : UNIVERSITE
1
A : UNIVERSITE
1
10
5
1
B :ETUDIANT
B : ETUDIANT
a. Placement par defaut
b. Placement simple
D : ETUDIANT
8
10
A : UNIVERSITE
1
1 C : PROFESSEUR
1
C : PROFESSEUR
1
10
1
1
c. Placement conjonctif
d. Placement disjonctif
Figure 3: Les dierentes possibilites de regroupement
5 Le module d'optimisation physique
Ce module transforme un terme logique en un plan d'execution dont il doit
de plus estimer le co^ut. Le plan d'execution qui sera nalement choisi par
l'optimiseur sera alors eventuellement compile par le systeme cible dans un
langage de plus bas niveau. Les trois principales composantes du principe
d'optimisation physique sont le modele d'execution, le modele de placement et
le modele de co^ut.
5.1 Un modele general de regroupement des donnees
Le modele de placement doit permettre a l'optimiseur d'evaluer de facon adequate
le co^ut d'acces aux objets. Le modele propose se veut tres general permettant
ainsi d'englober de nombreuses politiques de placement. Pour cela nous avons
adopte un regroupement d'objet base sur la generalisation des arbres de placement.
5.1.1 d
enition
Nous generalisons les arbres de placement en denissant les proprietes suivantes: (i) les noeuds des graphes sont des collections d'objets persistants, (ii)
les arcs sont labellises par des predicats d'association si necessaire, (iii) une
priorite est attribuee a chaque arc, (iv) un arc qui pointe sur son noeud de
depart indique un placement par defaut.
La gure 3 montre quatre dierentes possibilites de regroupement.
Le regroupement par defaut : Tous les objets de la collection sont regroupes
physiquement dans des pages disque contigues. Si un objet ne correspond a
aucun predicat de placement, c'est le placement adopte par defaut. Ainsi sa
priorite est toujours egale a 1. Dans la gure 3.a, la collection Universit
e a un
placement par defaut.
Le regroupement simple : C'est le regroupement classique de deux collections avec un predicat de jointure. Dans la gure 3.b, les objets de la collection
Etudiant sont regroupes avec les objets correspondants de la collection Universit
e avec un priorite egale a 10. Tous les objets de la collection Universit
e ne
pointant pas sur des objets de la collection Etudiant sont regroupes ensemble.
Tous les objets de la collection Etudiant dont l'objet de la collection Universit
e
n'est pas connu sont aussi regroupes ensemble.
16
Le regroupement conjonctif : La gure 3.c montre un exemple de placement
ou les objets de la collection Etudiant et les objets de la collection Professeur
sont regroupes avec les objets de la collection Universit
e qui leur est associee.
Cette strategie de placement permet de regrouper plusieurs collections avec une
m^eme collection.
Le regroupement disjonctif : Dans la gure 3.d, chaque objet Professeur
peut ^etre stocke soit avec son Universit
e, soit avec ses Etudiant. Comme ce
modele n'accepte pas la duplication, chaque objet Professeur est place suivant
la !eche ayant la plus grande priorite.
La composition de ces dierents types de placement conduit a l'elaboration
d'un arbre de placement complet. Dans notre modele un graphe de placement
donne le regroupement des objets ainsi que la partition des dierents types de
regroupements. Par exemple, l'arbre de la gure 3.c donne six regroupements.
Pour le placement par defaut, nous avons trois regroupements : les objets de la
collection Etudiant seuls (Cl
), les objets de la collection Professeur seuls
(Cl
) et les objets de la collection Universit
e seuls (Cl
). Puis
nous avons deux regroupements avec deux collections : Cl
et
Cl
. Enn, le regroupement qui stocke les trois collections
: Cl
(
)
Un des principaux but du modele de co^ut est de donner le nombre d'EntreesSorties (ES) realisees pour une requ^ete donnee. Pour cela le modele de placement doit stocker des statistiques pour chaque type d'objet dans chacun des
regroupements.
Etudiant
P rof esseur
U niversite
U niversite!E tudiant
U niversite!P rof esseur
U niversite! Etudiant P rof esseur
5.1.2 La fonction Yao'
Le modele d'execution decrit des algorithmes capables d'acceder a des objets
selectionnes dans un regroupement et non pas a tous les objets du regroupement. Ce sont des algorithmes utilisant des index ou des expressions de chemin.
Le probleme est le suivant : soit n objets stockes sur m pages, si je selectionne seulement k objets, combien d'ES vais-je realiser ? Dans les systemes
relationnels, la formule utilisee est la formule de Yao Yao77]:
Y ;i+1
yao(n m k) = m 1 ; nd
n ; i + 1 ] where d = 1 - 1/m
=1
k
i
Elle est basee sur la repartition uniforme des objets dans les pages disque.
Mais cette hypothese n'est plus acceptable car notre modele est fragmente.
Le principe de la fonction Yao' est de repartir la fonction Yao sur chacun des
regroupements utilises dans la requ^ete :
X
yao0 (C k) = yao(jjC jj jC j k )
p
C li
i
=1
C li
i
jjC jj est la cardinalite et jC j le nombre de pages des objets de la collection C dans le regroupement Cl . Soit k le nombre d'objets selectionnes pour
Cli
C li
i
i
17
chaque regroupement, nous pouvons facilement calculer k en repartissant proportionnellement la selection sur chaque regroupement : k = (jjC jj =jjC jj) k
Le principe de fonctionnement du modele de placement est detaille dans
GGT95].
i
i
C li
5.2 Modele d'execution
Dans cette section nous nous concentrons, sur l'execution des expressions de
chemins qui sont utilisees de facon intensive dans les requ^etes a objets. Dans
un premier temps, nous avons derive le concept des expressions de chemin pour
denir le concept plus general d'expression de chemin ltree. Ce nouveau type
d'expression de chemin nous a permis d'exprimer des requ^etes complexes en
utilisant le formalisme usuel des expressions de chemin des SGBDOO GGT96].
La plupart du temps les optimiseurs de requ^etes objet envisagent uniquement deux methodes d'execution des expressions de chemin. Dans cet article
nous avons adapte ces methodes aux expressions de chemin ltrees et nous
avons deni une nouvelle methode basee sur les jointures de pointeurs (\pointer
based join"). La diversite de ce modele d'execution ameliore considerablement
les performances d'optimisation des expressions de chemin.
5.2.1 Les di
erentes m
ethodes d'
evaluation
E valuation en profondeur d'abord (DFF). L'operateur DFF est un opera-
teur n-aire evaluant les expressions de chemin en profondeur d'abord. Il utilise
l'evaluation na$ve par traversee de pointeur. Pour chaque objet de la collection
racine l'expression de chemin est traversee jusqu'au bout de facon recursive.
Un tel algorithme est assimilable a l'evaluation en pipeline d'une serie de jointure dependante.
E valuation avec des jointures de pointeurs (BFF). L'algorithme BFF est
issue des jointures basees sur les pointeurs SC90, KGM91]. L'idee principale
est d'assimiler une traversee de pointeur a une jointure entre OID. En fait la
jointure est entierement stockee dans les objets gr^ace aux pointeurs. Comme
le DFF il sut de parcourir uniquement les objets pointes. A chaque pas du
BFF, l'algorithme balaie une collection et cree une table de correspondance
assimilable a une jointure d'indice Val87]. Lors de la creation, les OID pointes
sont tries pour respecter l'ordre physique de placement9. Ensuite l'acces aux
objet de la collection suivante dans l'expression de chemin se fait en balayant
directement la table. A chaque pas, le BFF renvoie la table de correspondance
modiee en remplacant les pointeurs de la collection precedente, par les pointeurs tries de la collection suivante a balayer.
E valuation avec des jointures classiques (RJ). L'expression de chemin
peut ^etre evaluee inversement, en partant de la derniere collection, gr^ace a des
9
Uniquement possible si les OID sont physiques, sinon le trie ne sert a rien
18
jointures classiques. Le predicat de jointure est une comparaison de valeur
d'OID. Les algorithmes de jointures employes sont le sortmergejoin (SRJ) ou
le hashjoin (HRJ). L'algorithme doit utiliser les extensions de classe correspondant a chaque type de l'expression de chemin. Classiquement l'arbre de jointure
peut ^etre en pipeline ou materialise.
5.3 Co^ut des algorithmes
La construction du modele de co^ut physique decoule directement des deux
premiers modeles. Sa problematique est la suivante : etant donnee un plan
d'execution physique et des informationsde placement, quel est le co^ut d'execution
correspondant? Generalement le modele de co^ut est separe en deux : le co^ut
des algorithmes et le co^ut des plans d'execution. Le modele associe a chaque
algorithme une fonction de co^ut locale dont les parametres d'entree sont donnes
par la forme du plan d'execution. Le co^ut du plan d'execution est estime en
calculant de proche en proche (selon l'ordre d'execution deni par le plan) le
co^ut des algorithmes jusqu'a obtenir le co^ut d'execution global.
5.3.1 Statistiques
Le modele de co^ut utilise des statistiques sur les composants de la base pour
estimer un plan d'execution donne. Les statistiques incluent la cardinalite des
collections d'objets de la base, la taille de ces objets, le nombre de valeurs
distinctes pour chaque attribut, ainsi que des informations sur les index et le
regroupement des objets. Nous maintenons aussi des parametres systeme et
des formules de calcul du co^ut.
Les statistiques sur les collections d'objets sont les suivantes :
Parametres Description
P
jjC jj
jC j
S
D
fan 1 2
D1 2
C
a C
C
C
C
C
Sel(Predicat)
b
Bl(I)
S
p
m
IO
CPU
Predicat de la requ^ete
cardinalite de la collection C
Nbr. de pages de la collection C
taille moyenne d'un objet de la collection C
Nbr. de valeurs distinctes de l'attribut \a" de la collection C
Nbr. moyen de references d'un objet C1 vers les objets C2
Nbr. distinct de references d'un objet C1 vers les objets C2
selectivite d'un predicat
fanout de l'index en arbre binaire
Nbr. de niveaux de l'index en arbre binaire I
taille d'une page
memoire disponible en Nbr. de page)
co^ut d'une ES pour charger une page en memoire
unite de temps CPU
Table 1: Statistiques du modele de co^ut
19
5.3.2 Les op
erateurs de bas niveaux
Le modele d'execution utilise des operateurs de bas niveaux representant chacun un co^ut unitaire. En decomposant chaque algorithme en operateur de bas
niveaux nous evaluons aisement leurs fonctions de co^ut.
D'une maniere generale, le processus d'evaluation d'un algorithme est le
suivant : l'algorithme doit comparer des valeurs d'objet et renvoyer un resultat, pour cela il faut d'abord charger en memoire les objets (si les objets sont
deja en memoire, il ne fait rien), puis comparer les valeurs en memoire enn
construire le resultat en memoire. Les operateurs sont les suivants :
L'operateur de chargement des objets en memoire : Fetch(OID) ! State.
Cet operateur prend en entree l'OID de l'objet, et charge l'etat de l'objet s'il
n'est pas deja present en memoire. Le co^ut d'un telle operation est egal a une
ES en lecture ou a 0 si l'objet est deja en memoire.
L'operateur permettant de retrouver la valeur d'un attribut dans un tuple
objet (cette operation est eectuee en memoire uniquement) : Dot(State) !
value. Son co^ut est generalement neglige.
L'operateur de comparaison de deux valeurs en memoire :
Comp(valeur1 valeur2 oprateur) ! boolen. Son co^ut est du temps CPU pur.
5.4 Co^ut de creation des resultats temporaires
Pendant l'execution d'une requ^ete, le systeme a besoin de generer des resultats
temporaires. La taille du resultat depend du predicat applique sur la collection
d'entree, du nombre d'attributs projetes (Nb ) et de la taille moyenne de la
projection (S ). Le co^ut de creation du resultat temporaire se decompose
en:
proj
proj
CPU out(PC proj ) = Sel(P ) jjC jj CPU et IO out(PC proj ) = jjoutjj (1)
b
Sp
Sproj
c
5.5 Co^ut pour evaluer un predicat
Nous faisons l'hypothese que les pages a lire pendant le calcul sont deja en
memoire. Deux cas doivent ^etre consideres:
le predicat n'a pas d'expression de chemin.
le predicat comporte une expression de chemin,
5.5.1 Pr
edicat sans expression de chemin
Pour evaluer le predicat, il faut d'abord acceder a l'attribut de l'objet en invoquant l'operateur Dot, puis comparer les deux valeurs atomiques. L'objet
etant en memoire, il n'y a pas d'ES. Ce qui donne:
20
IO Pred(P ) = 0 et CPU Pred(P ) = jjC jj CPU
(2)
5.5.2 Pr
edicat avec expression de chemin
Le modele d'execution evalue les expressions de chemin par un algorithme de
recherche en profondeur d'abord. Au niveau physique les plans n'ont plus
d'expression de chemin. Pour chaque objet de la collection d'entree, l'algorithme
doit trouver l'attribut correspondant. Soit l'expression de chemin ltree suivante : (x 2 C1 x:c2(P2 ):::c (P ):attr) ou c reference un objet de C et S est la
selectivite du predicat P .
Le nombre de references distinctes impliquees dans la lecture de la collection
C est Ref tel que: Ref = (1 ; Prob ) jjC jj. P rob etant la probabilite pour
qu'un objet de i soit implique dans le traitement telle que:
;1 ) avec Ref1 = jjC1jj.
Prob = (1 ; 1 )( ;1 ;1
Nous etudions ici le cas ou la taille memoire est plus grande que le nombre
de pages necessaires au traitement du predicat. Le cas contraire est etudie en
detail dans GGT96]. Chaque page a lire est donc chargee une et une seule fois
en memoire. La formule de Yao' donne l'approximation du nombre de pages a
charger.
X 0 si C ;1 est regroupe avec C
n
n
i
i
i
i
i
i
i
i
Refi
i
Si
f anCi
i
i
Ci
jjCi jj
n
IO Pred(P ) =
i
i
=2
i
(3)
i
Y ao0 (C Ref )
i
Pour l'ensemble des objets rencontres pendant la traversee de chemin, le
co^ut CPU d'acces aux attributs et de comparaison de leur valeur est:
XY
CPU Pred(P ) = jjC 1jj CPU (
fan ;1 S ;1 )
(4)
n
i
Cj
Cj
j
=2 j =2
i
5.5.3 Les algorithmes issus de l'algebre relationnelle
Ce sont les algorithmes classiques des bases de donnees relationnelles. Pour
evaluer le temps de reponse d'une jointure (resp. d'un scan), nous multiplions
le nombre d'ES estime par le temps unitaire d'une ES. Puis, nous ajoutons le
temps CPU.
Le detail de ces formules de co^ut et du principe de calcul des co^uts des plans
d'execution peut ^etre trouve dans Gru96].
6 Validation du modele de co^ut
La validation de notre modele de co^ut est faite sur le SGBD client/serveur
O2 BCD89]. La conguration est mono-utilisateur. Le serveur et le client
O2 s'executent sur une m^eme machine Sun Sparc LX. Le co^ut d'une ES est la
21
A
A
A
4500
3500
C
A
A
B
C
B
AC
A
4500
AB
B
2000
C ABC
Figure 4: Exemple d'une base de donnee
12
Clustered
Not Clustered
10
Response Time (s)
Theoretical
Clustered
8
Theoretical Not
Clustered
6
4
2
0
0
2000
4000
6000
8000
10000
12000
14000
16000
Cardinality of A
Figure 5: E valuation des expressions de chemin
somme du temps de lecture d'une page de 4Ko dans la memoire du serveur, et
du temps de transfert de cette page dans la memoire du client. Nous mesurons
un temps moyen de 25ms pour le co^ut d'une ES.
Les requ^etes sont executees sur deux bases equivalentes dont les strategies
de placement dierent. La premiere a le placement decrit dans la gure 4, la
deuxieme a un placement par defaut pour chaque collection. Nous creons un
index sur l'attribut \indexId" de chaque collection. Les liens entre A, B et C
sont aleatoires. Un attribut non indexe \name" est un identiant unique pour
chaque objet. Pendant l'experimentation, chaque requ^ete est executee dix fois
dans les m^emes conditions, puis la moyenne des dix temps de reponse sert de
resultat.
Validation de la strategie de placement Dans la premiere experience,
nous executons sur les deux bases une requ^ete qui lit toute la collection A. Et
pour chaque element de A la requ^ete evalue une expression de chemin traversant
B et C.
select x from x in A where x.b.c.name ! = \" 22
60
Response Time (s)
50
40
30
Yao
20
Yao'
Theoretical Yao
10
Theoretical Yao'
0
0
20
40
60
80
100
Selectivity (%)
Figure 6: Validation de la formule de Yao
Cette experience doit valider l'in!uence du placement sur le co^ut d'execution
de la requ^ete et la precision de notre modele de co^ut. Nous faisons varier la
cardinalite et nous mesurons le temps de reponse (cf. Figure 5). Le resultat montre que la technique de placement par regroupement des objets relies,
ameliore les performances de la requ^ete. Nous mesurons un rapport de 6 entre
les deux strategies de placement. De plus, le rapport estime avec les formules de
co^ut a sensiblement la m^eme valeur, ce qui valide la precision de notre modele.
Validation de la formule de Yao Cette experience doit valider la formule
de Yao. La requ^ete est executee sur les deux bases de la gure 4.
select x from x in A where x.IndexId >= N% La requ^ete lit la collection A a l'aide d'un index sur IndexId. L'index permet
de ne lire que les objets satisfaisant le predicat de selection. Cette experience
valide la formule de Yao' et de Yao, respectivement avec la premiere et la
deuxieme base.
La taille d'un objet etant de 300 octets, nous avons 12 objets par page. La
taille de la memoire disponible n'in!uence par la mesure (elle est superieure
aux besoins de la requ^ete). Nous faisons varier la selectivite (cf. gure 6). Nous
mesurons un rapport entre les courbes mesurees qui est identique au rapport
entre les courbes estimees.
Validation du co^ut des expressions de chemin: Cette experience doit
montrer l'in!uence de la memoire sur une traversee de chemin. La requ^ete
executee est celle de la premiere experience. Nous mesurons le temps de reponse
en fonction de la taille de la memoire disponible pour executer la requ^ete. La
memoire du systeme UNIX est videe avant chaque requ^ete. La gure 7 montre
que l'execution sur la base avec placement est insensible aux variations de
memoire. En eet, seule la page courante de chaque collection est memorisee
(lecture en !ot continu).
Dans le cas du placement par defaut (objets regroupes en 3 collections),
23
80
Not Clustered
Break Point = 1941 Kbytes
70
Approximation
Clustered
Response Time (s)
60
50
40
30
20
10
0
200
1200
2200
3200
4200
5200
6200
7200
Buffer Size (KBytes)
Figure 7: Co^ut de la traversee de chemin
nous avons: Ref1 = 14500, Ref2 = 3965 et Ref3 = 1202. Donc IO Pred =
Y ao (C2 Ref2) + Y ao (C3 Ref3) = 485:26. Le point d'arr^et vaut 485:26 S ' 1941KBytes. Ce point d'arr^et est determine avec precision par notre
modele de co^ut. Il represente la limite inferieure de la memoire en dessous de
laquelle le nombre des ES deteriore le temps d'execution. Ce point d'arr^et est
le critere utilise par l'optimiseur pour choisir entre la navigation de pointeur et
les jointures binaires.
0
0
p
Comparaison des algorithmes DFF, BFF and RJ La prochaine experi-
ence compare trois algorithmes de traversee de chemin dierents. La longueur
du chemin est de 4. L'expression de chemin contient un predicat sur la premiere collection (variable) et sur la derniere collection (xe a 10%). La gure
8 montre que le chacun des algorithmes est meilleur que les autres dans une
plage de memoire particuliere. En realite, selon la taille memoire, le meilleur
plan d'execution devrait ^etre un melange des dierents algorithmes. Par exemple, DFF pour les trois premieres collections et BFF pour les deux suivantes.
Pour reduire l'espace de recherche, l'optimiseur devrait avoir une heuristique
qui propose ce melange d'algorithmes GGT96].
7 Travaux connexes
La plupart des produits SGBDO comme ObjectStore et GemStone font peu
d'optimisation, et se bornent a exploiter les chemins d'acces existants sans faire
de transformation algebrique. Les principales exceptions sont Orion JWKL90],
Epoq SZ90], GOM KMP93], O2 VDD+ 90] et Volcano GM93].
7.0.4 Orion
Orion JWKL90] fut le premier SGBDO a introduire des techniques d'optimisation
de requ^etes. Le langage de requ^etes, base sur Lisp, est simple. L'optimiseur
24
3500
DFF
3000
BFF
HRJ
Response Time (s)
2500
2000
1500
1000
500
0
0
5000
10000
15000
20000
25000
30000
35000
40000
Memory Size (KBytes)
Figure 8: Comparaison de DFF, BFF et RJ
d'Orion manipule la requ^ete par des transformations tres simples appliquees
dans un ordre pre-deni. Ces transformations permettent de decomposer les
expressions de chemin en jointures et de realiser l'ordonnancement de jointures,
avec dierents chemins d'acces speciques pour les parcours avant ou arrieres
correspondant aux sous-expressions de chemins. Le modele de co^ut s'appuie
sur celui des systemes relationnels, et prend en compte les acces disques pour
evaluer le co^ut des operateurs.
7.0.5 Epoch
Epoch SZ90] est un modele d'architecture pour construire des optimiseurs de
requ^etes objet. L'architecture d'un optimiseur Epoq comporte un ensemble de
modules concurrents. Chaque module est capable d'optimiser des expressions
de requ^ete selon une certaine strategie. Les modules sont organises selon une
hierarchie, et chaque module parent contr^ole ses modules enfants.
Cette architecture permet de contr^oler globalement l'optimisation de requ^etes. Un but a atteindre est aecte a chaque module ce but caracterise la
requ^ete pouvant ^etre renvoyee par ce module. Etant donne une requ^ete et un
but a atteindre pour cette requ^ete, le module indique au module parent s'il a
reussi a atteindre ce but.
Cette architecture modulaire permet de concevoir divers types d'optimiseurs
extensibles qui integrent diverses techniques d'optimisation objet.
7.0.6 GOM
Le systeme GOM KMP93] preconise l'application de l'architecture tableau
noir issue de l'intelligence articielle, pour l'optimisation de requ^etes objet.
L'objectif est que l'optimiseur puisse ^etre extensible, specialisable, et reglable.
Le langage de requ^etes s'inspire du langage Excess VD91] et l'algebre com25
porte des operateurs particuliers pour manipuler des collections d'identiants
d'objets.
L'architecture d'optimiseur qui est proposee est organisee sous la forme
d'une echelle de regions sur un tableau noir. Entre chaque paire successive
de regions, une source de connaissances manipule une requ^ete pour la faire
avancer d'une region vers la region immediatement plus haute (sur l'echelle).
Le traitement d'une source de connaissances peut aussi acceder n'importe quelle
information sur le tableau noir. Tous les elements d'une region ont une information de co^ut associee pour assister les sources de connaissance dans leur t^ache.
Ce concept de region correspond assez bien aux modules specialises d'Epoch.
7.0.7 O2
Le SGBD O2 VDD+ 90] supporte le langage de requ^etes OQL. Son optimiseur
applique les transformations algebriques suivantes: factorisation des expressions communes, utilisation des liens inverses pour produire de nouvelles expressions de chemin, et decomposition des expressions de chemins en jointures
explicites en utilisant les extensions de classes.
La generation du plan d'execution utilise des heuristiques qui exploitent
l'existence d'index et le regroupement physique des donnees sur disque. Elle
n'utilise pas de modele de co^ut. Le modele d'execution est assez simple puisqu'il
ne supporte que le balayage d'une collection et la jointure de deux collections
par boucles imbriquees, avec ou sans index.
7.0.8 Volcano
Volcano GM93] est un generateur d'optimiseurs de requ^etes, qui a servi de
base notamment aux optimiseurs Cascades Gra91] et OpenOODB BMG93].
Il est issu directement du generateur d'optimiseur EXODUS GD87].
Volcano est un systeme extensible avec lequel il est possible de programmer
ses propres modules de regles de transformation. Volcano supporte une algebre
logique et une algebre physique, qui capture le modele d'execution. An de
pouvoir etendre ces algebres, le concept de propri
et
es associees aux operateurs
algebriques est propose. Ce sont des informations denies par l'utilisateur
et traitees par Volcano comme des donnees de type abstrait. Les proprietes
de l'algebre logique permettent de denir des regles d'equivalence entre les
operateurs.
Le systeme ne comporte pas de langage de requ^etes, ni de modele de donnees. L'utilisateur doit programmer le module de traduction des requ^etes dans
l'algebre logique de Volcano.
7.1 Conclusion
Dans cet article nous avons presente de facon tres synthetique Flora, un environnement pour l'optimisation de requ^etes a objets. S'appuyant sur une
algebre tres generale, il dispose d'une architecture modulaire qui lui permet
de preserver l'extensibilite des systemes a base de regles sans compromis sur
26
l'ecacite. Un des points forts de Flora est sa capacite a utiliser une riche
panoplie de connaissances semantiques qui peuvent ^etre exprimees de facon
declarative. Le modele de placement de Flora peut exprimer des politiques
tres variees et permet a l'optimiseur d'exploiter cette connaissance pour trouver un moyen ecace d'acceder aux donnees.
Bien qu'il soit plus complexe de s'appuyer sur un modele de co^ut, cette
approche permet d'obtenir des plans d'execution de grande qualite pour autant
que ce modele ait ete valide. Cette t^ache est d'une complexite considerable
aussi, nous l'avons eectuee sur une partie critique du modele d'execution a
savoir les expressions de chemin.
Une partie du systeme Flora est en cours d'adaptation au sein du projet
Rodin pour permettre l'optimisation de requ^etes sur un reseau tres etendu
comme l'internet.
References
BCD89] F. Bancilhon, S. Cluet, and C. Delobel. A query language for the O2
object-oriented database system. In R. Hull, R. Morrison, and D.
Stemple, editor, Proc. 2nd Intl. Workshop on Database Programming Languages, page 122, Gleneden Beach, Oregon, June 1989.
Morgan Kaufmann.
Bla94] J.A. Blakeley. OQL++]: Extending the C++ language with an
object query capability. In Modern Database Management - ObjectOriented and Multidatabase Technologies, ACM Press/AddisonWesley, 1994.
BMG93] J.A. Blakeley, W. McKenna, and G. Graefe. Experiences building
the open OODB query optimizer. In Proc. ACM SIGMOD International Conference on Management of Data, Washington, DC, May
1993.
CD92] S. Cluet and C. Delobel. A general framework for the optimization
of object-oriented queries. In Proc. ACM SIGMOD International
Conference on Management of Data, San Diego, California, June
1992.
FGN+95] D. Florescu, J-R. Gruser, M. Novak, P. Valduriez, and M. Ziane.
Design and implementation of Flora, a language for object algebra.
Information Science, 87(1-3), 1995.
Flo96] Daniela Florescu. Espace de recherche pour l'optimisation de requ^etes objet. PhD thesis, Universite de Versailles St Quentin, 1996.
GD87] G. Graefe and D. DeWitt. The EXODUS optimizer generator. In
Proc. ACM SIGMOD International Conference on Management of
Data, San Francisco, USA, May 1987.
27
GGT95] G. Gardarin, J.R. Gruser, and Z.H. Tang. A cost model for clustered
object-oriented databases. In Proc. Int'l. Conf. on Very Large Data
Bases, Zurich, Switzerland, September 1995.
GGT96] G. Gardarin, J.R. Gruser, and Z.H. Tang. Cost-based selection of
path expression processing in object-oriented databases. In Proc.
Int'l. Conf. on Very Large Data Bases, Bombay, India, September
1996.
GM93] G. Graefe and W.J. McKenna. The Volcano optimizer generator:
Extensibility and ecient search. In Proc. Int. Conf. on Data Engineering, Vienna, Austria, April 1993.
Gra91] G. Graefe. The Cascades framework for query optimization. Data
Engineering Bulletin, 18(2):58{62, September 1991.
Gru96] J.R. Gruser. Modeles de co^ut pour l'optimisation de requ^etes objet.
PhD thesis, Universit Pierre et Marie Curie - Paris VI, 1996.
JWKL90] B.P. Jenq, D. Woelk, W. Kim, and W.-L. Lee. Query processing in
distributed ORION. In Proc. EDBT, Venice, Italy, 1990.
KGM91] T. Keller, G. Graefe, and D. Maier. Ecient assembly of complex
objects. In ACM-SIGMOD International Conference on Management of Data, pages 148{157, Denver, Colorado, May 1991.
KMP93] A. Kemper, G. Moerkotte, and K. Peithner. A blackbord architecture for query optimization in object bases. In Proc. Int. on Very
Large Data Bases, Dublin, Ireland, August 1993.
MZD93] G. Mitchell, S. Zdonick, and U. Dayal. Control of an extensible
query optimizer: A planning-based appoach. In Proc. Int. Conf. on
Very Large Data Bases, Dublin, Ireland, August 1993.
RGGC93] ed. R. G. G. Cattel. The Object Database Standard: ODMG-93.
Morgan Haufmann Publishers, San Mateo, Ca., 1993.
SC90] E.J. Shekita and M.J. Carey. A performance evaluation of pointerbased joins. In ACM-SIGMOD International Conference on Management of Data, Atlantic City, New Jersey, May 1990.
SZ90]
G.M. Shaw and S.B. Zdonick. A query algebra for object-oriented
databases. In Proc. Int. Conf. on Data Engineering, Los Angeles,
California, February 1990.
Val87] P. Valduriez. Join indices. ACM Trans. on Database Sys., 12(2):218,
June 1987.
VD91] S. Vandemberg and D. DeWitt. Algebraic query processing in EXTRA/EXCESS. Data Engineering Bulletin, 14(2):48{52, June 1991.
28
VDD+90] F. Velez, V. Darnis, D. Dewitt, P. Futtersack, G. Harrus, D. Maier,
and M. Raoux. Implementing the o2 object manager: Some lessons.
In Fourth Int'l Workshop on Persistent Object Systems, September
1990.
Yao77] S. B. Yao. Approximating the number of accesses in database organizations. Comm. of the ACM, 20(4):260, April 1977.
Daniela Florescu est chercheur au laboratoire
d'ATT (Murray Hill, New Jersey) depuis novembre 1996. Auparavant, elle etait doctorante au sein
du projet Rodin a l'INRIA (Rocquencourt). Elle a
soutenu sa these de doctorat a l'universit
e de Paris
VI en septembre 1996, sur l'optimisation de requ^etes dans les bases de donn
ees objet.
Jean Robert Gruser pr
epare une these de doc-
torat de l'universit
e Pierre et Marie Curie (Paris
VI), au sein du projet Rodin a l'INRIA. Son travail porte sur l'optimisation physique de requ^etes
a objets. Il etudie principalement les modeles de
placement, les modeles d'ex
ecution et les modeles
de co^ut.
29
Hubert Naacke pr
epare une these de doctorat de
l'universit
e de Versailles St-Quentin (UVSQ), au
sein du projet Rodin a l'INRIA. Son travail porte
sur l'optimisation physique de requ^etes a objets.
Il etudie principalement les modeles d'ex
ecution
et les modeles de co^ut dans les bases de donn
ees
h
et
erogenes.
Zhao-Hui Tang a soutenu sa these de doctorat
a l'Universit
e de Versailles en octobre 1996. Dr.
Tang eectue un post-doc au laboratoire Prism
travaillant sur l'ex
ecution des requ^etes a objet.Il
s'int
eresse principalement a l'ex
ecution des expressions de chemin et aux architectures multi-bases
sur Internet.
Mikal Ziane est Ma^tre de Conf
erences a
l'Universit
e Ren
e Descartes (Paris V) depuis 1992.
Il a eectu
e sa these d'Universit
e au sein du projet Rodin de l'INRIA sur l'optimisation de requ^etes
pour bases de donn
ees paralleles. Son travail porte
a pr
esent sur les systemes d'aide a la programmation a base de connaissances.
30

Documents pareils