Requêtes OLAP sur une base de données XML native - Cercle ...
Requêtes OLAP sur une base de données XML native - Cercle ...
Requêtes OLAP sur une base de données XML native - Cercle ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
4.3 XQuery 34<br />
Pour illustrer la nécessité <strong>de</strong> tels opérateurs <strong>de</strong> comparaison, considérons un document <strong>XML</strong><br />
traitant <strong>de</strong> la cardiologie. Cet exemple est repris <strong>de</strong> [32]. Ce document contient diverses informations<br />
comme <strong>de</strong>s diagnostics, <strong>de</strong>s stratégies <strong>de</strong> traitement et <strong>de</strong>s procédures médicales détaillées.<br />
Il peut être intéressant d’utiliser XQuery pour trouver <strong>de</strong>s cas d’exceptions comme, par exemple,<br />
<strong>une</strong> procédure médicale dans laquelle la première incision est faite avant d’administrer un anesthésiant<br />
au patient.<br />
Il est à noter que l’ordre du document n’a rien à voir avec la clause or<strong>de</strong>r by disponible<br />
également. Cette <strong>de</strong>rnière trie les résultats dans un ordre alphabétique ou numérique <strong>sur</strong> <strong>base</strong><br />
d’un ou plusieurs paramètres. Elle a le même comportement que son équivalent SQL.<br />
4.3.5 Fonctions<br />
XQuery permet <strong>de</strong> définir et d’utiliser <strong>de</strong>s fonctions. Le prototype <strong>de</strong> <strong>base</strong> d’<strong>une</strong> fonction est<br />
illustré à la figure 4.8.<br />
Fig. 4.8 – Prototype d’<strong>une</strong> fonction en XQuery.<br />
Les fonctions XQuery doivent respecter certaines règles comme le fait que tous les types<br />
utilisés doivent l’être fortement, qu’ils soient <strong>de</strong>s types d’arguments ou le type <strong>de</strong> sortie. Les<br />
fonctions peuvent s’appeller elles-mêmes ou en appeller d’autres.<br />
4.3.6 Traitement<br />
Il faut différencier <strong>de</strong>ux gran<strong>de</strong>s familles <strong>de</strong> traitement <strong>de</strong>s requêtes XQuery : traitement en<br />
flux ou traitement basé <strong>sur</strong> les in<strong>de</strong>xes.<br />
Dans le premier cas, le moteur XQuery ne connaît pas les <strong>données</strong> <strong>sur</strong> lesquelles il doit<br />
exécuter la requête. Le document <strong>XML</strong> à interroger arrive comme un flot (stream) dans le<br />
moteur <strong>de</strong> requête. Le document est donc lu séquentiellement par le moteur <strong>de</strong> requête et ne<br />
peut être lu qu’<strong>une</strong> seule fois.<br />
Dans le <strong>de</strong>uxième cas, les documents <strong>sur</strong> lesquels porte la requête XQuery sont connus et<br />
in<strong>de</strong>xés. Le traitement <strong>de</strong> la requête sera donc différent, puisqu’<strong>une</strong> bonne partie <strong>de</strong>s informations<br />
– comme la structure du document – est déjà connue et qu’il ne faut pas lire les documents <strong>XML</strong><br />
séquentiellement parce que ceux-ci sont déjà été in<strong>de</strong>xés.<br />
Le traitement <strong>de</strong>s requêtes sera donc totalement différent dans les <strong>de</strong>ux cas <strong>de</strong> figure.