La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Validation incrémentale des contraintes dintégrité en XML Maria Adriana Abrão, Béatrice Bouchou, Mírian Halfeld-Ferrari, Dominique Laurent, Martin Musicante.

Présentations similaires


Présentation au sujet: "Validation incrémentale des contraintes dintégrité en XML Maria Adriana Abrão, Béatrice Bouchou, Mírian Halfeld-Ferrari, Dominique Laurent, Martin Musicante."— Transcription de la présentation:

1 Validation incrémentale des contraintes dintégrité en XML Maria Adriana Abrão, Béatrice Bouchou, Mírian Halfeld-Ferrari, Dominique Laurent, Martin Musicante JIRC2005 – Premières Journées Informatique de la Région Centre

2 Plan Vue générale de lapproche Contraintes dintegrités: clef et clef étrangère en XML Validation dun document XML from scratch Validation incrémentale avec mises à jour multiples Résultats et conclusion M.A. Abrão – JIRC2005 1

3 Vue générale: Validation dun document XML (from scratch) Contraintes dintegrité oui / non (pour chaque contrainte) Structure qui regroupe les valeurs clefs trouvées dans le document XML Document XML KeyTrees Validation incrémentale des mises à jour Suite de mises à jour Contraintes dintegrité oui / non (pour chaque contrainte) Document XML KeyTrees Document XML + Mises à jour M.A. Abrão – JIRC2005 2

4 Préliminaires Un document XML est considéré comme un arbre darité non bornée. Une expression de chemin est un mécanisme pour naviguer et sélectionner des nœuds dun document XML. Expression / /toto //recipe /collection/category Résultat tout le document lensemble vide, puisqu'il n'y a pas de nœud toto tous les élémentsrecipe" du document où qu'ils soient tous les éléments category fils de collection Soups root collection category recipe ingredientnameauthor Shrimp Soup J.Fox name amount... Carrot1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... collection... M.A. Abrão – JIRC2005 3

5 Contraintes dintegrité en XML Une clef primaire K est représentée par lexpression de chemin: K = ( Q, ( Q, { P 1,..., P m })) où : Q est le chemin du contexte (context) Q est le chemin cible (target) P 1,..., P m sont les chemins composant la clef r n n... Q Q P1P1 Q Q PmPm Une clef peut être: Absolue: le contexte cest la racine du document XML Relative: le contexte nest pas la racine. M.A. Abrão – JIRC2005 4

