1 / 77

Spracovanie XML dotazov založené na sekvenciách ciest

Spracovanie XML dotazov založené na sekvenciách ciest. Juraj Fečan i n Štefan Ignáth. Obsah. Úvod Uloženie na základe sekvencií ciest Pl ánovanie väzieb Experimentálne výsledky. Časť Prvá. Úvod. Autori. Iona Manolescu Andrei Arion Angela Bonifati Andrea Pugliese. O čo ide.

ricky
Download Presentation

Spracovanie XML dotazov založené na sekvenciách ciest

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spracovanie XML dotazov založené na sekvenciách ciest Juraj Fečanin Štefan Ignáth

  2. Obsah • Úvod • Uloženie na základe sekvencií ciest • Plánovanie väzieb • Experimentálne výsledky

  3. Časť Prvá Úvod

  4. Autori • Iona Manolescu • Andrei Arion • Angela Bonifati • Andrea Pugliese

  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)

  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ý

  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

  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

  9. Vyhodnocovanie dotazov XQuery for $i in //asia//item, $d in $i/description where $i//keyword=“romantic” return <gift> <name> {$i/name} </name> {$d//emph} </gift> 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

  10. Vyhodnocovanie dotazov XQuery Postup vyhodnocovania: • Viazanie všetkých premenných a poddotazov v return klauzule • Kombinácia viazaní pomocou spojení • 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

  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

  12. Vyhodnocovanie dotazov XQuery

  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

  14. Časť Druhá Uloženie na základe sekvencií ciest (Path sequence-based storage)

  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.

  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 e1je predchodcom elementu e2 iba ak e1.pre<e2.pre a e1.post>e2.post)

  17. Logický model uloženia

  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

  19. Logický model uloženia Niekoľko sekvencií ciest z predchádzajúceho príkladu, pre cesty: /site /site/people …

  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

  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

  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)

  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

  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 • @attrNamepre 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.

  25. Logický model uloženia – Súhrn ciest

  26. 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 Logický model uloženia – Súhrn ciest * viz: Goldman R., Widon J.,”Dataguides: Enabling Query Formulation and Optimization in Semistructured Databases”, VLDB, Athens, Greecem 1997

  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

  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á.

  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.

  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

  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

  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

  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.

  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.

  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é údaje Miesto potrebné pre súhrn ciest je lineárne s NPS.

  36. Fyzický model uloženia – Perzistentné sekvencie Príklad fyzického uloženia súhrnu ciest

  37. Časť Tretia Plánovanie väzieb

  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

  39. Viazanie jednej premennej for $x in /site/people/person/name • rozdeľovanie ciestumožň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

  40. Komplexnejšie cesty for $x in //parlist//text • 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

  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)

  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 )

  43. Hľadanie vyhovujúcich uzlov 2 //asia//item • 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

  44. Väzba s jednoduchými predikátmi for $x in //people//person[@id = “person0”] • 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]

  45. Obrázok

  46. Viazanie viacerých premenných 1 for $i //asia//item, $d in $i/description where$i//keyword=“romantic” return <gift> <name> {$i/name}</name>{$d//emph} </gift> • 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

  47. Viazanie viacerých premenných 2 • dva kroky: • 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 • Skonštruujeme plán pre viazanie premenných • využijeme znalosti z predchádzajúceho kroku

  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

  49. Príklad for $i //asia//item, $d in $i/description where $i//keyword=“romantic” return <gift> <name> {$i/name}</name>{$d//emph} </gift> si = {/site/regions/asia/item} si sd = {/site/regions/asia/item/description} si sk = {28} sd + si s1 = {18} a s2 = {22,26}

  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 xsu, ysv 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é)

More Related