Introduction
Comme il a déjà été dit, les données semi-structurées sont partout. Depuis le développement de
l’XML, la présence de ce type de données c'est encore accentué et démocratisé. Le XML est cependant un
langage complexe, verbeux et descriptif. Il n'est en aucun cas prescriptif. Cela lui offre une grande
puissance syntaxique, mais le rend souvent irrégulier (dans le sens où les données ne sont pas forcées de
suivrent strictement le schéma défini) et donc difficile à stocker et manipuler.
Le XML est souvent vu comme un graphe orienté potentiellement cyclique. Différentes approches
ont été étudiées pour traiter ces données. Elles ont donné lieu au développement de différents
programmes comme Lorel, Tsimmis ou Strudel. Cependant, ils ont tous une architecture propriétaire qui
leur donne certes de nombreux avantages en terme de performance et de flexibilité mais qui a une
contrepartie : Ces "approches" sont souvent coûteuses en espace et elles n'utilisent pas les SGBDR
classiques - et ne peuvent donc pas tirer profit de l’expérience que les programmeurs ont acquis dans ce
domaine.
Dans mon exposé, je me suis surtout attaché à décrire, de façon sommaire mais claire, les étapes et
procédés mis en place par les auteurs pour aboutir à la solution proposée. Dans ce document, je
m’attacherai plutôt à la partie algorithmique de la solution.
L’architecture générale de STORED
Le principal but de STORED est donc de gérer la transcription XML / SQL. Cette conversion doit
être optimiser de manière à minimiser l’espace disque occupé par la base relationnelle tout en conservant
la totalité des données.
Il a été démontré que les données semi-structurées peuvent être stockées comme des relations
ternaires et unaire :
Les tuples ternaire [origine, attribut, destination] sont mis dans une table g.edges(x,l,y)
Les tuples unaires [oid des objets racines] sont mis dans une table g.roots(x).
STORED utilise un algorithme puissant pour générer les tables relationnelles à partir des sources
XML proposés par l’utilisateur. Cette conversion ce fait en deux phases bien distinctes : la première
génère le noyau des éléments réguliers. Par régulier, les auteurs signifient que l’élément suit les règles
respectées par la majorité d’entre eux. La seconde phase, elle, permet d’ajouter les éléments exclus -hors
normes- lors de la première phase, dans des tables spécifiques appelées tables de surcharges (overflow).
A la fin de la conversion, les algorithmes de conversions :
fourniront les filtres de conversion XML vers SQL
créeront des tables relationnelles permettant de stocker les valeurs des attributs
créeront des tables relationnelles permettant de stockés les liens (arcs) et par conséquent la
structure des données.