• Aucun résultat trouvé

3 Les paramètres de notre modèle de coût

3.3 Estimation des facteurs de sélectivité

La sélectivité de triplets et la sélectivité des prédicats (de sélection et de jointure) sont es-sentielles pour estimer la taille des résultats intermédiaires. Elle sont donc des paramètres pri-mordiales pour estimer les coûts des requêtes [131]. Notre démarche consiste à nous appuyer sur les travaux qui se sont intéressés à l’estimation du facteur de sélectivité de patron de triplet [171, 173] et à les affiner pour prendre en compte l’implémentation relationnelle des données

pour lesBDBO de type I et sur les travaux qui se sont intéressés à l’estimation du facteur de

sélectivité de prédicat [175, 131] pour lesBDBO de type II et type III. Dans ce qui suit, nous

présentons la sélectivité de patron de triplet pour desBDBO de type I et la sélectivité de

pré-dicat pour lesBDBO de type II et type III. Dans notre template, tout patron de triplet peut être

exprimé en termes de prédicat de sélection sur lesBDBO de type II et type III.

3.3.1 Sélectivité des patrons de triplet Définition 1

La sélectivité d’un patron de triplettnotéesel(t)est le nombre de triplets correspondant au patron de triplet divisé par le nombre total de triplets [176, 171].

D’après Stocker et al. [171], elle se calcule suivant la formule :

sel(t) = sel(s)∗ sel(t) ∗ sel(o)

où sel(s), sel(p) et sel(o) sont respectivement la sélectivité du sujet, du prédicat et de l’objet du triplet. Ces sélectivités sont définies comme suit :

– Pour tout composant x qui est variable : sel(?x) =1; – Pour le composant sujet s :

sel(s) = 1

R où R est le nombre total de ressources dans la table de triplets

– Pour le composant propriété p :

sel(p) = Tp T

où Tpest le nombre total de triplets ayant p comme propriété et T est le nombre total des tuples dans la table de triplets.

– Pour le composant objet o : on utilise un histogramme de type equal-width qui présente la distribution des valeurs par propriété (son co-domaine). Le co-domaine de la propriété

p est divisé en B classes (p, oc).

sel(o) =

