1 / 32

XML data na disku jako databáze

XML data na disku jako databáze. Kamil Toman ktoman@ksi.mff.cuni.cz. 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

glyn
Download Presentation

XML data na disku jako databáze

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. XML data na disku jako databáze Kamil Tomanktoman@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 • <výsledek> { for $a in document( zdroj/bib.xml )//kniha, $b in document( půjčovna.xml )//kniha where $a/název = $b/název return <karta><titul>{$a/název}</titul> <cena>{$b/cena}</cena> </karta>} </výsledek>

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

  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 • <?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>

  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-DB 11,924s • eXists 0.9.2 22,050s

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

  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: • XMLCollection 380,099s • SXQ-DB 0,166s • eXists 0.9.2 1,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 HAMLETQ4: { document('src/hamlet.xml') /PLAY/PERSONAE//PERSONA } • Výsledky: • XMLCollection 2,356s • SXQ-DB 0,011s • eXists 0.9.2 0,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-DB 0,063s • eXists 0.9.2 0,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-DB 3,847s • eXists 0.9.2 5,809s (* 0,107s)

More Related