Langages de requêtes pour XML à base de patterns : conception, optimisation et implantation
Résumé
During the past few years, XML has become an important and central data base model allowing users to represent, store and exchange semi-structured data. Because of that, it has become necessary to develop efficient query languages for this model. Several query languages serving that purpose exist, which use a deconstruction primitive that captures parts of XML documents which can be seen as trees. There are two main kinds of primitives: (i) Path-driven: Uses in-depth navigation (using projections) of trees in order to capture subtrees (XPath,...), (ii) Pattern-matching: Uses in-width navigation to capture several subtrees (XDuce, CDuce,...). The main purpose of this thesis is to enrich CDuce with a declarative query language that would benefit from CDuce's strong and static typing. This query language (called CQL) has already been formally defined and supports usage of the two kinds of deconstruction primitives in one single query, allowing users to write short and expressive queries. Considering that pattern-matching is in our opinion more efficient than descending navigation, we provide an optimizing translation able to rewrite the parts of the query using projections into patterns. This translation and other optimizations have been thoroughly validated by several tests and "microbenchmarks", as well as compared with other query engines.. Writing queries using pattern-matching being a pretty tedious experience for most end users, we also provide a GUI (called PBE) that eases the process of this re-writing, using the types defined in the DTD.
Dans les dernières années XML est devenu un véritable modèle de bases de données permettant de représenter, stocker et échanger des données semi-structurées. Il est devenu alors nécessaire de développer des langages de requêtes efficaces pour ce modèle. Différents langages de requêtes existent qui utilisent une primitive de déconstruction dans le but de capturer des parties de documents XML, qui peuvent êtes vus comme des arbres. Il existe deux déconstructeurs : (i) la navigation par chemins qui permet de naviguer en profondeur (par des projections) à l'intérieur d'un arbre afin de capturer un sous-arbre (XPath), (ii)le filtrage par motifs qui permet de capturer en largeur différents sous-arbres (XDuce, CDuce). L'objectif de cette thèse est d'offrir au langage CDuce un langage de requêtes déclaratif, qui puisse tirer parti du typage fort et statique de CDuce. Ce langage de requêtes (appelé CQL) est formellement défini et permet d'utiliser et de combiner en une requête les deux déconstructeurs, dans le but d'écrire des requêtes concises et expressives. Partant du postulat que le filtrage par motifs est plus performant que la navigation descendante, nous donnons une traduction optimisante qui réécrit toutes les projections d'une requête en motifs. Cette traduction et d'autres optimisations ont été validées par des jeux de tests et des "microbenchmarks", ainsi que comparées avec d'autres moteurs de requêtes. L'écriture de requêtes avec motifs pouvant être laborieux pour un utilisateur non averti, une interface graphique (appelée PBE) est proposée qui permet de faciliter cette écriture en étant guidée par les types de la DTD.