1.28k likes | 1.51k Views
GG. 2. 1. Introduction. Gnrations de BDRseau et hirarchique 70 - 80Relationnel 80 - 90Objet-Relationnel 90 - Web et BDun rendez-vous manqucouplage faible par serveur d'applicationsle Web est une vaste BD distribuela structuration est faibleplutt orient documentaire .... Introducti
E N D
1. XML et les BD 1. Introduction
2. Modèle de données
3. Langage de requêtes
4. Produits
5. Conclusion
Indexation et Optimisation
2. ©GG 2 1. Introduction Générations de BD
Réseau et hiérarchique 70 - 80
Relationnel 80 - 90
Objet-Relationnel 90 - …
Web et BD
un rendez-vous manqué
couplage faible par serveur d'applications
le Web est une vaste BD distribuée
la structuration est faible
plutôt orienté documentaire ...
3. ©GG 3 XML s'impose Intégration des données et méta-données
Standard d’échange de données universel
Les BD ne peuvent rester indifférentes :
nécessité de stocker les documents XML
nécessité de pouvoir interroger ces documents
évolution ou révolution ?
Quel modèle de données ?
Quel langage d'interrogation ?
Quelle intégration avec l'existant ?
4. ©GG 4 Limites de SQL Mauvais support de l'imbrication
GROUP BY limités
Généralement dans les éditeurs de rapports
SQL3 trop complexe
Requêtes imbriquées difficiles
Méthodes en qualification coûteuse
Références pas très claires
Peu adapté à XML
Vision tabulaire
Manipulation par des fonctions (SQL/XML)
SQL à 30 ans !
Inventé en 1970 pour la gestion
XQuery le successeur ?
5. ©GG 5 Exemple de documents <?xml version="1.0"?>
<Restaurants region="Normandie" version="2.0">
<Restaurant type="francais" categorie="***">
<Nom>Le Grand Hôtel</ Nom>
<Adresse> <Rue>Promenade M. Proust </Rue> <Ville>Cabourg</Ville>
</Adresse>
<Manager>Dupont</Manager>
<Menu>Plat du jour</Menu>
</Restaurant>
<Restaurant type="francais" categorie="**">
<Nom>L'Absinthe</Nom>
<Adresse> <No>10</No> <Rue>quai Quarantaine </Rue> <Ville>Honfleur</Ville>
</Adresse> <Téléphone>0231893900 </Téléphone>
<Manager>Dupont</Manager>
<Manager>Durand</Manager>
<Menu Prix="12"> Fruits de Mer </Menu>
</Restaurant>
</Restaurants>
6. ©GG 6 2. Modèle de données Schémas flexibles et irréguliers
Optionnels, avec ou sans DTD
Données auto-descriptives
Balises et attributs
Modèle de type hypertexte
Support des références
Éléments atomiques ou complexes
Composition par agrégation
Types de données variés et extensibles
Textes, numériques, …, types utilisateur
7. ©GG 7 Le modèle de données XQuery Data Model
Modèle des schémas et de XPath 2
Un document est un arbre à nœud étiqueté
Chaque nœud possède une identité
Exprimé en XML, souvent représenté graphiquement
Une forêt est une collection de documents de même schéma
Une source de données est soit un document, soit une forêt
8. ©GG 8 Diagramme XML Spy
9. ©GG 9 Et les documents sans schéma ? Possibilité de stocker des documents sans schéma
Le SGBD génère un schéma (arbre couvrant sans feuilles)
Maintenu lors des mises à jour (compteur d'utilité)
Schéma de base pour l'interrogation
Facilite la conception
Dégager des collections de documents apparentés
Le SGBD conçoit pour vous !
Solution
Forêt fermée versus forêt ouverte
Construction et gestion dynamique des schémas
Notion de "document guide" ou DTD généralisée
Schéma faible avec typage string
Possibilité d’inférer des types à partir des valeurs
10. ©GG 10 Bilan Modèle de données Un standard riche
schémas standardisés depuis 3 mai 2001
Représentation graphique ad-hoc
Génération automatique en cas d'absence
Faut-il un autre modèle que les schémas ?
Doit couvrir les schémas
Doit couvrir les DTD
Doit couvrir l'absence de schéma et DTD
Syntaxe plus simple
11. ©GG 11 3. Langage de requêtes
12. ©GG 12 Qu’est ce que XQuery ? XQuery est le langage de requêtes pour XML défini et standardisé par le W3C
XQuery s’impose comme le langage de requêtes:
Pour les bases de données XML natives
Pour les documents XML textuels (XQuery Text)
Pour l’intégration de données (bases de données virtuelles)
Le besoin d’interroger les bases relationnelles en XQuery existe
Pour l’intégration et la publication de données
Compétition avec les extensions de SQL (SQL/XML)
13. ©GG 13 Objectifs
14. ©GG 14 La base Proposé par IBM , MS, AT&T, Data Direct, ...
Langage fonctionnel type CAML
Forme de requête élémentaire
FOR $<var> in <forest> [, $<var> in <forest>]+ //itération
LET $<var> := <subtree> // assignation
WHERE <condition> // élagage
RETURN <result> // construction
Les forêts sont sélectionnées par des Xpath (document ou collection)
Le résultat est une forêt (un ou plusieurs arbres)
15. ©GG 15 Exemple 1 : XPath (Q1) Noms de tous les restaurants :
collection(“Restaurants”)/Restaurant/Nom/text()
collection(“Restaurants”)/Restaurant/Nom
16. ©GG 16 Exemple 2 et 3 : XPath + Expression régulière
Menu de tous les restaurants
collection(“Restaurants”)//Menu
Accès via indice à attribut
Donnez le nom des menus du premier restaurant
collection(“Restaurants”)/Restaurant[1]/Menu/@Prix
17. ©GG 17 Exemple 4 : Sélection Lister le nom des restaurants de Cabourg:
collection(“Restaurants”)/Restaurant
[Adresse/Ville= “Cabourg"] /Nom
<resultat>
{for $R in collection("Restaurants")/Restaurant
where $R/Adresse/Ville = “Cabourg”
return {$R/Nom}}
</resultat>
18. ©GG 18 Exemple 5 : Jointure Lister le nom des Restaurants avec téléphone dans la rue de l'Hôtel Lutecia:
for $R in collection("Restaurants")/Restaurant,
$H in collection("Hotels")/Hotel
where $H//Rue = $R//Rue
and $H//Nom = "Le Lutecia"
return
<Result>
{$R/Nom}
{$R/Téléphone}
</Result>
19. ©GG 19 Exemple 6 : Restructuration d'arbre Construire une liste de restaurants par Ville
for $c in distinct(collection(“Restaurants”)/Restaurant//Ville)
return
<Ville>{$c}</Ville>
<Restaurants>
{for $r in collection(“Restaurants”)/Restaurant
where $r//Ville = $c
return {$r}}
<Restaurants>
20. ©GG 20 Exemple 7 : Imbrication en Where Adresses des hotels dans des villes ayant des restaurants trois étoiles
for $h in collection(“Hotels”)/Hotel
where $h/Adresse/Ville in
for $r in collection(“Restaurants”)/Restaurant
where $r/@categorie = "***"
return {$r/Adresse/Ville/text()}
return {$h/Adresse}
21. ©GG 21 Syntaxe Simplifiée (XLive) // Réduite à FWR
XQuery ::= ForClause [WhereClause] ReturnClause
ForClause ::= “for” VarDef [,VarDef] …
VarDef ::= “$”VarName “in” “collection” “(” QuotedText “)”/XPath
WhereClause ::= “where” CplexCond
CplexCond ::= Cond | Cond AND CplexCond | Cond OR Cplex
CondCond ::= Expr Op Constant | Expr Op Expr | “contains(” Expr , Text “)”
Op ::= “=” | “!=” | “<” | “<=” | “>” | “>=”
Expr ::= “$”VarName/XPath
ReturnClause ::= “return” XMLElement*
XMLElement ::= “<”tag“>”XMLElement“</”tag“>”| “{” XPath“}”*| “{” XQuery“}”*
VarName ::= Any variable
nameTag ::= XML label
QuotedText ::= Any text between quotes " …“
Constant ::= Quoted text or number
XPath ::= XPath expression restricted to child and descendant directions
22. ©GG 22 Exemple 8 : Agrégat simple Combien de restaurants y-a-t-il en collection ?
let $R := collection(“Restaurants”)/Restaurant
return
<NombreRestaurant > {count ($R)} </NombreRestaurant>
23. ©GG 23 Exemple 9 : Agrégat partitionné Lister le nom de chaque restaurant avec le prix moyens des menus proposés
for $r in collection(“Restaurants”)//Restaurant
let $a := collection(“Restaurants”)//
[Restaurant = $r]//Menu/@Prix
return
<resultat>
{$r/Nom}
<avgPrix>{AVG($a)}</avgPrix>
</resultat>
24. ©GG 24 Exemple 10 : recherche textuelle Lister les bons restaurants de Paris
for $r in collection(“Restaurants”)//Restaurant
where (contains ($r/Comments, “Bon”)
or contains ($r/Comments, “Excellent”))
and $r/Adresse/Ville = “Paris”
return {$r/Nom}
25. ©GG 25 Exemple 11 : Ordre et désordre Lister les bons restaurants de Paris par ordre alphabétique
for $r in unordered(collection(“Restaurants”)//Restaurant)
where (contains($r/Comments, "Excellent”)
or contains($r/Comments, "Good”))
and $r/Adresse/Ville = “Paris”
return {$r/Nom}
orderby ($r/Nom descending)
26. ©GG 26 Exemple 12 : Multi-requêtes Construire un document avec en-tête, titre, liste restaurants peu chers, titre, liste restaurants chers
<XML_document>
<Very_Expensive_Restaurants>
<Title>List of very expensive restaurants</Title>
{for $r in collection("Restaurants”)//Restaurant
where every $p in $r/Menu/@Prix satisfies ($p>100)
return {$r}}
</Very_Expensive_Restaurants>
<Very_Inexpensive_Restaurants>
<Title>List of very inexpensive restaurants</Title>
{for $r in collection(“Restaurants”)//Restaurant
where some $p in $r/Menu/@Prix satisfies ($p<10)
return {$r}}
<Date>{date()}</Date>
</Very_Inexpensive_Restaurants>
</XML_document>
27. ©GG 27 Exemple 13 : String Trouver les livres dans lequel le nom d'un élément se termine par "or" et le même élément contient la chaîne "Suciu" quelque part. Pour chaque tel livre, retourner le titre et l'élément qualifiant.
for $b in document("document")//book
let $e := $b/*[contains(string(.), "Suciu")
and ends-with(local-name(.), "or")]
where exists($e)
return <book> { $b/title } { $e } </book>
28. ©GG 28 Fonctionnalités XQuery Text Recherche sur mot-clés
Recherche de phrase
Support des mots de laiaison
Recherche sur préfix, suffix, infix
Normalisation des mots, accents, capitales, … Recherche par proximité (unité = mots)
Spécification de l'ordre des mots
Combinaison logic avec AND, OR , NOT
Recherche par similarité
Tri des résultats par pertinence
29. ©GG 29 Bilan XQuery Véritable langage de programmation
Très puissant
Sélection
Jointure
Imbrication
Restructuration
Agrégation
Tri
Plein texte
… Sur des forêts dont les arbres sont des documents
Questions ?
30. ©GG 30 4. Aperçu des produits Systèmes natifs
Technique spécialisée de stockage et recherche
Extension des techniques documentaires à l'élément
SGBD relationnels étendus
Séparation des éléments et du graphe
Mapping en tables
SGBD objet adapté
Utilisation d'une structuration objet (DOM)
Un produit : Excelon (Object Store)
Racheter par Progress Software
31. ©GG 31 4.1 SGBD Natif XML SGBD
conçu pour XML,
stockant les documents en entiers sans les décomposer en éléments,
utilisant de techniques d'indexation d'arbres spécifiques.
32. ©GG 32 Indexation Plein Texte Utilisation d'un thésaurus au chargement
ensemble de termes reliés
liste des mots importants
synonymes et préférés
spécialisations, traductions
Standards ISO 2788 et ANSI Z39.19
Stémisation (racine) ou lémisation (préféré)
Listes inverses
fichiers de mots significatifs
pour chaque mot, adresse document (élément+offset)
33. ©GG 33 Principaux produits De multiples start-up
Software A.G. Tamino http://www.softwareag.com/
X-Hive/Db http://www.x-hive.com/
Coherity http://www.coherity.com/
IXIA soft http://www.ixiasoft.com/
XML Global http://www.xmlglobal.com/
NeoCore http://www.neocore.com/
Xyleme http://www.xyleme.com/
Exist http://exist.sourceforge.net/
Intégration comme type spécialisé à SGBD OR
DB2 XML Extender, Oracle XML DB, SQL Server 2005
34. ©GG 34 Xyleme Entrepôt XML efficace
Architecture distribuée
Cluster de PCs
Communication avec Corba
Développé sur Linux en C++
Support du langage de requêtes XyQL
OQL étendu avec des expressions de chemins
Recherche plein texte en éléments efficace
35. ©GG 35 Xyleme Functionnalities
36. ©GG 36 Xyleme: Natix Repository Objectifs
Minimiser les I/O pour accès directe et balayage
Accès direct efficace via index et identifiant
Compression des données sans pénaliser les accès
Stockage efficace d’arbre
Pages de taille fixe classique
Enregistrements de taille variable à l’intérieur
Equilibrage des arbres par éclatement de pages
37. ©GG 37 Xyleme: Architecture Physique
38. ©GG 38 Xyleme: Exemple de Requêtes Extension de OQL avec XPath
Orientation recherche textuelle
Select boss/Name, boss/Phone
From comp in BusinessDomain,
boss in comp//Manager
Where comp/Product contains “Xyleme”
39. ©GG 39 Xyleme Indexation Liste inversée standard
mot ? documents contenant ce mot
Index Xyleme
mot ? éléments contenant ce mot (document + élément identifier)
La plupart des requêtes sur mots-clés sont traitées en index, sans accès aux documents
Possibilité d’enrichir la requête via un thésaurus avant la recherche en index
40. ©GG 40 4.2 Mapping SGBDR Composant logiciel au-dessus d'un SGBDR assurant:
le stockage et l'interrogation de documents XML
en transformant le XML en tables
et les tables en XML
41. ©GG 41 Exemple de Mapping
42. ©GG 42 SQL/XML Intégration de fonctionnalités XQuery à SQL
Support à la SQL3
Type de donnée natif XML Type (colonnes XML)
Fonctions d’extraction XPath
Fonctions de construction de XML (pont relationnel)
Insertion et Maj de XML en colonne(s)
Exemple de requête
SELECT XMLElement("Emp",
XMLForest ( e.hire, e.dept AS "department") )AS "result“
FROM EMPLOYEE e
WHERE ExtractValue(e.XMLemp, /emp/@id) > 200;
Intégré à Oracle et DB2
43. ©GG 43 Fonctions SQL/XML
44. ©GG 44 Oracle XML/DB Stockage et publication
Mapping de XML plat sur une table
Mapping de XML imbriqué en tables imbriquées
Stockage de XML en colonne (XML Type)
Commandes PutXml et GetXml
Interrogation
Support de SQL/XML
Servlet XSQL
document XML avec requêtes SQL/XML
transformation du résultat des requêtes en XML
45. ©GG 45 Microsoft: SQL Server 2005 Stockage de XML
Stockage natif comme "XMLtype"
Mapping de XML en tables
défini par assistants
exécuté par procédures stockées
Stockage en Large OBject
varchar et varbinary
Interrogation en XML
XQuery et XML DML
Proposé pour interroger et mettre à jour les données XML
Possibilité de définir des vues XML et de les interroger
SELECT … FOR XML
Retourne du XML à partir de requêtes SQL et permet de définir le format du XML retourné
OpenXML
Manipulation de documents XML comme des tables avec des procédures stockées
46. ©GG 46 XQuare Bridge (Open Source) Extraction XML
via XQuery traduite en SQL
Stockage XML en base
Mapping via schema
Accélérateur XTree (Repository)
Portable
Oracle, SQLServer, PostGres, …
Version industrielle
www.datadirect.com
47. ©GG 47 Natif versus XORDBMS Points forts XOR
pas de nouveau SGBD
possibilité de normaliser les données
possibilité de stocker comme valeur d’attribut
une certaine portabilité multi-SGBD
performance pour accès grain fin
Points forts Natif
un nouveau SGBD fait pour XML
jamais de mapping à définir et maintenir
intégrité du document
recherche plein texte
performance pour accès gros grain
48. ©GG 48 5. Conclusion XML peut-il changer les bases de données ?
Recherche en BD semi-structurées
Besoin de schémas faibles (XML Schéma)
Langage de requêtes standardisé (XQuery)
L'effet du Web ...
Intégration douce à l'Objet/relationnel
Transformation en tables
Gestion du graphe
Support des textes libres niveau élément
49. ©GG 49 Résumé XML fournit un cadre uniforme pour :
échanger des données structurées (DTD, schéma)
échanger des données semi-structurées (graphes)
interroger des documents (XQuery)
intégrer des sources de données hétérogènes (table, multimédia)
Beaucoup de travaux sont en cours
Gestion efficace au sein d'Oracle, de DB2, etc.
Construction de middlewares pull/push fondés sur XQuery
Construction de SGBD pur XML (Xylème, etc.)
50. Techniques d’Indexation XML Objectifs
Dataguide et Variation
Index Fabric
Adaptative Path Index
Node Numbering scheme
Compact Structural Summary
Conclusion
51. ©GG 51 Requirements XML Queries involve navigating data using regular path expressions.(e.g., XPath)
/Livre//Auteur[@specialite="informatique"])
Accessing all elements with same name string.
Ancestor-descendant relationship between elements.
Content based access on values included in text.
52. ©GG 52 Index Types Structural index
Accessing all elements of given name
Ancestor-descendant and parent-child relationship between elements
Content index
Accessing elements containing given keywords
Supporting most text search functionalities
53. ©GG 53 Classical Content Index Classically based on inverted lists
For each term, gives the doc.ID + localization
Several variations allows different search types
Offset, Relative, Proximity
Generally stored in a B+-Tree to optimize search for a given word
Size is an important issue
Memory and Disk (word, localization)
Fixed entry (word repeated)
(word, Frequency, (localization)*)
Variable length entry
54. ©GG 54 Problem with XML Support of element addressing
Doc.ID should include NodeId (Xpath) + Offset
Index size becomes very large
XPath are long
Support of typed data
Integer, float, simple types of XML schema
Requires classical indexes for certain elements
Query processing
Structural joins
Text search
Exact search
Support of updates
Incremental updates would be a plus
55. ©GG 55 Evaluation Criteria Identifiers
Per node or per document
Descendant/Ancestor Search
By join algo.
By graph traversal
By OID comparison
Keyword Search
By element scan
By B-tree traversal
Update
Incremental
Index size
Entry number
Entry size
56. ©GG 56 2-Dataguide and Variation Goldman & Widom VLDB97
Dynamic schemas
helps in query formulation
Concise and accurate structural summaries
Every path in the database has one and only one corresponding path in the DataGuide with the same sequence of labels
A legal label path:
Restaurant/Name
Target set
for e=Restaurant/Entree is Ts(e) = {6,10,11}.
DocId can be added to identifiers
57. ©GG 57 Dataguide Principle To achieve conciseness
a DataGuide describes every unique label path of a source exactly once.
To ensure accuracy
a DataGuide encodes no label path that does not appear in the source.
And for convenience
a DataGuide itself be an object (OEM or XML).
58. ©GG 58 Dataguide Evaluation Identifier
One per node
Descendant/Ancestor Search
By graph traversal
Keyword Search
By element scan
Update
Insertion is incremental
Deletion is complex
Index size
Entry number : Linear for tree; can be exponential in number of DB nodes
Entry size : number of elements for a path
59. ©GG 59 T-Index [Milo & Suciu, LNCS 1997]
T-index stands for Template-index
A path template t has the form
T1 x1 T2 x2 … Tn xn
where each Ti is either a regular path expression or one of the following two place holders P (any Path) and F (any Formula)
//restaurant/ x P y /Address/City z F u
A query path q is obtained from t by instantiating:
P by any path ; F by any formula
60. ©GG 60 Principle T-index indexes all sequences of objects connected by a sequence of path expressions defined by a template.
Particular cases :
1-index indexes = template any path P
Indexes all objects reachable through an arbitrary path expression P from a root:
two nodes are equivalent (same entry) if the set of paths into them from the root is the same.
1-index is a non-deterministic version of the strong data guide
2-index indexes = template P x P
all pairs of objects connected by an arbitrary path expression P
61. ©GG 61 Building a T-index Group objects into equivalence classes containing objects that are indistinguishable w.r.t to a class of paths defined by a path template
Finer equivallence classes are more efficient to construct using bi-simulation
Construct a non deterministic automaton
states represent the equivalence classes
transitions correspond to edges between objects in those classes.
T-index can be used to answer queries of more general forms than the template
62. ©GG 62 3-Adaptative Path Index (APEX) Adaptative Path Index for XML [Chung et.al. SIGMOD 2002]
Summarize paths that appear frequently in query workload
Maintain all paths of length 1
Efficient for partial match paths
Incremental update of index
63. ©GG 63 APEX details Each node has an identifier (nid)
Required paths for indexing ({label}+some composed paths)
APEX = Graph (structural summary) + hash tree (incoming required paths to nodes of Graph)
Hash tree is used to find nodes of graph for given label path, also for incremental update
Determine frequently used path from query workload using sequential pattern mining
64. ©GG 64 APEX Example
65. ©GG 65 APEX Evaluation Identifiers
One per node
Descendant/Ancestor Search
Hash tree access if required or graph traversal or join
Keyword Search
Not supported
Update
Insertion is incremental
Index size (two structures)
Entry number : Linear in number of nodes
Entry size : number of elements for a path
66. ©GG 66 4-Index Fabric [Cooper et al. .A Fast Index for Semistructured Data.. VLDB, 2001]
Extension of dataguide for text search
Keeps all label paths starting from the root
Encode each label path with data value as a string
Use efficient index for strings to store it (Patricia trie)
Perform queries on keywords for elements as string search
Does not keep information on non-terminal nodes
67. ©GG 67 Patricia Trié Trié : Key ? Value
A Patricia trie is a simple form of compressed trie which merges single child nodes with their parents
More efficient for long keys (non-common postfix in one node)
68. ©GG 68 Exemple Doc 1:<invoice>
<buyer>
<name>ABC Corp</name>
<address>1 Industrial Way</address>
</buyer>
<seller>
<name>Acme Inc</name>
<address>2 Acme Rd.</address>
</seller>
<item count=3>saw</item>
<item count=2>drill</item>
</invoice>
Doc 2: <invoice>
<buyer>
<name>Oracle Inc</name>
<phone>555-1212</phone>
</buyer>
<seller>
<name>IBM Corp</name>
</seller>
<item>
<count>4</count>
<name>nail</name>
</item>
</invoice>
69. ©GG 69 Patricia Trie
70. ©GG 70 Search on Paths Example of queries:
/invoice/buyer/name/[ABC Corp]
/invoice/buyer//[ABC Corp]
A key lookup operator search for the path key corresponding to the path expression.
If path expands to infinite number of tags
start by using a prefix key lookup operator,
then navigate through children to check the rest
71. ©GG 71 Fabric Evaluation Identifiers
One per document
Descendant/Ancestor Search
As string search; do not keep order of elements
Keyword Search
By Patricia trie leaves if expanded; value index otherwise
Update
Insertion is incremental
Deletion is complex
Index size (index stored with document)
Entry number : Linear for tree
Entry size : number of elements for a path
72. ©GG 72 5-Node Numbering Scheme Used for indexing elements
Node Identifier (NID) ? element
The NID aims at replacing structural joins by simple function computation:
check parent & ancestor relationships
is_parent(NID1,NID2), is_ancestor(NID1,NID2)
determine parent & children
get_parent(NID1), get_children(NID1)
73. ©GG 73 Virtual nodes (1) [Lee & Yoo Digital Libraries 99]
Document structure mapped on a k-ary tree
Node identifier assigned according to the level-order tree traversal
parent(i) = (i-2)/k + 1
child(i,j) = k(i-1) + j + 1
74. ©GG 74 Virtual nodes (2) NID can be used to address elements in index of elements
Only certain nodes (e.g., leaves) have to be indexed as parent nodes can be determined by computation
Problems:
arity of tree – may be variable and large
determination of real existence of parent/child
update when arity increases ?
75. ©GG 75 XML trees node pre/post numbering [Dietz82]
Identification of nodes
Identifier = preorder rank||postorder rank
X ancestor of Y <=>
pre(X) < pre(Y) and
post(X) > post(Y)
Example
1<5 and 7>3 => (1,7) ancestor (5,3)
76. ©GG 76 Interval encoding [Li&Moon VLDB 2001]
Identify each node by a pair of numbers <order, size> as follows:
For a tree node y of parent x:
order(x) < order(y)
order(y)+size(y) =< order(x) + size(x)
For two sibling nodes x and y, if x is the predecessor of y in preorder traversal then
order(x) + size(x) < order(y)
77. ©GG 77 Relative Region Coordinates (1) [Kha & Yoshikawa IEEE Data Engin. 2001]
A RRC of a node n of an XML tree is a pair [sp-sn,sp-en] of addresses in the region of parent, i.e., relative to parent start
78. ©GG 78 Relative Region Coordinates (2) Absolute region coordinate (ARC)
Relative to root begin (from byte Nth to Mth)
Allow to extract the XML data
Can be derived from RRCs of parents and self:
Begin = ?(parents?self)s –(k-1)
End = ?(parents)s +e(self)–(k-1)
Advantages
Updates are kept local to a region
To access parent-child efficiently
A B-tree like structure is maintained (à la Natix).
79. ©GG 79 Xyleme Generate a form of dataguide per cluster
Generalized DTD
Manage a label and value index (full index)
Keep document ID and element ID
Two forms of element ID:
Bit structured scheme: structure position
Prefix-postfix scheme: left-deep traversal
Stores XML DOM trees in pages
NATIX (Mannheim Univ.) technology
80. ©GG 80 Xyleme
81. ©GG 81 6-Compact Structural Summary [Bremer & Gertz Tech Report 2003]
Compact addressing of words in XML doc.
Encode XPath as reference to a path in a document guide (path set, DTD or schema)
82. ©GG 82 Managing a Compact Index Naïve XML Indexing
(Word,docId,(XPath)*)
Example
book/chapter[2]/resume/section[3]
article/author/name
Difficulties:
Index size !
Processing time !
Intersection of lists Problem:
How to memorize the location of a word inside an element ?
Solution [Bremer & Gertz 02]
Encode the XPath as a reference to a path in a document guide (path sequence or schema)
83. ©GG 83 XPath Encoding XPath encoded as a path ID (PID) of structure (N,(p1,p2, ...)
N being a node identifier in the guide
(p1, p2, ...) being indices for repetitive ancestors from root to N
84. ©GG 84 PID Ordering and Encoding PID order :
IV,(1))<(V,(1,2)) <(V,(1,3)).
Pre-order relationship
X Parent Y
? PID(X) < PID(Y)
Compact PID encoding
Path number
Integer (short)
Repetitive node
log2(n) bits Compact PID Encoding : (V, (1, 3)) /db/article[1]/text/sect[3]
Les PID sont ordonnés. Ainsi le PID représenté par (4,(1,2)) < (5,(1,2)). En terme de XPath on remarque facilement que les nœuds représenté par 5 sont obligatoirement contenus dans des nœuds 4. Cela permet d’éviter de stocker trop d’emplacement pour un terme : si un terme est contenu dans un nœud 5 alors on sait qu’il sera contenu dans ses nœuds précédents. Cela permet d’accélérer les recherches pour les positions d’un terme. De plus cela permet de calculer la fréquence d’un terme en recherchant toutes les fréquences des nœuds fils.
Le Document Guide est créée en premier puis les PID sont encodé. Il faut repérer pour chaque élément le nombre de bit nécessaire pour encoder le numéro de path (2 bits pour un élément qui n’a jamais plus de 3 fils, etc...).
Nœud du DG : log(n) bits, ou ‘n’ représente le nombre de nœuds du DG.
BUT :
Éviter la redondance de stockage d’un terme.
Les PID sont ordonnés. Ainsi le PID représenté par (4,(1,2)) < (5,(1,2)). En terme de XPath on remarque facilement que les nœuds représenté par 5 sont obligatoirement contenus dans des nœuds 4. Cela permet d’éviter de stocker trop d’emplacement pour un terme : si un terme est contenu dans un nœud 5 alors on sait qu’il sera contenu dans ses nœuds précédents. Cela permet d’accélérer les recherches pour les positions d’un terme. De plus cela permet de calculer la fréquence d’un terme en recherchant toutes les fréquences des nœuds fils.
Le Document Guide est créée en premier puis les PID sont encodé. Il faut repérer pour chaque élément le nombre de bit nécessaire pour encoder le numéro de path (2 bits pour un élément qui n’a jamais plus de 3 fils, etc...).
Nœud du DG : log(n) bits, ou ‘n’ représente le nombre de nœuds du DG.
BUT :
Éviter la redondance de stockage d’un terme.
85. ©GG 85 Index Implementation Entry
Word (stem) || Address
Address is :
PID || (offset in element)*
Example
City (V(1,3); (9, 36))
86. ©GG 86 XQuery Text Evaluator Normalize the query through thesaurus
Translation
Synonyms
Conceptualization
Access to the text index
Intersection, union, difference of PIDs
Access to the relevant elements from PIDs
Verification of relevance
87. ©GG 87 7-Conclusion Various indexing techniques for XML
Main dimensions of variations
Structural summary
Dataguide, Schema guide, Generalized DTD
Identification of nodes (NID)
Should keep parent-child relationship
Should be stable to updates
Index of keywords
Should be compact
Should give NID and offset of instances
88. ©GG 88 Classification
89. ©GG 89 Index for XQuery Text Facilitate the retrieval of:
Non stop words
Suffixes, prefixes
Location of words in elements
Relevant nodes for a search
Entries should focus on elements
Word [(docId, NID)*]
90. Implémentation XQuery
Introduction
Algèbre XML
Génération des plans
91. ©GG 91 1. Introduction Des techniques en évolution
Beaucoup de recherche sur XML DB
Extension des techniques relationnelles
Algèbre XML
Réécriture de requêtes en arbre algébrique
Transformation et optimisation des arbres
Prise en compte des index de structure et contenu
92. ©GG 92 Techniques de base
93. ©GG 93 2. Algèbres pour XML De multiples algèbres
Jagadish H.V., Lakshmanan L.V.S., Srivastava D., Thompson K. TAX: A Tree Algebra for XML, Proc. DBPL Conf., Roma Italy, 2001.
Fernandez M., Simeon J., Wadler P.. An Algebra for XML Query, In Foundations of Software Technology and Theoretical Computer Science, New Delhi, 2000.
Zaniolo C. The Representation and Deductive Retrieval of Complex Objects, Proc 11th VLDB, Stockholm, 1985.
Galanis L., Viglas E., DeWitt D.J., Naughton J.F., Maier D. Following the Paths of XML: an Algebraic Framework for XML Query Evaluation, 2001
Tuyet-Tram Dang-Ngoc and Georges Gardarin Federating heterogeneous data sources with xml, IKS 2003
94. ©GG 94 XAlgèbre Proposée et implémentée pour un médiateur
XMLMedia, XQuark
XLive
Besoin d’une algèbre adaptée à XQuery
XTuples, représentation de données semi-structurées
XOpérateurs, une extension des opérateurs relationnels, manipulant les XTuples.
Pourquoi une algèbre adaptée a XQuery ?
Cette algèbre permet la création d’un plan d’exécution spécifique à XQuery. Nous avons étendu l’algèbre relationnelle en l’adaptant à XQuery.
Il fallait donc définir une représentation pour les données semi-structurées, et étendre les opérateurs du relationnel pour la manipulation d’une telle structure de tuples.Pourquoi une algèbre adaptée a XQuery ?
Cette algèbre permet la création d’un plan d’exécution spécifique à XQuery. Nous avons étendu l’algèbre relationnelle en l’adaptant à XQuery.
Il fallait donc définir une représentation pour les données semi-structurées, et étendre les opérateurs du relationnel pour la manipulation d’une telle structure de tuples.
95. ©GG 95 XTuples Pourquoi ce besoin de nouvelle représentation?
Valeurs nulles
Attributs multivalués
Extensions
Nécessité d’une représentation adaptée aux données semi-structurées.
Motivations d’une telle représentation :
1) La représentation classique occupe une place mémoire pour chaque champ, notamment pour les champs NULL, ce qui donne lieu à une perte de place.
2) Les attributs multivalués sont difficilement manipulable au sein d’une structure spécifique.
3) Les schéma sont totalement figés, on ne peut rajouter un champ pour un tuple seul, il faut le rajouter pour tous les tuples (nouvelle perte de place)
Ces inconvénients amènent à réfléchir à une nouvelle représentation pour les tuples de données semi-structurée, plus facilement manipulables, respectant notamment la structure arborescente des données XML.Motivations d’une telle représentation :
1) La représentation classique occupe une place mémoire pour chaque champ, notamment pour les champs NULL, ce qui donne lieu à une perte de place.
2) Les attributs multivalués sont difficilement manipulable au sein d’une structure spécifique.
3) Les schéma sont totalement figés, on ne peut rajouter un champ pour un tuple seul, il faut le rajouter pour tous les tuples (nouvelle perte de place)
Ces inconvénients amènent à réfléchir à une nouvelle représentation pour les tuples de données semi-structurée, plus facilement manipulables, respectant notamment la structure arborescente des données XML.
96. ©GG 96 XTuples : représentation Un XTuple est composé de
un ensemble d’arbre A
un ensemble de références R sur les nœuds des arbres A.
Ces références sont appelées XAttributs.
Les opérations relationnelles se font sur R.
Les parcours et recomposition se font sur A.
Un ensemble de XTuples du même type forment une XRelation
La solution utilisée conserve la structure en arbre des données XML. Un XTuple est donc composé d’une série d’arbres et de références sur les noeuds de ces arbres.La solution utilisée conserve la structure en arbre des données XML. Un XTuple est donc composé d’une série d’arbres et de références sur les noeuds de ces arbres.
97. ©GG 97 Les XOpérateurs Opérateurs étendus du relationnel adapté aux données semi-structurées.
Ils opèrent sur les XRelations (composées de XTuples)
98. ©GG 98 Construction et Projection XSource
construction XAttribut
construction forêt
ordre de la source
non-bloquant
XProjection
destruction de colonnes
destruction de (sous-) arbres
ordre préservé
non-bloquant
99. ©GG 99 Filtrage XRestriction
destruction de lignes complètes
ordre préservé
non bloquant
100. ©GG 100 Union XUnion
ordre préservé en mode bloquant, non préservé sinon
bloquant ou non suivant paramétrage
101. ©GG 101 Jointure XJointure
Jointure des tables et juxtaposition d'arbres
ordre préservé en mode bloquant, non préservé sinon
bloquant ou non suivant paramétrage
XFusion
Concaténation d'arbres
102. ©GG 102 Algèbre XML : Imbrication Opérations d’imbrication nécessaire pour calculer les éléments multi-valués
Exemple :
for $r in //restaurant
Let $m := $r//menu
Return ($r/name, $r/region, count($m))
Solution: introduire les opérateurs Nest/Unest
$r.Project(/name, /region, //menu) ?$r1
$r1.Nest(/name,/region, //menu*)
En plus court et plus puissant:
$r.Project((/name), /region, //menus*)
Aussi utile pour les quantifiers (quel que soit = every)
103. ©GG 103 Algèbre XML: Valeurs nulles Nul en XML à deux aspects
Élément vide <region />
Elément absent
XQuery recherche les prédicats vrai (non nuls)
Elément en condition obligatoire
XQuery permet les éléments vides en résultat
Correspond à une valeur optionnelle
Doit être pris en compte par l’algèbre
Les restrictions peuvent éliminer les nuls
Les jointures sont des (left/right) outer join si le résultat n’est pas soumis à condition
104. ©GG 104 Annotation des attributs Les attributs des XRelations sont associés à un XPath
$r/nom, $r/region, $r/offer/menus/menu
Chaque attribut peut être annoté style DTD
A0 = optional, A1 = mandatory
A* = nested optional, A+ = nested mandatory
Les attributes peuvent être la base d’un groupe d’imbrication
(A, B)
Exemple
($r/nom1),$r/region0, $r/offer/menus/menu*
105. ©GG 105 XAlgebra: Vue d’ensemble Datasource.XSource (Path seq, atomic XQuery) ? XRelation
Transform a source in an XRelation of attributes Path sequence
XRelation.XRestrict (unary Constraint) ?XRelation
select Xtuples satisfying conditions on attribute values
XRelation.XProject (Path seq) ?XRelation
Remove attributes that are not in path sequence
XRelation.XJoin (XRelation, binary Constraint) ? XRelation
join of two XRelations on attribute values
XRelation.XFusion (Path seq) ? XRelation
Remove attributes and merge each XTuple trees in one of given schema
XRelation.XReconstruct (Path seq) ? XML
Extract XML documents of given schema from the XRelation
106. ©GG 106 Implémentation des algorithmes XSélection
Par accès à index
Intérêt d'indexer tous les mots
Intersection et union des adresses selon critères
Filtrage final pour vérifier XJointure
Par accès aux index
Par produit cartésien
Par tri-fusion
Par hachage
Intérêt du pipline
107. ©GG 107 3. Techniques de Transformation Notion de modèle d’arbre (Tree Pattern)
Jagadish VLDB 2002
Principe des modèles d’arbres généralisés (GTP)
Utilisation des GTP pour XQuery
Optimisation & performances
108. ©GG 108 TPQ (Tree Pattern Query) TPQ = arbre modélisant une requête.
Il est destiné à être « mappé » sur l’arborescence du document XML cible
109. ©GG 109 GTP (Generalized Tree Pattern) Le GTP ajoute au TPQ des arcs en pointillés symbolisant des relations optionnelles
GTP: G = (T,F) T: arbre F:formule
Chaque nœud de l’arbre T est labellisé par une variable et possède un numéro de groupe.
F est une formule booléenne exprimant les prédicats applicables aux nœuds.
Un ensemble de nœuds forment un groupe s’ils sont reliés entre eux par des liens non optionnels.
110. ©GG 110 GTP - Exemple
111. ©GG 111 Pattern Match Un « Pattern Match » de l’arbre G dans une collection d’arbres C est un sous-arbre h partiel
h: G ? C tel que:
h contient au moins le groupe 0 de G.
h préserve la structure relationnel de G.
h vérifie la formule booléenne F de G.
112. ©GG 112 Pattern match : Exemple
113. ©GG 113 GTP Universel Il permet de modéliser les requêtes contenant le quantificateur « EVERY » dans la clause « WHERE »
Un GTP universel est un GTP G=(T, F) tel que plusieurs arcs soient étiquetés ‘EVERY’
Un arc peut être étiqueté ‘EVERY’ seulement s’il pointe sur un nœud atteignable par des arcs non optionnels depuis le nœud racine
114. ©GG 114 GTP Universel : Exemple
115. ©GG 115 GTP Requête imbriquée
116. ©GG 116 GTP Requête imbriquée (2)
117. ©GG 117 Transformation XQuery en GTP XQuery : “FLWR”
Une expression FLWR :
ForClause ::= FOR $fv1 IN E1, … , $fvn IN En.
(LetClause ::= LET $lv1 := E1, … , $lvn := En.)
WhereClause ::= WHERE (E1, … , En).
ReturnClause ::= RETURN {E1} … {En}.
Ei ::= FLWR (Requêtes imbriquées) | XPATH.
118. ©GG 118 Algorithme de transformation Il prend en entrée une expression FLWR et renvoie un GTP
Il parse au fur et à mesure la requête XQuery en utilisant la récursivité afin de gérer les expressions FLWR imbriquées dans une clause ‘FOR’ par exemple
Le parsing d’une expression Xpath entraîne la création d’un nouveau nœud dans le GTP résultat
119. ©GG 119 4. Plan d’évaluation La principale motivation derrière les GTP est de fournir une base pour une exécution efficace.
Pour cela:
Supprimer les correspondances répétées pour des TPQ similaires.
Retarder la matérialisation des nœuds autant que possible.
120. ©GG 120 Algèbre physique Index Scan ISp(S) :
Sort chaque nœud satisfaisant le prédicat p en utilisant un index pour les arbres S d’entrée.
Filter Fp(S) :
Sort seulement les arbres satisfaisant le prédicat p des arbres S. L’ordre est préservé.
Sort Sb(S) :
Trie la séquence d’entrée des arbres S sur la base de tri b.
Value Join Jp(S1,S2) :
une comparaison des deux séquences d'arbres d'entrées, par le prédicat de jointure p. L'ordre de la séquence de sortie est basé sur l'ordre de séquence d'entrée gauche de S1.
121. ©GG 121 Algèbre physique (2) Structural Join SJr(S1, S2):
Les séquences d'arbres S1 et S2 doivent être triées en fonction du noeud id. L’opérateur joins S1 et S2 basés sur la relation r entre eux (pc ou ad)pour chaque paire. La sortie est triée sur S1 ou S2 si besoin.
Group By Gb(S) :
l'entrée S est triée sur le group by basé sur le prédicat b.
Merge M(S1,…,Sn) :
Les Sj doivent avoir la même cardinalité k. Pour chaque 1=i=k, joindre l'arbre i avec chaque entrée sous une racine artificielle, et produire l'arbre. L'ordre est préservé.
122. ©GG 122 Traduire le GTP en plan physique Utilisation d'un algorithme spécifique pour générer le plan physique à partir du GTP
Obtention d'un plan du type :
123. ©GG 123 Optimisation grâce aux schémas Principe :
les informations contenues dans le schéma XML (.xsd) vont permettrent d’optimiser les GTP et les plans d’exécution physique en résultant
124. ©GG 124 Élimination des nœuds « internes » a//b//c ? a//c
125. ©GG 125 Deux nœud pour le même élément XML FOR $b IN …//book
WHERE $b/title = ‘Germinal’
RETURN <x> {$b/title} {$b/year} </x>
126. ©GG 126 Éliminer les nœuds inutiles FOR $a IN …./a[b]
RETURN {$a/c}
127. ©GG 127 Eliminer un ‘GROUP BY’ du plan physique RETURN {$a/sous-element}
Une clause ‘FOR’ nécessite un ‘GROUP BY’ du résultat
Mais si le schéma spécifie que le sous-élément est unique alors ce ‘GROUP BY’ devient inutile
128. ©GG 128 Performances des GTP La méthode d’exécution faisant appel aux GTP surpasse en rapidité les méthodes de parcours classique de l’arborescence pour l’exécution de tous les types de requêtes
Les auteurs ont effectués ces tests dans l’environement suivant : TIMBER native XML database, PIII 866MHz, Ms Windows 2000, index sur les principaux éléments
129. ©GG 129 5. Conclusion Les GTP semblent être actuellement la méthode la plus efficace pour XQuery
Mode opératoire en 3 étapes :