Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
XML data na disku jako databáze Kamil Toman ktoman@ksi.mff.cuni.cz
2
Cíl ● Návrh systému pro práci s perzistentními XML daty, zpracování možných přístupů při implementaci databázových operací. ● Vytvoření experimentální databázové aplikace.
3
XML data ● Existující rozsáhlé soubory XML dat – Z různých zdrojů – Kolekce dokumentů – dokumenty odpovídající stejnému DTD ● Model dat – ohodnocený, orientovaný strom – Uzly – elementy, atributy, textové uzly – Hrany – modelují vztah otec-syn jednotlivých uzlů ● Potřeba XML dotazovacího jazyka
4
XML dotazovací jazyky ● XPath – navigace ve struktuře dokumentu – Obecná konstrukce: osa::test [ predikát [... ] ]... – Zobecněné cesty jmen ● /hra//název – Korelované cesty jmen ● /hra[.//název/text()=„Hamlet“]/obsazení – Složitější dotazy využívající metadata ● //replika[contains(name(@*), „or“) ]/řádek
5
XML dotazovací jazyky ● XQuery – komplexní XML DJ, podobnost s SQL – Funkcionální návrh, pro adresaci využívá jazyk XPath – Pracuje s n-ticemi, používá konstruktory, iterátory, proměnné, uživatelské funkce včetně rekurzivních – { for $a in document( zdroj/bib.xml )//kniha, $b in document( půjčovna.xml )//kniha where $a/název = $b/název return {$a/název} {$b/cena} }
6
Vyhodnocení XML dotazů ● Obecné „navigační metody“: – Shora-dolů, zdola-nahoru, hybridní – Využití hodnotových nebo strukturálních indexů – Využití DTD
7
Vyhodnocení shora dolů ● /play//speech[speaker=“Hamlet“]/line ● Nalezení všech elementů play hnízděných v kořenovém elementu, ● v podstromu play nalezení elementů speech ● Vybrání jen těch, které obsahují potomka speaker, jehož obsahem je text „Hamlet“ ● Přechodem z vybraných elementů speech nalezneme hnízděné elementy line
8
Vyhodnocení zdola nahoru ● Nalezení všech elementů s textem „Hamlet“ ● Ověření názvu speaker ● Průchodem ke koření ověření příslušnosti k cestě /play//speech ● Nalezení elementu line průchodem shora dolů
9
Hybridní vyhodnocení ● Vyhodnocení levé části dotazu shora dolů /play//speech/speaker ● Vyhodnocení pravé části zdola nahoru line/parent::speaker ● Vyhodnocení průniku obou množin a dopočítání restrikce na textovou hodnotu „Hamlet“ ● Dohledání příslušných elementů line
10
Vyhodnocení XML dotazů ● Strukturální spojení – Nový typ operace využívající strukturálního očíslování k zjištění vztahu předek-potomek – Lze jej používat jen omezeně, např. pro vyhodnocení zobecněných cest jmen: ● Nalezení počátečních množin v některém z indexů ● Postupné slučování nalezených uzlů podle vztahu odvozeného z identifikátorů jednotlivých uzlů
11
Strukturální vyhodnocení ● /play//speech[@diction=“poetic“]/line
12
Strukturální očíslování uzlů ● Efektivnější konstrukce jsou často založeny na speciálním kódování vztahů uzlů XML dokumentu – Prefixové očíslování Nevýhoda: dlouhé identifikátory – Intervalové očíslování Nevýhoda: obtížnost aktualizace
13
Příklad ● Jan Novák 609123456 66554433
14
Dietzovo očíslování
15
Intervalové očíslování
16
k-ární úplný strom
17
k-ární strom - alternativa
18
Strukturální prefixové schéma
19
Uložení XML dat ● Potřeba se přizpůsobit tomu, jak budeme k datům přistupovat – Uložení v relačním nebo objektově-relačních systému ● Výhody – využití současných technologií ● Nevýhody – absence XML dotazovacího jazyka, obtížnost a nízká efektivita vyhodnocení složitějších strukturálních dotazů – Přímé uložení ● Výhody – lepší zachycení struktury dat, vyšší efektivita při použití XML dotazovacího jazyka ● Nevýhody – potřeba vývoje nového typu datového úložiště
20
Způsoby indexování ● DataGuide XML stromu T je takový strom D, že každá cesta jmen ve zdrojovém stromu T má právě jednu instanci v D a každá cesta jmen v D je také cestou jmen v T.
21
Příklad - DataGuide
22
Index SphinX
23
Adaptivní index - APEX
24
Implementované řešení - SXQDB ● Nativní XML úložiště – Perzistentní DOM ● Dovoluje přístup k libovolným uzlům ● Poskytuje strukturální informaci z DTD ● K přístupu k uzlům využívá B-stromy ● Aktualizace – předpokládá se duální očíslování uzlů ● Modul pro zpracování dotazů ● Podporuje základní konstrukce XQuery ● Zjednodušené vyhodnocování s důrazem na zpracování výrazů XPath
25
Závěr – Zvolené řešení umožňuje vyhodnocení všech základních konstrukcí XQuery – Přístup k jednotlivým uzlům XML stromu je efektivní – Úložiště lze doplnit indexy pro urychlení zpracování dotazů – Možnosti rozšíření: komplexnější modul pro vyhodnocování dotazů, logický optimalizátor
26
Srovnání s dalšími XML DB ● Srovnávací DB - kolekce XML dokumentů představující souborné dílo Shakespeara – Velikost: 7,9MB – Počet elementů: ~200 000 – Počet hodnot elementů: ~ 150 000
27
Srovnání s dalšími XML DB ● Serializace celé kolekce: Q1: { / } ● Výsledky: – XMLCollection >30min(* 502,042s) – SXQ-DB11,924s – eXists 0.9.222,050s
28
Srovnání s dalšími XML DB ● Serializace jednotlivého dokumentu: Q2: { document('src/hamlet.xml') } ● Výsledky: – XMLCollection502,099s – SXQ-DB0,435s – eXists 0.9.22,105s
29
Srovnání s dalšími XML DB ● Nalezení elementu SPEECH, který nemá potomka STAGEDIR a zároveň obsahuje podelement SPEAKER s textem „Hamlet“ v dokumentu Hamlet: Q3: { document('src/hamlet.xml') }//SPEECH[ not(exists(.//STAGEDIR)) and SPEAKER/text() = „Hamlet“] } Výsledky: – XMLCollection380,099s – SXQ-DB0,166s – eXists 0.9.21,643s
30
Srovnání s dalšími XML DB ● Nalezení elementu PERSONA, který je v podstromu elementu PERSONAE, který má otcovský element PLAY v dokumentu HAMLET Q4: { document('src/hamlet.xml') /PLAY/PERSONAE//PERSONA } ● Výsledky: – XMLCollection2,356s – SXQ-DB0,011s – eXists 0.9.20,073s
31
Srovnání s dalšími XML DB ● Nalezení elementu SPEECH, který obsahuje podelement LINE s textem obsahujícím řetězec „Quarrelsome“ v dokumentu „As You Like It“: Q5: { document('src/as_you.xml')//SPEECH[ contains(LINE/text(), „Quarrelsome“)] } ● Výsledky: – XMLCollection-- – SXQ-DB0,063s – eXists 0.9.20,214s (* 0,040s)
32
Srovnání s dalšími XML DB ● Nalezení elementu SPEECH, který obsahuje podelement LINE s textem obsahujícím řetězec „Quarrelsome“ v celé kolekci: Q6: { //SPEECH[contains( LINE/text(),„Quarrelsome“)] } ● Výsledky: – XMLCollection-- – SXQ-DB3,847s – eXists 0.9.25,809s (* 0,107s)
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.