Académique Documents
Professionnel Documents
Culture Documents
Fiche de lecture
Titre du document : STORED : Semi-structured TO RElational Data
Type du document : Article
Auteurs : Alien Deutsch, Mary Fernandez, Dan Suciu
Cadre de la publication : ?
Date de la publication : 2000
Nombre de page de la publication : 12 pages
Plan du rapport
Introduction....................................................................................................................................................2
Larchitecture gnrale de STORED..............................................................................................................2
Gnration des filtres de conversions XML vers SQL..................................................................................3
CRATION DES TABLES NOYAUX .....................................................................................................4
Etape 1 : Dtermination de prfixes de chemin importants.......................................................4
Etape 2 Dterminations des liens entre chemins.....................................................................4
Etape 3 : Agrgations des prfixes de chemin............................................................................5
Etape 4 : Slection des attributs obligatoires.............................................................................5
Etape 5 : Gnration des requtes en langage STORED...........................................................5
Le rsultat...................................................................................................................................5
CRATIONS DES TABLES DE SURCHARGE..............................................................................................6
Etape 1 : Indexation des attributs..............................................................................................6
Etape 2 : Gnration des requtes de surcharge........................................................................6
Le rsultat...................................................................................................................................7
Requte de M.A.J. et dextraction.................................................................................................................7
Etape 1 : Construction des rgles dinversion...........................................................................7
Etapes 2-3 : Dcomposition en sous-requtes et optimisation algbrique.................................8
Etapes 4 : Construction et excution des sous-requtes.............................................................8
Les mises jour ( query updates )..........................................................................................8
Conclusion.....................................................................................................................................................8
Page 1 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Introduction
Comme il a dj t dit, les donnes semi-structures sont partout. Depuis le dveloppement de
lXML, la prsence de ce type de donnes c'est encore accentu et dmocratis. 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 irrgulier (dans le sens o les donnes ne sont pas forces de
suivrent strictement le schma dfini) et donc difficile stocker et manipuler.
Le XML est souvent vu comme un graphe orient potentiellement cyclique. Diffrentes approches
ont t tudies pour traiter ces donnes. Elles ont donn lieu au dveloppement de diffrents
programmes comme Lorel, Tsimmis ou Strudel. Cependant, ils ont tous une architecture propritaire qui
leur donne certes de nombreux avantages en terme de performance et de flexibilit mais qui a une
contrepartie : Ces "approches" sont souvent coteuses en espace et elles n'utilisent pas les SGBDR
classiques - et ne peuvent donc pas tirer profit de lexprience que les programmeurs ont acquis dans ce
domaine.
Dans mon expos, je me suis surtout attach dcrire, de faon sommaire mais claire, les tapes et
procds mis en place par les auteurs pour aboutir la solution propose. Dans ce document, je
mattacherai plutt la partie algorithmique de la solution.
Les tuples unaires [oid des objets racines] sont mis dans une table g.roots(x).
STORED utilise un algorithme puissant pour gnrer les tables relationnelles partir des sources
XML proposs par lutilisateur. Cette conversion ce fait en deux phases bien distinctes : la premire
gnre le noyau des lments rguliers. Par rgulier, les auteurs signifient que llment suit les rgles
respectes par la majorit dentre eux. La seconde phase, elle, permet dajouter les lments exclus -hors
normes- lors de la premire phase, dans des tables spcifiques appeles tables de surcharges (overflow).
A la fin de la conversion, les algorithmes de conversions :
fourniront les filtres de conversion XML vers SQL
creront des tables relationnelles permettant de stocker les valeurs des attributs
creront des tables relationnelles permettant de stocks les liens (arcs) et par consquent la
structure des donnes.
Page 2 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Tables
Tables des arcs principales
Source XML
c(M) est le cot en terme despace de la solution trouv et d(M) le cot de terme de temps
dexcution des requtes pr-dfinies (Qi) auxquelles on a attribu un poids de pondration (fi). On tient
compte ainsi au maximum des conditions initiales du systme et de son cadre dutilisation.
Page 3 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Pour complter tout cela, les auteurs ont spcifi des paramtres de contraintes stricts sur le noyau :
i. K Le nombre maximum de tables
ii. A Le nombre maximum dattribut par table
iii. S La taille disque maximum
iv. C Paramtre de seuil pour diffrencier grands et petits ensembles
v. Supp Limite basse pour le nombre dobjets qui permet lalgorithme de
dterminer un chemin comme important ou non. Voir les paragraphes
suivants.
Comme ce problme est NP-complet, les auteurs ont prfr utiliser la thorie heuristique pour le
simplifier et lallger.
Page 4 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Cette tape est arrter lorsque lon ne peut plus faire dagrgation.
Etape 4 : Slection des attributs obligatoires
Pour chaque arbre, on dtermine les attributs requis en fonction des paramtres K et A.On crer les
tables relationnelles la fin de cette tape.
Etape 5 : Gnration des requtes en langage STORED
On gnre alors les requte en langage STORED pour rpartir les donnes provenant dune XML
dans les diffrentes tables XML cres.
Le rsultat
En rsum, on a :
ALGORITHM: Automatic Storage Generation
INPUT: K, A, S, C, Supp, and query mix Q
OUTPUT: Set of relational STORED mappings
METHOD:
Step 1: Find all minimal prefixes with data support >= Supp
Step 2: - Run the WL data mining algorithm with the changes in the text.
- Let K' = number of maximally contained patterns found
Step 3: Select K0 (<= K) patterns out of the K'
Step 4: For each of the K0 patterns, select the set of ``required'' attributes
Step 5: For each of the K0 patterns with required attributes, generate one or more STORED relational queries.
Les sur-dfinitions sont possibles et mme courante car les conditions ne sont pas toujours
exclusives. Ainsi une donne peut parfois rpondre deux tables dans ce cas, il sera stock dans la table
choisie par lalgorithme.
Ex :
M4a = FROM Audit.taxpayer : $X
OPT{audited : $A},
OPT{taxamount : $T}
Les requtes de stockage contiennent souvent des closes OPT qui dsignent des paramtres
optionnels (qui peuvent tre nuls). STORE dsigne la table relationnelle dans laquelle les donnes seront
stockes. Lorsquil existe des attributs multiples dans une source XML, on a 2 cas :
Petits ensembles (de cardinalit < C) : cration de T attributs dans la table si possible
(paramtre A)
Grands ensembles (de cardinalit C) : cration dune table relationnelle spare.
Page 5 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Si sur lensemble de la source XML, on trouve au maximum deux adresses par taxpayer ,
high(address)=2.
A partir de tous les attributs contenus dans la source D, on cre les arbres canoniques des attributs
(couvrant lensemble des possibilits de la source). Par exemple :
S1=Audit[1] :
{
taxpayer[0,*] :
{
name[1],
address[1,2],
taxreturn[0,*]:
{
year[1],
amount[1],
extension[0,1]
}
}
}
Page 6 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Le rsultat
Encore une fois :
ALGORITHM Automatic Overflow Generation
INPUT Relational mapping M, schema S
OUTPUT Overflow mapping O
METHOD
Step 1: for each attribute a in S construct set of databases Da
Step 2: for each DDa compute M on D
if a is not STORED by M then generate overflow mapping
Page 7 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Rgles dfinies Rgles dinversions produites
Ma = FROM Audit.taxpayer: $X Ia0 = FROM Taxpayer($X, $FN, $LN, $S, $C, $T)
{ CONSTRUCT Audit : S_Audit()
name[1] : {firstname[1] : $FN, {
taxpayer: S_taxpayer($X)
lastname[1] : $LN},
{
addr[1] : {street[1] : $S, city[1] : $C}, name : S_name_1($X)
OPT{taxamount[1] : $T} {firstname : S_firstname_1($X), $FN,
} lastname : S_lastname_1($X) $LN},
STORE Taxpayer($X, $FN, $LN, $S, $C, $T) addr : S_addr_1($X)
{street : S_street_1($X) $S, city : S_city_1($X) $C}
Mb = FROM Audit.taxpayer: $X }
{ }
addr[1] : {street[1] : $S, city[1] : $C, $L : _}} Ia1 = FROM Taxpayer($X, $FN, $LN, $S, $C, $T)
OVERFLOW G1($L) WHERE $T != null
CONSTRUCT Audit : S_Audit()
Mc = FROM Audit.taxpayer: $X {
{ taxpayer: S_taxpayer($X)
name[1] : $N, { taxamount : S_taxamount_1($X) $T
OPT{taxamount[1] : $T}, }
$L : _
Ib = FROM G1.roots($X), G1.edges($X,$L,$Y)
} CONSTRUCT Audit : S_Audit()
OVERFLOW G2($L) {
taxpayer: S_taxpayer($X)
Q = SELECT $N {addr : S_addr_1($X) {$L : $Y}}
FROM Audit.taxpayer:$X }
{ name : $N, taxamount:$T, w4form.income:$I, address.*:$A}
WHERE $T < 0.1 * $I, $A = "Philadelphia" Ic = FROM G2.roots($X), G2.edges($X, $K, $Z)
WHERE $K != taxamount
CONSTRUCT Audit : S_Audit()
{
taxpayer: S_taxpayer($X) {$K : $Z}
}
Conclusion
Larticle manque singulirement de prcision sur les tapes de chaque type de requtes. Il reste trop
souvent gnraliste. Il faudrait, mon avis, un complment dinformation et quelques tests
supplmentaires pour valider lutilisation de cette solution pour des grosses applications.
Page 8 sur 9
LEGOND AUBRY Fabrice 04/04/2001
Laspect performance est un peu oubli. Les valuations de cot dans larticle sont un peu lgre et
parfois mais bizarre (on part dune source XML de 95Mo pour gnrer une base de 1Mo). Il faudrait
mettre la main sur un article plus complet pour obtenir des informations plus viables. Je nai donc pas
aborder ce points des ce petit rapport. Cependant, ce que je peux dire, cest que lexemple pris dans
larticle me semble plutt petit par rapport aux tailles des bases de donnes actuelles (souvent quelques
Go).
De plus, je ne crois pas personnellement que cette solution soit trs efficace en terme de vitesse
pure. En effet, elle oblige la cration, suppression, modification de nombreuses- tables et non de
tuples. En gnrale, les crateurs de moteurs de BD relationnelles optimisent la manipulation des tuples et
pas celle des tables qui sont senses tre effectues seulement au moment de la cration de la base.
Or STORED oblige de frquentes rorganisations des tables. Il mest impossible de savoir si cela
implique un surcot important ou non mais je pense quil doit ltre.
Page 9 sur 9