13.07.2013 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!