6 Contraintes dintegrité en XML K 1 = (/, (./collection,{./category } )) clef absolue K 2 = (/collection, (.//recipe,{./name,./author } )) clef relative K 3 = (//recipe, (./ingredient,{./name } )) clef relative root collection category recipe ingredient Soups nameauthor Shrimp Soup J.Fox name amount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe author_name@numberrecipe_name 1 Mushroom Soup top_recipes M.Smith collection... M.A. Abrão – JIRC2005 5

7 Contraintes dintegrité en XML Soit une clef primaire K = ( Q, ( Q, { P 1,..., P m })). Une clef étrangère FK est représentée par : FK = ( Q 0, ( Q 0, { P 0 1,..., P 0 m })) K où : Q 0 = Q r n n... Q P1P1 Q Q PmPm n 0... P01P01 P0mP0m Q 0 M.A. Abrão – JIRC2005 6

8 Contraintes dintegrité en XML root collection category recipe ingredient Soups nameauthor Shrimp Soup J.Fox name amount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe author_name@numberrecipe_name 1 Mushroom Soup top_recipes M.Smith collection... FK 4 = (/collection, (./top_recipes/top_recipe,{./recipe_name,./author_name })) K 2 K 2 = (/collection, (.//recipe,{./name,./author } )) M.A. Abrão – JIRC2005 7

9 Validation dun document XML from scratch Contraintes dintegrité oui / non KeyTrees Validation from scratch Document XML K 2 = (/collection, (.//recipe,{./name,./author } )) e0e0 collection M 2 : e2e2 e3e3 recipe M2:M2: e4e4 e5e5 name M2:M2: e1e1 * e6e6 author (pour chaque contrainte) M 2.e o est la configuration initiale pour la clef K 2. M.A. Abrão – JIRC2005 8

10 Le processus de vérification des contraintes dintégrité est formalisé par une grammaire dattributs où: les règles de production sont définies par le schéma, et les attributs décrivent des informations sur les contraintes dintégrité. À chaque règle de production sont associées des règles sémantiques, composées dactions et dattributs. E E + T { code } règle de productionrègle sémantique Grammaire dattributs M.A. Abrão – JIRC2005 9

11 Les règles sémantiques fournissent un mécanisme pour lannotation des nœuds avec des attributs, qui peuvent fonctionner de façon: A BC n mm A BC { n(A) = f (m(B), m(C)) } A BC n mm A BC { m(C) = f (m(B), n(A)) } Ascendante (attributs synthétisés): Parcours ascendant de l'arbre La valeur dun attribut synthétisé est déterminée à partir de valeurs d'attributs des fils de ce nœud. Descendante (attributs hérités): Parcours descendant de l'arbre La valeur dun attribut hérité est déterminée à partir de valeurs d'attributs du père et/ou des frères de ce nœud. Grammaire dattributs M.A. Abrão – JIRC2005 10

12 Direction descendante: Le parcours de haut en bas est utilisé pour déterminer le rôle de chaque nœud en ce qui concerne des clefs primaires et étrangères. Chaque nœud contient un attribut, appelé conf, pour chaque contrainte devant être verifiée. Lattribut conf garde la configuration (M.e) qui exprime le rôle du nœud par rapport à une contrainte. Grammaire dattributs M.A. Abrão – JIRC2005 11

13 root collection recipe nameauthor Mushroom Soup M.Smith... top_recipe author_name @number recipe_name 1 Mushroom Soup top_recipes M.Smith … conf K 2 = { M 2.e 0 } conf FK 4 = { M 4.e 0 } conf K 2 = { M 2.e 1 } conf FK 4 = { M 4.e 1 } conf K 2 = { M 2.e 2, M 2.e 3 } conf FK 4 = { } conf K 2 = { M 2.e 2, M 2.e 5 } conf FK 4 = { } conf K 2 = { M 2.e 2, M 2.e 6 } conf FK 4 = { } conf K 2 = { } conf FK 4 = { M 4.e 3 } conf K 2 = { } conf FK 4 = { M 4.e 4 } conf K 2 = { } conf FK 4 = { M 4.e 7 } conf K 2 = { } conf FK 4 = { M 4.e 6 } e0e0 collection M 2 : e2e2 e3e3 recipe M2:M2: e4e4 e5e5 name M2:M2: e1e1 * e6e6 author... e0e0 collection M 4 : e2e2 e3e3 top_recipes M4:M4: e5e5 e6e6 recipe_name M4:M4: e1e1 e7e7 author_name e4e4 top_recipe K 2 = (/collection, (.//recipe,{./name,./author})) FK 4 = (/collection, (./top_recipes/top_recipe,{./recipe_name,./author_name})) K 2 Grammaire dattributs Direction descendante: M.A. Abrão – JIRC2005 12

14 Direction ascendante: Dans cette direction, les valeurs liées a chaque clef sont portées jusquaux nœuds contexte. Pour chaque nœud, trois attributs peuvent être définis: k : tuple qui contient une valeur qui compose une clef t : ensemble qui réunit les tuples obtenus par les attributs k des nœuds fils. c : booléen qui représente le résultat de la vérification de tous les attributs t des noeuds fils. Grammaire dattributs M.A. Abrão – JIRC2005 13

15 Grammaire dattributs conf FK 4 = { M 4.e 7 } root collection …recipe name author Mushroom Soup M.Smith... top_recipe author_name @number recipe_name 1 Mushroom Soup top_recipes M.Smith … conf K 2 = { M 2.e 1 } conf FK 4 = { M 4.e 1 } conf K 2 = { M 2.e 0 } conf FK 4 = { M 4.e 0 } conf K 2 = { M 2.e 2, M 2.e 3 } conf K 2 = { M 2.e 2, M 2.e 5 } conf K 2 = { M 2.e 2, M 2.e 6 } conf FK 4 = { M 4.e 3 } conf FK 4 = { M 4.e 4 } k 4 = conf FK 4 = { M 4.e 6 } c 2 = c 4 = c 2 K = c 4 FK = t 2 = { } t 4 = {< Mushroom Soup, M.Smith>} k 2 = t 4 = {< Mushroom Soup, M.Smith>} e0e0 collection M 2 : e2e2 e3e3 recipe M2:M2: e4e4 e5e5 name M2:M2: e1e1 * e6e6 author e0e0 collection M 4 : e2e2 e3e3 top_recipes M4:M4: e5e5 e6e6 recipe_name M4:M4: e1e1 e7e7 author_name e4e4 top_recipe K 2 = (/collection, (.//recipe,{./name,./author})) FK 4 = (/collection, (./top_recipes/top_recipe,{./recipe_name,./author_name})) K 2 M.A. Abrão – JIRC2005 Direction ascendante: 14

16 keyTree @namekey @pos K2K2 0 target key @pos @refCount 0.1 0 … context Shrimp Soup key J.Fox target key@refCount 0.2 1 Mushroom Soup key M.Smith @pos root collection recipe name author Shrimp Soup J.Fox... … c 2 K = c 4 FK = c 2 = c 4 = t 2 = { } k 2 = recipe name author Mushroom Soup M.Smith... t 2 = { } k 2 = category Soups 0 0.0 0.10.2 0.1.00.1.10.2.00.2.1 Pendant que les attributs synthétisés sont calculés pour une clef primaire, son arbre keyTree correspondant est construit. M.A. Abrão – JIRC2005 Grammaire dattributs keyTree K2 : 15

17 Validation dun document XML from scratch Contraintes dintegrité oui / non KeyTrees Validation from scratch Document XML Structures Auxiliaires: (i)CONF: pile pour stocker les attributs hérités. (ii)SYNT: pile pour stocker les attributs synthétisés CONFSYNT (pour chaque contrainte) M.A. Abrão – JIRC2005 16

18 Résultat de la validation dun document XML from scratch Soit un ensemble de clefs primaires et étrangères qui doivent être respectées par un sous-arbre T : K j (1 j m) FK j (m+1 j n) Le résultat de la vérification iniciale appliqué sur T est un tuple, > Oú: est un n-uplet de tuples de la forme. est un m-uplet qui contient un keyTree pour chaque clef primaire. M.A. Abrão – JIRC2005 17

19 Validation incrémentale avec mises à jour multiples Suite de mises à jour KeyTrees Contraintes dintegrité oui / non (pour chaque contrainte) KeyTrees Structures Auxiliaires: (i) CONF: pile pour stocker les attributs hérités. (ii) SYNT: pile pour stocker les attributs synthétisés CONFSYNT Validation Incrémentale Document XML M.A. Abrão – JIRC2005 18

20 Seulement les parties affectées par les mises à jour sont re-vérifiées. Si la suite de mises à jour viole les contraintes dintegrités, alors la suite est rejetée, et le document nest pas changé. Les opérations de mise à jour sont: Insertion Suppression Remplacement Validation incrémentale avec mises à jour multiples M.A. Abrão – JIRC2005 19

21 Opérations de mise à jour M.A. Abrão – JIRC2005 20

22 Validation incrémentale de K2 et FK4 K 2 = (/collection, (.//recipe, {./name,./author } )) FK 4 = (/collection, (./top_recipes/ top_recipe, {./recipe_name,./author_name } )) K 2 Suite de mises à jour: 1.Linsertion de la nouvelle recette Broccoli soup dans la position 0.1 2.La suppression de la position 0.2 3.La suppression de la position 0.3.0 root collection categoryrecipe ingredient Soups nameauthor Shrimp Soup J.Foxnameamount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe author_name @number recipe_name 1 Mushroom Soup top_recipes M.Smith collection 0 1 0.0 0.1 0.20.3 0.1.0 0.1.10.1.20.1.3 0.1.2.00.1.2.1 0.2.0 0.2.10.2.20.3.0 0.3.0.00.3.0.20.3.0.1... 1 M.A. Abrão – JIRC2005 21

23 Validation incrémentale de K2 et FK4 keyTree @namekey @pos K2K2 0 target key@refCount 0 … context Broccoli Soup key D.Simon target key@refCount 01 0 Shrimp Soup key J.Fox @pos target key@refCount 02 1 Mushroom Soup key M.Smith @pos 2. KeyTreeK 2 après linsertion dans la position 0.1: Insertion de la nouvelle recette dans la position 01: recipe ingredientnameauthor Broccoli Soup D.Simonnameamount... onion 1 medium T : 1. Résultat de la vérification initiale de T :, { }, >,, { }, > >, > target key@refCount 0Broccoli Soup key D.Simon M.A. Abrão – JIRC2005 22

24 Validation incrémentale de K2 et FK4 K 2 = (/collection, (.//recipe, {./name,./author } )) FK 4 = (/collection, (./top_recipes/ top_recipe, {./recipe_name,./author_name } )) K 2 Suite de mises à jour: 1.Linsertion de la nouvelle recette Broccoli soup dans la position 0.1 2.La suppression de la position 0.2 3.La suppression de la position 0.3.0 root collection categoryrecipe ingredient Soups nameauthor Shrimp Soup J.Foxnameamount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe author_name @number recipe_name 1 Mushroom Soup top_recipes M.Smith collection 0 1 0.0 0.1 0.20.3 0.1.0 0.1.10.1.20.1.3 0.1.2.00.1.2.1 0.2.0 0.2.10.2.20.3.0 0.3.0.00.3.0.20.3.0.1... 2 M.A. Abrão – JIRC2005 23

25 keyTree @namekey @pos K2K2 0 target key@refCount 0 … context Broccoli Soup key D.Simon target key@refCount 01 0 Shrimp Soup key J.Fox @pos target key @refCount 02 1 Mushroom Soup key M.Smith @pos @del yes Suppression de la position 02: Validation incrémentale de K2 et FK4 2. KeyTreeK 2 après la suppression de la position 0.2: 1. Résultat de la vérification initiale du sous-arbre au-dessous de la position 0.2 :, { }, >,, { }, > >, > M.A. Abrão – JIRC2005 24

26 Validation incrémentale de K2 et FK4 K 2 = (/collection, (.//recipe, {./name,./author } )) FK 4 = (/collection, (./top_recipes/ top_recipe, {./recipe_name,./author_name } )) K 2 Suite de mises à jour: 1.Linsertion de la nouvelle recette Broccoli soup dans la position 0.1 2.La suppression de la position 0.2 3.La suppression de la position 0.3.0 root collection categoryrecipe ingredient Soups nameauthor Shrimp Soup J.Foxnameamount ingredient... Carrot 1 medium recipe ingredientnameauthor Mushroom Soup M.Smith... top_recipe author_name @number recipe_name 1 Mushroom Soup top_recipes M.Smith collection 0 1 0.0 0.1 0.20.3 0.1.0 0.1.10.1.20.1.3 0.1.2.00.1.2.1 0.2.0 0.2.10.2.20.3.0 0.3.0.00.3.0.20.3.0.1... 3 M.A. Abrão – JIRC2005 25

27 Suppression de la position 030: 1. Résultat de la vérification initiale du sous-arbre au-dessous de la position 0.3.0 :, { }, >,, { }, > >, > Validation incrémentale de K2 et FK4 2. KeyTreeK 2 après la suppression de la position 0.3.0: keyTree @namekey @pos K2K2 0 target key@refCount 0 … context Broccoli Soup key D.Simon target key@refCount 01 0 Shrimp Soup key J.Fox @pos target key @refCount 02 1 Mushroom Soup key M.Smith @pos @del yes 0 M.A. Abrão – JIRC2005 26

28 Suppression de la position 030: 1. Résultat de la vérification initiale du sous-arbre au-dessous de la position 0.3.0 : Validation incrémentale de K2 et FK4 2. KeyTreeK 2 après la suppression de la position 0.3.0: keyTree @namekey @pos K2K2 0 target key@refCount 0 … context Broccoli Soup key D.Simon target key@refCount 01 0 Shrimp Soup key J.Fox @pos, { }, >,, { }, > >, > M.A. Abrão – JIRC2005 27

29 Opérations de mise à jour Si une opération de mise à jour est acceptée, alors les valeurs clefs rencontrées sont inserées ou supprimées des KeyTrees. Lopération peut être temporairement acceptée, et les violations de contraintes sont annotées dans la KeyTree : Insertion ( duplication de valeurs clefs ) Suppression ( les valeurs clefs à supprimer sont référencées par une clef étrangère ) Test de validité: vérifier si les KeyTrees résultants nont pas de marques de violation. M.A. Abrão – JIRC2005 28

30 Résultats expérimentaux Validation from scratch: Nombre fixe de contraintes: 2 clefs primaires et 1 clef étrangère Quatre documents XML (250.000 à 1.000.000 nœuds). 250.0001.000.000750.000500.000 20 40 60 80 100 120 (nombre de nœuds) (temps en seconds) M.A. Abrão – JIRC2005 29

31 Résultats expérimentaux Validation from scratch: Un document XML (500.000 nœuds) Le nombre de clefs primaires et clefs étrangères a varié de 1 à 5. 1432 20 40 60 80 100 120 (nombre de clefs) (temps en seconds) 5 M.A. Abrão – JIRC2005 30

32 Complexité La complexité de la validation incrémentale est considerée selon les opérations: Insertion: O(n. v kval. c) n : nombre de contraintes dintégrité v kval : nombre maximum des valeurs de clef dans un contexte dun keyTree c : nombre maximum de composants dune clef. Suppression: O( |t del |. n. v kval. c) |t del | : taille du sous-arbre Complexité pour la validation incrémentale avec m opérations de mise à jour: O(m 1. n. v kval. c) + O(m 2. |t del |. n. v kval. c) M.A. Abrão – JIRC2005 31

33 Conclusions La formalisation de la vérification de contraintes d'intégrité a été faite par une grammaire dattributs. Nous pouvons considérer l'utilisation des keyTrees pour évaluer efficacement des requêtes basées sur les valeurs clefs. Notre approche est plus complète que celle proposée par (Chen et al.): mises à jour multiples sur n'importe quel nœud de l'arbre vérification de clefs étrangères integration de la validation du schéma et des contraintes dintegrité. Y. Chen, S. Davidson, and Y. Zheng. Validating constraints in XML. Technical Report, University of Pennsylvania, 2002 [Chen et al.] M.A. Abrão – JIRC2005 32


Télécharger ppt "Validation incrémentale des contraintes dintégrité en XML Maria Adriana Abrão, Béatrice Bouchou, Mírian Halfeld-Ferrari, Dominique Laurent, Martin Musicante."

Présentations similaires


Annonces Google