(

sel(p, oc) si p est définie

P

sel(p, oc) = hc(p, oc)

Tp

où le couple (p, oc) représente la classe de l’histogramme de la propriété p où se retrouve l’objet o. hc(p, oc) est la fréquence de la classe (p, oc) et Tpest le nombre de triplets ayant

p comme propriété.

Si la taille de la BDBO le permet, on peut garder dans les statistiques de la BDBO les

nombres d’occurrences de "po23". On peut alors calculer sel(o) comme le nombre de triplets ayant p comme propriété et o comme valeur (nbrTuple(?s, p, o)) normalisé par le nombre de triplets ayant p comme propriété (Tp) : sel(o) = nbrT uple(?s,p,o)T

p

La sélectivité du composant o est donc liée au composant p. Neumann et Moerkotte [174] l’ont qualifié de sélectivité conditionnelle.

3.3.2 Sélectivité de jointure de patrons de triplet

Kaoudi et al. [173] ont défini la sélectivité de jointure de deux patrons de triplet conjonctifs

TP1 et TP2 comme étant le nombre de triplets résultant de la jointure de TP1 et TP2 (join-Card(TP1,TP2)) normalisé par le nombre total des triplets (T) au carré : jsel = joinCard(T P1,T P2)T2 . Cette formule n’a pas été adaptée à une implémentation relationnelle des triplets. Elle im-plique le calcul de la jointure de TP1 et TP2. Etant donné que le résultat d’une exécution d’un patron de triplet est une table, nous choisissons utiliser l’approche relationnelle pour ce cal-cul [154]. Supposons que R1 et R2 soient des relations correspondant aux résultats des patrons de triplet TP1 et TP2. Soit card(R1 Z R2) la taille de la jointure de R1 et R2.

card(R1Z R2) = ||R1|| ∗ ||R2||

max(V(R1, ?x), V(R2, ?x))

où ||R1|| et ||R2|| sont le nombre d’instances de R1 et de R2 respectivement, ?x est une va-riable partagée par TP1 et TP2, et V(Ri,?x) est la taille du domaine des attributs ?x de la re-lation Ri. En d’autres termes, ||Ri|| est le nombre de triplets répondant au patron de triplet TPi (||Ri|| = sel(T P) ∗ T, où T est le nombre total de triplets), et V(Ri,?x) est le nombre des valeurs

distinctes que la variable ?x peut prendre dans la solution de TPi. Pour le calcul de (V(Ri, ?x)), on peut distinguer deux cas. Si TPi a une variable, alors V(Ri,?x) est égal au nombre de solu-tions de la variable ?x, c’est-à-dire V(Ri, ?x) =||Ri||. Pour le second cas où TPi a deux variables,

pour connaître la taille du domaine des variables apparaissant dans la requête, on utilise un his-togramme qui, pour chaque patron de triplet, donne le nombre des valeurs distinctes de chaque composant ainsi que le nombre des valeurs distinctes des combinaisons de deux composants [173].

Comme l’estimation de la sélectivité de patron de triplet pour desBDBO de type II et III se

ramène à l’estimation de sélectivité prédicat comme dans les BD relationnelles, nous présentons à la section suivante la sélectivité des prédicats.

3.3.3 Sélectivité des prédicats

Plusieurs travaux de recherche se sont intéressés à l’estimation de la sélectivité des prédicats [131]. La plupart d’entre eux admet les deux hypothèses suivantes :

1. uniformité de la distribution des données

2. indépendance entre les attributs de chaque relation.

Définition 2

La sélectivité d’un prédicat est le cœfficient représentant le nombre d’objet sélectionnés conformément à ce prédicat rapporté au nombre d’objets total d’une table. Si la sélection vaut 1, tous les objets sont sélectionnés. Si elle vaut 0, aucun objet n’est sélectionné.

L’estimation de la sélectivité des prédicats de sélection se fait comme suit : soient Aiet Ajdeux attributs d’une table R. La sélectivité se fait selon le prédicat par une des formules suivantes :

sel(Ai = valeur) = 1

card(πAi(R))

sel(Ai > valeur) = max(Ai)− valeur

max(Ai)− min(Ai)

sel(Ai < valeur) = valeur− max(Ai)

max(Ai)− min(Ai)

sel(p(Ai)∧ p(Aj)) = sel(p(Ai))∗ sel(p(Aj))

sel(p(Ai)∨ p(Aj)) = sel(p(Ai)) + sel(p(Aj))− sel(p(Ai))∗ sel(p(Aj))

sel(Ai ∈ {valeurs}) = sel(Ai = valeur)∗ card({valeurs})

L’estimation de la sélectivité des prédicats de jointure de R1 et R2 (jsel) est donnée par la formule [154] :

jsel = ||R1 Z R2|| ||R1|| ∗ ||R2||

Certains travaux ne font aucune hypothèse de la distribution des données [131]. Dans ce cas une approche basée sur les histogrammes est suggérée.

3.3.4 Sélectivité des prédicats complexes

Un prédicat complexe est un prédicat composé de plusieurs prédicats reliés par des opé-rateurs de conjonction (ET) et de disjonction (OU). Grâce à la forme normale, la sélectivité de prédicats complexes se calcule de proche en proche. Pour les prédicats conjonctifs, elle se calcule selon la formule :

où pred1et pred2sont de prédicats et sel(pred2|pred1) est la sélectivité de pred2sachant pred1. Si les deux prédicats sont indépendants, sel(pred2|pred1) = sel(pred2). C’est toujours l’hypo-thèse envisagée. Aucun système n’est en effet capable de prendre en compte la corrélation entre les prédicats.

Et pour les prédicats disjonctifs, on utilise la formule :

sel(pred1OU pred2) = sel(pred1) + sel(pred2)− sel(pred1ET pred2). Si pred1 et pred2sont mutuellement exclusifs, sel(pred1OU pred2) = 0.