![Page 1: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/1.jpg)
Spracovanie XML dotazov založené na sekvenciách ciest
Juraj Fečanin
Štefan Ignáth
![Page 2: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/2.jpg)
2
Obsah
1. Úvod
2. Uloženie na základe sekvencií ciest
3. Plánovanie väzieb
4. Experimentálne výsledky
![Page 3: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/3.jpg)
3
Časť Prvá
Úvod
![Page 4: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/4.jpg)
4
Autori
• Iona Manolescu
• Andrei Arion
• Angela Bonifati
• Andrea Pugliese
![Page 5: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/5.jpg)
5
O čo ide
• Jedná sa o optimalizáciu vyhodnocovanie dotazov XQuery
• Doteraz sa využívalo relačné, alebo stromové uloženie (XML databáze) s použitím B+ stromov na indexovanie
• Takéto uloženie a indexovanie dát nazývame rozdeľovanie značiek (tag partitioning – TP)
![Page 6: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/6.jpg)
6
O čo ide
• Autori navrhujú nový model uloženie DB pomocou sekvencií ciest
• Rozdeľujú obsah a štruktúru XML dokumentu podľa dátových ciest (data paths) a ukladajú to v usporiadaných sekvenciách
• Nový model je o niekoľko rádov rýchlejší ako starý
![Page 7: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/7.jpg)
7
Prínos
• Popisujú logický a fyzický model uloženia dát pomocou sekvencií ciest
• Model je kompaktnejší ako TP a umožňuje efektívne načítavanie dokumentov
• Obsahuje súhrn ciest, ktorý obsahuje štrukturálne informácie v kompaktnej forme
![Page 8: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/8.jpg)
8
Prínos
• Viazanie premenných je oveľa efektívnejšie ako v TP
• Model je dobre integrovateľný s optimalizačnými technikami XQuery vyvinutými pre model TP
• Model poskytuje detailné štruktúrne informácie pre optimalizáciu
![Page 9: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/9.jpg)
9
Vyhodnocovanie dotazov XQuery
Viazanie premenných – variable bindings – základ vyhodnocovania dotazov XQuery.Na premennú sa viažu elementy nájdené nasledovaním cesty definujúcej premennú:• bez duplikátov – v zmysle ID elementu• v poradí v akom sa nachádzajú v dokumente
for $i in //asia//item, $d in $i/description where $i//keyword=“romantic” return <gift> <name> {$i/name} </name> {$d//emph} </gift>
![Page 10: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/10.jpg)
10
Vyhodnocovanie dotazov XQuery
Postup vyhodnocovania:
1. Viazanie všetkých premenných a poddotazov v return klauzule
2. Kombinácia viazaní pomocou spojení3. Serializácia XML výsledkov, tak ako to
podmieňuje return klauzula. Kým fázy 1. a 2. manipulujú iba s ID elementov, táto fáza manipuluje s celými elementmi
![Page 11: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/11.jpg)
11
Vyhodnocovanie dotazov XQuery
Spojenia v časti Combine párujú viazania na základe:• hodnotových predikátov (v príklade sa nenachádza)• štruktúrnej príbuznosti ID elementov obsiahnutých vo viazaní – štrukturálne spojenie
![Page 12: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/12.jpg)
12
Vyhodnocovanie dotazov XQuery
![Page 13: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/13.jpg)
13
Vyhodnocovanie dotazov XQuery
Spojenia v príklade:• Štruktúrne spojenie $i a $d viazaní (structural
join)• Štruktúrne polospojenie $i a $k viazaní –
pretože viac odpovedajúcich kľúčových slov musí produkovať iba jeden výsledok (structural semijoin)
• Štruktúrne vonkajšie spojenie pripája name a emph k $i a $d viazaniam, pretože výsledok musí existovať aj pre elementy bez násladníka name a/alebo emph
![Page 14: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/14.jpg)
14
Časť Druhá
Uloženie na základe sekvencií ciest
(Path sequence-based storage)
![Page 15: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/15.jpg)
15
Logický model uloženia
Vlastnosti:
•oddeľuje obsah dokumentu od jeho štruktúry
• ukladá každú skupinu podobných prvkov v poradí v akom sa nachádzajú v dokumente
Ďalej sa pozrieme na jednotlivé časti tohto logického modelu.
![Page 16: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/16.jpg)
16
Logický model uloženia
Prvá štruktúra obsahuje kompaktnú reprezentáciu stromovej štruktúry XML dokumentu. Každému elementu je priradený unikátny perzistentný identifikátor. Využíva sa [pre,post]. •pre – pozičné číslo otváracieho tagu elementu•post – pozičné číslo uzatváracieho tagu elementu(element e1 je predchodcom elementu e2 iba ak e1.pre<e2.pre a e1.post>e2.post)
![Page 17: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/17.jpg)
17
Logický model uloženia
![Page 18: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/18.jpg)
18
Logický model uloženia
•Identifikátory rozdeľujeme podľa dátových ciest do ktorých elementy patria.
•Každá časť je sekvenciou identifikátorov, usporiadaná podľa poľa pre – teda v poradí ako sa nachádzajú v dokumente.
•Všetky ID v sekvencii ciest majú rovnakú hĺbku v strome dokumentu – hĺbka je uložená pre každú sekvenciu
![Page 19: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/19.jpg)
19
Logický model uloženia
Niekoľko sekvencií ciest z predchádzajúceho príkladu, pre cesty:
/site
/site/people
…
![Page 20: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/20.jpg)
20
Logický model uloženia - Kontajner
•Druhá štruktúra ukladá obsah XML elementov a hodnôt atribútov•Hodnoty priradzujeme najbližším elementom – teda identifikátorom elementov (pre hodnotám ID)•Ukladáme v sekvenciách párov [pre,post] usporiadaných podľa pre•Takúto sekvenciu nazývame kontajner
![Page 21: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/21.jpg)
21
Logický model uloženia - Kontajner
• Obsahuje hodnoty typu string, integer ale double
Niekoľko príkladov kontajnerov:
/site/people/person/@id
/site/people/person/name/#text
![Page 22: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/22.jpg)
22
Logický model uloženia – Súhrn ciest
Predchádzajúce dve štruktúry môžu reprezentovať XML dokument bez strát. Pridáme tretiu indexujúcu štruktúru významnú pre spracovanie dotazov. Súhrn ciest XML dokumentu je strom:- Vnútorné uzly korešpondujú s XML elementmi- Listy korešpondujú s hodnotami (textom alebo atribútmi)
![Page 23: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/23.jpg)
23
Logický model uloženia – Súhrn ciest
• Pre každú jednoduchú cestu /l1/l2/.../l3
odpovedajúcu jednému alebo viacerým uzlom v XML dokumente existuje práve jeden uzol dosiahnutý tou istou cestou v súhrne ciest• Každému uzlu x v súhrne ciest odpovedá unikátne číslo cesty, charakterizujúce uzol a aj cestu z koreňa súhrnu k uzlu x
![Page 24: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/24.jpg)
24
Logický model uloženia – Súhrn ciest
• Každá cestou orientovaná ID sekvencia je unikátne asociovaná k číslu cesty
• Každý kontajner je asociovaný k páru:– číslo cesty– @attrName pre atribút alebo #text pre text
V nasledujúcom príklade súhrnu ciest sú čísla ciest znázornené veľkým fontom pri uzloch.
![Page 25: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/25.jpg)
25
Logický model uloženia – Súhrn ciest
![Page 26: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/26.jpg)
26
Logický model uloženia – Súhrn ciest
Súhrn ciest• Je vždy stromom• Nezoskupuje uzly,
informácie ukladá oddelene
Dataguide*• Môže tvoriť obecný
graf• Zoskupuje uzly s
rovnakým tagov
* viz: Goldman R., Widon J.,”Dataguides: Enabling Query Formulation and Optimization in Semistructured Databases”, VLDB, Athens, Greecem 1997
![Page 27: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/27.jpg)
27
Logický model uloženia – Súhrn ciest
Súhrn obsahuje stručné štatistické údaje o danom uzle. Nech x je uzol v súhrne na ceste končiacej tagom t and nech y je potomkom x:• Nx počet elementov nachádzajúcich sa na ceste x (veľkosť ID sekvencie korešpondujúcej x)
• mx,y,Mx,y: minimálny, resp. maximálny počet y potomkov XML elementu na ceste x
![Page 28: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/28.jpg)
28
Logický model uloženia – Súhrn ciest
Označenie pre dokument:• N – veľkosť• h – hĺbka
• NPS – počet uzlov v jeho súhrne ciest
Súhrn ciest budeme udržiavať v pamäti, keďže jeho veľkosť je vzhľadom na veľkosť dokumentu pomerne malá.
![Page 29: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/29.jpg)
29
Logický model uloženia
• Sekvencie identifikátorov, kontajnery a súhrny ciest sú všetkým čo o dokumente uchovávame. K týmto údajom sa pridávajú indexy.
• Načítame XML dokument jedným priechodom s použitím parseru riadeného udalosťami. Algoritmus je lineárny s N, používajúci O(h+NPS) pamäte pre zásobník a súhrn ciest.
![Page 30: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/30.jpg)
30
Fyzický model uloženia
Základom logického modelu je usporiadanie v ID sekvenciách a v kontajneroch, preto fyzický model musí podporovať usporiadanie prvkov.
Ďalej budem uvažovať o:
•B+ stromoch
•Perzistentných sekvenciách
![Page 31: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/31.jpg)
31
Fyzický model uloženia – B+ stromy
O využití B+ stromoch sa uvažovalo v mnohých prácach zameraných na túto tematiku.
Výhody:
• Robustnosť, podpora updatov
Nevýhody:
• Nafúknutosť vzhľadom na množstvo ID indexov
![Page 32: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/32.jpg)
32
Fyzický model uloženia – Perzistentné sekvencie
Výhody:• Extrémna kompaktnosť, vedúca k
zmenšeniu spotreby pamäte• Výkon v aplikáciách kde záleží na poradíNevýhody:• Zlé správanie v prítomnosti updatov
Ďalej budeme používať ako fyzický model práve perzistentné sekvencie
![Page 33: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/33.jpg)
33
Fyzický model uloženia – Perzistentné sekvencie
Príklad fyzického uloženia ID sekvencií
Prvky v týchto sekvenciách majú konštantnú dĺžku, rovnú veľkosti ID.
![Page 34: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/34.jpg)
34
Fyzický model uloženia – Perzistentné sekvencie
Príklad obsahuje sekvencie z kontajnerov
Kontajnery sú rôznej dĺžky (pre hodnoty dát), preto použijeme sekvencie pohyblivej dĺžky.
![Page 35: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/35.jpg)
35
Fyzický model uloženia – Perzistentné sekvencie
Súhrn ciest ukladáme ako sekvenciu prvkov premenlivej dĺžky. Každý uzol obsahuje jeden prvok obsahujúci:• Číslo uzlu• Číslo rodiča uzlu• Čísla potomkov uzlu• Skôr popísané štatistické údajeMiesto potrebné pre súhrn ciest je lineárne s NPS.
![Page 36: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/36.jpg)
36
Fyzický model uloženia – Perzistentné sekvencie
Príklad fyzického uloženia súhrnu ciest
![Page 37: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/37.jpg)
37
Časť Tretia
Plánovanie väzieb
![Page 38: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/38.jpg)
38
Notácia
• lineárna cesta (linear path expression – lpe )(vi?) (/|//) l1 (/|//) l2 …(/|//)lk
– li – je element alebo *– k >= 0 (dĺžka cesty)– vi – nepovinná dotazovacia premenná
• jednoduchá cesta l1/l2/.../lk• dve jednoduché cesty sú príbuzné, ak uzol v
súhrne ciest odpovedajúci jednej z nich je predkom druhého uzlu
• uzly prislúchajúce ceste P sú uzly získané vyhodnotením cesty voči súhrnu ciest
• označíme op[i] i-ty stĺpec vo výstupe op
![Page 39: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/39.jpg)
39
Viazanie jednej premennej
• rozdeľovanie ciest umožňuje priamy prístup k prislúchajúcim uzlom
• stačí prehľadať korešpondujúce ID sekvencie
• IDScan ( x )• vracia ID-čka zo sekvencií
asociovaných s x• vyplní políčko hĺbka podľa
dĺžky jednoduchej cesty• výstup je zoradený a bez
opakovania
for $x in /site/people/person/name
![Page 40: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/40.jpg)
40
Komplexnejšie cesty
• vytvoríme množinu uzlov zo súhrnu ciest prislúchajúce //parlist//text
• prehľadáme korešpondujúce ID sekvencie a súčasne ich “zlejeme” do jednej sekvencie
• výsledné väzby sú v poradí ako v dokumente a bez opakovania
• nie je použité žiadne spojenie
for $x in //parlist//text
![Page 41: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/41.jpg)
41
Zložitosť
• xP – počet uzlov v súhrne ciest prislúchajúcich ceste P• NP – počet väzieb pre P• b – blokovací faktor• I/O: O ( NP/b + xP )
– každá ID sekvencia je fyzicky “klastrovaná” , ale nie všetkých xP sekvencií je uložených spoločne
• CPU: O ( NP * log ( xP ) )– spojenie xP usporiadaných sekvencií
• Pamäť: O (NPS + xP )– uloženie súhrnu ciest a štruktúry pre spojenie sekvencií (strom s
xP uzlami)
![Page 42: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/42.jpg)
42
Hľadanie vyhovujúcich uzlov 1
• prechádzame súhrn ciest od koreňa k listom
• priraďujeme elementy cesty zľava doprava
• uzly vyhovujúce poslednej položke cesty vložíme do výslednej množiny
• O ( NPS )
![Page 43: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/43.jpg)
43
Hľadanie vyhovujúcich uzlov 2
• začneme v uzle 1 a pokúsime sa nájsť vyhovujúci uzol pre element asia
• koreň nevyhovuje a tak hľadanie predáme do synovských uzlov, ktoré ho predajú ďalej
• vo vetve regions/asia element asia vyhovuje a hľadanie //item sa predá synovským uzlom
//asia//item
![Page 44: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/44.jpg)
44
Väzba s jednoduchými predikátmi
• v tomto prípade potrebujeme pristúpiť ku kontajneru pre person/@id
• ContScan ( x )• x je cesta ( napr. 3/@id )• vracia zoradené dvojice [pre,hodnota] z kontajneru
• ak je na kontajnery vytvorený index, použijeme IdxAccess
• spojením s IDScan ( ... ) získame trojice [pre,post,depth]
for $x in //people//person[@id = “person0”]
![Page 45: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/45.jpg)
45
Obrázok
![Page 46: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/46.jpg)
46
Viazanie viacerých premenných 1
• využijeme zovšeobecnený stromový vzor ( generalized tree pattern )– jednoduché čiary -> /– dvojité čiary -> //– čiarkované -> ľavé vonkajšie
spojenie– * -> ľavé polospojenie– $1 a $2 – premenné pre
výstup
for $i //asia//item, $d in $i/description where $i//keyword=“romantic”
return <gift> <name> {$i/name}</name>{$d//emph} </gift>
![Page 47: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/47.jpg)
47
Viazanie viacerých premenných 2
• dva kroky:1. Vypočítame minimálne množiny, ktoré
musia byť prehľadané.– analyzujeme vzťahy medzi premennými– hľadáme nepotrebné premenné a nové vzťahy
medzi premennými
2. Skonštruujeme plán pre viazanie premenných– využijeme znalosti z predchádzajúceho kroku
![Page 48: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/48.jpg)
48
Prvý krok
• pre každú premennú vytvoríme množinu ciest zo súhrnu ciest, s ktorými by prípadne mohla byť zviazaná
• nech u,v sú premenné – u je rodičom v v stromovom vzore
• su,sv – príslušné množiny možných ciest
• su zistíme súčasným priechodom súhrnu ciest a stromového vzoru
![Page 49: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/49.jpg)
49
Príklad
si = {/site/regions/asia/item}si sd = {/site/regions/asia/item/description}si sk = {28}sd + si s1 = {18} a s2 = {22,26}
for $i //asia//item, $d in $i/description where $i//keyword=“romantic”
return <gift> <name> {$i/name}</name>{$d//emph} </gift>
![Page 50: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/50.jpg)
50
Transformácia polospojení 1• pre každú hranu (v je rodičovská premenná, u je synovská premenná) a
pár príbuzných ciest xsu, ysv vypočítame maximálny faktor cesty Mpfx,y • je to maximálne Mxi,yi
pri priechode z uzlu x do uzlu y v súhrne ciest• napr. pre hranu medzi $i a $2 vypočítame Mpf17,22 a Mpf17,26
• Mpf17,22 je najväčšie spomedzi M17,19, M19,20, M20,21 a M21,22
• ak Mpfx,y ≤ 1 a hrana medzi u a v je polospojenie, transformujeme ju na spojenie (obe operacie sú rovnaké)
![Page 51: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/51.jpg)
51
Transformácia polospojení 2
• ak Mpf16,28 ≤ 1 vyhodnotenie výrazu môže začať prístupom k $k, nasledovaný spojením s $i
![Page 52: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/52.jpg)
52
Eliminácia vetvy so spojením• vypočítame minimálny faktor cesty mpfx,y pre každý príbuzný pár
ciest x,y• je to minimálne mxi,yi
na ceste z x do y• ak je hrana medzi u a v spojenie, mpfx,y = 1 a Mpfx,y = 1 pre všetky
príbuzné cesty x,y a nemáme priamy predikát pre v, potom môžme eliminovať v zo stromového vzoru
• všetkých potomkov v “prilepíme” priamo k u• napr. všetky ázijské položky majú presne jeden popis, preto je
premenná $d nepotrebná
![Page 53: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/53.jpg)
53
Prerezávanie ciest
• využijeme každú množinu sv k odstráneniu nepotrebných ciest z su
• u je rodič v v stromovom vzore
sp={20,23} sk={26}
• zo súhrnu ciest vieme, že 26 je potomok 20, ale nie 23eliminujeme nepotrebnú cestu 23 z sp
• použiteľné iba pre plné hrany• môžme zistiť, že dotaz nemá odpoveď
for $p in //parlist, $k in $p//text return $k
![Page 54: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/54.jpg)
54
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Uzol v súhrne ciest.
![Page 55: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/55.jpg)
55
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Rodičovský uzol
![Page 56: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/56.jpg)
56
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Posledný uzol zo stromového vzoru, ktorý
vyhovuje predkovi pv
![Page 57: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/57.jpg)
57
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Posledný uzol s premennou zo
stromového vzoru, ktorý vyhovuje predkovi pv
![Page 58: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/58.jpg)
58
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Cesta, ku ktorej prísluší x
![Page 59: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/59.jpg)
59
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Procedúra sa snaží nájsť potomka u, ktorému
vyhovuje pv.
![Page 60: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/60.jpg)
60
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Pre každého takého potomka skontrolujeme,
či tagy súhlasia.
![Page 61: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/61.jpg)
61
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Ak je vi navyše premenná,
označíme si cestu, ktorú sme pre ňu našli a že
rodičovská premenná x vyhovuje ceste px.
![Page 62: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/62.jpg)
62
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Vypočítame faktory cesty za pomoci m a M
uložených pre pu a pv.
![Page 63: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/63.jpg)
63
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Ďalej pokračujeme v hľadaní vyhovujúcej cesty. Pokúsime sa
priradiť deti vi k deťom pv pomocou rekurzívneho
volania
![Page 64: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/64.jpg)
64
Algoritmustraverse ( GTPNodes u, x,
PSNodes pu, px, pv )foreach GTPNode vi child of u
nextX=x; nextPX=pxif (the tag of pv matches the tag of vi)
if (vi is a variable node)mark(x,vi,px,pv)upd(mpfpx,pv,Mpfpx,pv,mpu,pv,Mpu,pv)nextX= vi; nextPX=pv
foreach PSNode pw child of pvtraverse(vi,nextX,pv,nextPX,pw)
if (the edge u-vi is ancestor-descendant)foreach PSNode pw child of pv
traverse (u,x,pv,px,pw)
Ak hrana medzi u a vi je predok-potomok, tak
prechádzame deti pv s rovnakými parametrami
ako pre pv.
![Page 65: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/65.jpg)
65
Algoritmus
• výstupom je zoznam ciest pre každú premennú
for $i //asia//item, $d in $i/description where $i//keyword=“romantic”
return <gift> <name> {$i/name}</name>{$d//emph} </gift>
![Page 66: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/66.jpg)
66
Algoritmus$x in //regions, $y in $x/*, $z in $y//item, $t in $z//emph
![Page 67: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/67.jpg)
67
Druhý krok
• vytvorenie plánu pre viazanie premenných– využijeme množiny získané v predchádzajúcom kroku
for $i //asia//item, $d in $i/description where $i//keyword=“romantic”
return <gift> <name> {$i/name}</name>{$d//emph} </gift>
IDScan ( 17 ) pre $i
Join ( IDScan ( 28 ), Filter ( ContScan ( 28/#text ) ) pre $k
IDScan ( 19 ) pre $1
Merge ( IDScan ( 22 ), IDScan ( 26 ) ) pre $2
![Page 68: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/68.jpg)
68
Príklad
IDScan ( 17 ) pre $i
Join ( IDScan ( 28 ), Filter ( ContScan ( 28/#text ) ) pre $k
IDScan ( 18 ) pre $1
Merge ( IDScan ( 22 ), IDScan ( 26 ) ) pre $2
![Page 69: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/69.jpg)
69
Časť štvrtá
Kombinovanie plánov viazania premenných
![Page 70: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/70.jpg)
70
Kombinovanie plánov viazania premenných
• Plány viazania premenných sa kombinujú zdola hore cez spojenia a štruktúrne spojenia• Sústreďujeme sa na využitie sekvenčné modelu ciest pri optimalizáciu spojení• Je potrebné implementovať spojenia tak aby zachovávali poradie prvkom v dokumentoch – nie vždy je to možné, preto je potrebné kontrolovať niektoré podmienky
![Page 71: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/71.jpg)
71
Kombinovanie plánov viazania premenných
• Na implentovanie spojení sú použité algoritmy StackTreeDesc a StackTreeAnc popísané v Al-Khalifa S., Jagadish H., Patel J., Wu Y., Koudas N., Srivastava D.: “Structural Joins: A Primitive for Efficient XML Query Pattern Matching”, ICDE, 2002
• V prípade nesplnenia daných podmienok, je potrebné po spojení dokument zotriediť
![Page 72: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/72.jpg)
72
Časť piata
Experimentálne výsledky
![Page 73: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/73.jpg)
73
Prostredie
• použité bolo– DELL D800 laptop
• Pentium IV 1,4 GHz• 1Gb RAM• RedHat Linux 9.0
– dokumenty• XMark 118Mb• DBLP 133Mb• SwissProt 114Mb
![Page 74: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/74.jpg)
74
Experimentálne výsledky 1
![Page 75: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/75.jpg)
75
Experimentálne výsledky 2
![Page 76: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/76.jpg)
76
Experimentálne výsledky 3
![Page 77: Spracovanie XML dotazov založené na sekvenciách ciest](https://reader035.vdocuments.pub/reader035/viewer/2022062222/56814f82550346895dbd3699/html5/thumbnails/77.jpg)
77
Experimentálne výsledky 4