ˇ Tvorba informacních systému˚
1/18
9a. Nativní XML Databáze
Tvorba informaˇcních systému˚ Michal Krátký Katedra informatiky VŠB–Technická univerzita Ostrava
Tvorba informaˇcních systému, ˚ 2008/2009
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze
Úvod XML dokument/dokumenty tvoˇrí databázi, schéma dokumentu˚ je schématem této databáze. Datový model XML - XML dokument je modelován jako strom (XML strom). Pro dotazování XML dat, používáme XML dotazovací jazyky, napˇr. XPath, XQuery apod. ˇ zmen ˇ v XML dokumentech, Existují jazyky pro provádení napˇr. XQuery Update Facility1 a XUpdate2 . Pro implementaci XML nativní databáze je nutné použít sofistikované metody. 1 2
http://www.w3.org/TR/xquery-update-10/ http://xmldb-org.sourceforge.net/xupdate/
2/18
ˇ Tvorba informacních systému˚
3/18
9a. Nativní XML Databáze XQuery
Pˇríklad - XML dokument
< t i t l e >XQuery from t h e E x p e r t s < / t i t l e > < a u t h o r >< f i r s t >Jonathan< / f i r s t >< l a s t >Robie< / l a s t >< / a u t h o r > < a u t h o r >< f i r s t > Michael < / f i r s t >< l a s t >Rys< / l a s t >< / a u t h o r > < p r i c e >49.00< / p r i c e > < / book> < t i t l e >XML Data Management< / t i t l e > < a u t h o r >< f i r s t >Akmal< / f i r s t >< l a s t >Chaudhri< / l a s t >< / a u t h o r > < p r i c e >59.00< / p r i c e > < / book> < t i t l e >XML I n d e x i n g and P a t t e r n Matching< / t i t l e > < a u t h o r >< f i r s t >Bongki< / f i r s t >< l a s t >Moon< / l a s t >< / a u t h o r > < p r i c e >79.99< / p r i c e > < / book>< / books>
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
XQuery
Standard W3C pro dotazování XML dat. Složitý jazyk, komplikovaná efektivní implementace. Neobsahuje JDD, je nutný? Porovnejme s vytvoˇrením relaˇcního schématu. Obsahuje JMD, neobsahuje konstrukce pro aktualizaci, vložení a rušení uzlu˚ v XML dokumentu. Existuje specifikace XQuery Update Facility.
4/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
Pˇríklady, výrazy cest 1
Vrat’ všechny knihy z databáze books.xml: doc(’books.xml’)//book
2
Vrat’ knihu napsanou autorem s pˇríjmením Fernadez: doc(’books.xml’)/books/book[author/last=’Fernadez’]
3
Vrat’ id (hodnota atributu) první knihy: doc(’books.xml’)/books/book[1]/@id
4
Vrat’ prvního autora každé knihy: doc(’books.xml’)/books/book/author[1]
5
Vrat’ prvního autora z celého dokumentu: (doc(’books.xml’)/books/book/author)[1]
5/18
ˇ Tvorba informacních systému˚
6/18
9a. Nativní XML Databáze XQuery
Pˇríklady Dotaz: < t i t l e s count = ’ { count ( doc ( ’ books . xml ’ ) / books / book / t i t l e ) } ’ > { doc ( ’ books . xml ’ ) / books / book / t i t l e }
Výsledek: < t i t l e s count = ’ 3 ’ > < t i t l e >XQuery from t h e E x p e r t s < / t i t l e > < t i t l e >XML Data Management< / t i t l e > < t i t l e >XML I n d e x i n g and P a t t e r n Matching< / t i t l e >
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
FLWOR výrazy Poznámka: Vyslovujeme jako flower. FLWOR výraz: ˇ F, for klauzule: asociace jedné nebo více promenných k výrazu, ˇ L, let: pˇriˇrazení výsledku výrazu promenné, W, where: omezující podmínka, ˇ O, order by: setˇrídení, R, return: výsledek.
7/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
Pˇríklad, FLWOR výrazy Vrat’ všechny názvy knih, které jsou dražší než 50$. Dotaz: f o r $ b i n doc ( ’ books . xml ’ ) / / book where $ b / p r i c e < 5 0 . 0 return $b/ t i t l e
Výsledek: < t i t l e >XQuery from t h e E x p e r t s < / t i t l e >
8/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
Pˇríklad, FLWOR výrazy Vrat’ všechny názvy knih, které napsal autor s pˇríjmením Moon ˇ setˇrídené dle názvu. Dotaz: f o r $b i n doc ( ’ books . xml ’ ) / / book where $b / a u t h o r / l a s t = ’ Moon ’ order by $b / t i t l e return { $b / t i t l e }
Výsledek: < t i t l e >XML I n d e x i n g and P a t t e r n Matching< / t i t l e >
9/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
Pˇríklad, FLWOR výrazy Vrat’ všechny názvy knih, které mají více než jednoho autora. Dotaz: f o r $b i n doc ( ’ books . xml ’ ) / / book l e t $c : = $b / a u t h o r where count ( $c ) > 1 return { $b / t i t l e }
Výsledek: < t i t l e >XQuery from t h e E x p e r t s < / t i t l e >
10/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze XQuery
Pˇríklad, XQuery Update Facility 1
Vlož element year s obsahem 2005 za element price první knihy. Pˇríkaz: i n s e r t node < year >2005 a f t e r f n : doc ( " books . xml " ) / books / book [ 1 ]
2
Zvyš cenu první knihy o 10%. Pˇríkaz: r e p l a c e value o f node f n : doc ( " books . xml " ) / books / book [ 1 ] / p r i c e w i t h f n : doc ( " b i b . xml " ) / books / book [ 1 ] / p r i c e ∗ 1 . 1
11/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze Nativní XML databáze
Nativní XML databáze
Nativní XML databáze: cˇ asto prototypy: MonetDB/XQuery, Tamino, Timber. používají progresivní metody pro indexování XML.
XML-enabled databáze: cˇ asto rozšíˇrení RDBMS: DB2, SQL Server, Oracle. definujeme atribut typu XML dokument. používají triviální pˇrístupy pro indexování XML dat.
12/18
ˇ Tvorba informacních systému˚
13/18
9a. Nativní XML Databáze Indexování XML dat
Triviální implementace Každý element je vložen do B-stromu (indexujeme dle id v uspoˇrádání dokumentu), jinými slovy vytvoˇríme tabulku Element(tag, id, value) a pro každý element do ní vložíme záznam. n0
n1
n3
books
n2
book
n4 id
title
003-04312
The XML Book
n5
author
John Smyth
n6
book
n7 id
title
045-00012
The XQuery Book
n8
author
Frank Nash
doc(’books.xml’)/books/book[author=’John Smyth’]/title
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze Indexování XML dat
ˇ dotazu Provádení 1
Najdi všechny elementy typu books.
2
Najdi všechny elementy typu book. Proved’ spojení obou množin.
3
Najdi všechny elementy typu author s hodnotou John Smyth. Proved’ spojení množin.
4
Najdi všechny elementy typu title. Proved’ spojení množin.
Úvaha: Co se stane pokud mezivýsledky budou obsahovat milióny elementu, ˚ ale výsledkem bude pouze jeden element?
14/18
ˇ Tvorba informacních systému˚
15/18
9a. Nativní XML Databáze Indexování XML dat
Aktuální stav
1
Takto triviální pˇrístupy jsou velmi neefektivní. Napˇr. dotaz site/closed_auctions/closed_auction/annotation/ description/parlist/listitem/parlist/listitem/ text/emph/keyword trvá na MS SQL 2005 83s (kolekce XMark 1GB).
2
Efektivní pˇrístupy jsou v souˇcasné dobeˇ záležitostí výzkumu. Napˇr. pˇrístup MDX vyvíjený na katedˇre tento dotaz vykoná za 2s.
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze Indexování XML dat
Sofistikované metody indexování 1
Holistické pˇrístupy: garantují, že je každý element pˇri vykonávání dotazu zpracován pouze jednou.
2
Optimalizace založená na ceneˇ (cost-based): Odhad velikosti výsledku jednotlivých cˇ ástí dotazu umožní vytvoˇrit lepší plán vykonávání dotazu. ˇ V pˇrípade: doc(’books.xml’)/books/book[author=’John Smyth’]/title je napˇr. rozumné zaˇcít vykonávání získáním knih napsaných autorem John Smyth. Tato cˇ ást dotazu generuje nejmenší mezivýsledek.
3
Další metody: napˇr. indexování celých cest stromu.
16/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze Indexování XML dat
Informaˇcní systémy založené na XQuery? 1
Programování informaˇcních systému˚ dnes: Nad samotnou relaˇcní databází se implementují tˇrídy, které provádí transformaci dat do XML dokumentu: pro zobrazení v prohlížeˇci, export dat apod. Tyto transformace jsou cˇ asto nároˇcné na výpoˇcetní výkon.
2
Pro urˇcitou tˇrídu informaˇcních systému˚ je ˇrešením implementace pomocí nativní XML databáze a XQuery: programátor získá z databáze data, která jsou pˇrímo pˇredána uživateli.
3
Tyto informaˇcní systémy, pˇredevším tedy nativní XML databáze jsou stále ve vývoji.
17/18
ˇ Tvorba informacních systému˚ 9a. Nativní XML Databáze Indexování XML dat
Reference XQuery – http://www.w3.org/TR/xquery/ XQuery Update – http://www.w3.org/TR/xquery-update-10/ Howard Katz et al. XQuery from the Experts. Addison-Wesley Professional, 2003. Akmal B. Chaudhri, Awais Rashid, Roberto Zicari: XML Data Management: Native XML and XML-Enabled Database Systems. Addison-Wesley Professional, 2003. Indexování XML - cˇ lánky v cˇ asopisech a sbornících.
18/18