+ All Categories
Home > Documents > XML data na disku jako databáze

XML data na disku jako databáze

Date post: 09-Jan-2016
Category:
Upload: glyn
View: 59 times
Download: 5 times
Share this document with a friend
Description:
XML data na disku jako databáze. Kamil Toman [email protected]. 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. XML data. Existující rozsáhlé soubory XML dat - PowerPoint PPT Presentation
32
XML data na disku jako databáze Kamil Toman [email protected]ff.cuni.cz
Transcript
Page 1: XML data na disku jako databáze

XML data na disku jako databáze

Kamil [email protected]

Page 2: XML data na disku jako databáze

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.

Page 3: XML data na disku jako databáze

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

Page 4: XML data na disku jako databáze

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

Page 5: XML data na disku jako databáze

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

– <výsledek> { for $a in document( zdroj/bib.xml )//kniha,

$b in document( půjčovna.xml )//knihawhere $a/název = $b/název return <karta><titul>{$a/název}</titul>

<cena>{$b/cena}</cena> </karta>} </výsledek>

Page 6: XML data na disku jako databáze

Vyhodnocení XML dotazů

● Obecné „navigační metody“:– Shora-dolů, zdola-nahoru, hybridní– Využití hodnotových nebo strukturálních indexů– Využití DTD

Page 7: XML data na disku jako databáze

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

Page 8: XML data na disku jako databáze

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ů

Page 9: XML data na disku jako databáze

Hybridní vyhodnocení

● Vyhodnocení levé části dotazu shora dolů/play//speech/speaker

● Vyhodnocení pravé části zdola nahoruline/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

Page 10: XML data na disku jako databáze

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ů

Page 11: XML data na disku jako databáze

Strukturální vyhodnocení

● /play//speech[@diction=“poetic“]/line

Page 12: XML data na disku jako databáze

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

Page 13: XML data na disku jako databáze

Příklad

● <?xml version= 1.0 encoding= UTF-8 standalone= no ?> <!DOCTYPE kontakt SYSTEM kontakt.dtd ><kontakt> <jméno>Jan Novák</jméno> <tel> <mobil>609123456</mobil> <domů>66554433</domů> </tel></kontakt>

Page 14: XML data na disku jako databáze

Dietzovo očíslování

Page 15: XML data na disku jako databáze

Intervalové očíslování

Page 16: XML data na disku jako databáze

k-ární úplný strom

Page 17: XML data na disku jako databáze

k-ární strom - alternativa

Page 18: XML data na disku jako databáze

Strukturální prefixové schéma

Page 19: XML data na disku jako databáze

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ě

Page 20: XML data na disku jako databáze

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 .

Page 21: XML data na disku jako databáze

Příklad - DataGuide

Page 22: XML data na disku jako databáze

Index SphinX

Page 23: XML data na disku jako databáze

Adaptivní index - APEX

Page 24: XML data na disku jako databáze

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

Page 25: XML data na disku jako databáze

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

Page 26: XML data na disku jako databáze

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

Page 27: XML data na disku jako databáze

Srovnání s dalšími XML DB

● Serializace celé kolekce:Q1: { / }

● Výsledky:

– XMLCollection >30min (* 502,042s)– SXQ-DB 11,924s– eXists 0.9.2 22,050s

Page 28: XML data na disku jako databáze

Srovnání s dalšími XML DB

● Serializace jednotlivého dokumentu:Q2: { document('src/hamlet.xml') }

● Výsledky:

– XMLCollection 502,099s– SXQ-DB 0,435s– eXists 0.9.2 2,105s

Page 29: XML data na disku jako databáze

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:

– XMLCollection 380,099s– SXQ-DB 0,166s– eXists 0.9.2 1,643s

Page 30: XML data na disku jako databáze

Srovnání s dalšími XML DB

● Nalezení elementu PERSONA, který je v podstromu elementu PERSONAE, který má otcovský element PLAY v dokumentu HAMLETQ4: { document('src/hamlet.xml')

/PLAY/PERSONAE//PERSONA }

● Výsledky:

– XMLCollection 2,356s– SXQ-DB 0,011s– eXists 0.9.2 0,073s

Page 31: XML data na disku jako databáze

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-DB 0,063s– eXists 0.9.2 0,214s (* 0,040s)

Page 32: XML data na disku jako databáze

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-DB 3,847s– eXists 0.9.2 5,809s (* 0,107s)


Recommended