Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006 2008 Michal Krátký Tvorba informačních systémů 1/17
Úvod XML dokument/dokumenty tvoří databázi, schéma dokumentů 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ř. XPath, apod. Existují jazyky pro provádění změn v XML dokumentech, např. Update a XUpdate. Pro implementaci XML nativní databáze je nutné použít sofistikované metody. c 2006 2008 Michal Krátký Tvorba informačních systémů 2/17
Příklad - XML dokument <?xml version= " 1.0 "? > <books> <book i d = " 003 04312 " > < t i t l e > from the Experts< / t i t l e > <author>< f i r s t >Jonathan< / f i r s t >< l a s t >Robie< / l a s t >< / author> <author>< f i r s t >Michael< / f i r s t >< l a s t >Rys< / l a s t >< / author> < p r i c e >49.00< / p r i c e > < / book> <book i d = " 001 00863 " > < t i t l e >XML Data Management< / t i t l e > <author>< f i r s t >Akmal< / f i r s t >< l a s t >Chaudhri< / l a s t >< / author> < p r i c e >59.00< / p r i c e > < / book> <book i d = " 045 00012 " > < t i t l e >XML Indexing and Pattern Matching< / t i t l e > <author>< f i r s t >Bongki< / f i r s t >< l a s t >Moon< / l a s t >< / author> < p r i c e >79.99< / p r i c e > < / book>< / books> c 2006 2008 Michal Krátký Tvorba informačních systémů 3/17
Standard W3C pro dotazování XML dat. Složitý jazyk, komplikovaná efektivní implementace. Neobsahuje JDD, je nutný? Porovnejme s vytvořením relačního schématu. Obsahuje JMD, neobsahuje konstrukce pro aktualizaci, vložení a rušení uzlů v XML dokumentu. Existuje specifikace Update. c 2006 2008 Michal Krátký Tvorba informačních systémů 4/17
Pří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ří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] c 2006 2008 Michal Krátký Tvorba informačních systémů 5/17
Pří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 } < / t i t l e s > Výsledek: <?xml version= " 1.0 "? > < t i t l e s count= 3 > < t i t l e > from the Experts< / t i t l e > < t i t l e >XML Data Management< / t i t l e > < t i t l e >XML Indexing and Pattern Matching< / t i t l e > < / t i t l e s > c 2006 2008 Michal Krátký Tvorba informačních systémů 6/17
FLWOR výrazy Poznámka: Vyslovujeme jako flower. FLWOR výraz: F, for klauzule: asociace jedné nebo více proměnných k výrazu, L, let: přiřazení výsledku výrazu proměnné, W, where: omezující podmínka, O, order by: setřídění, R, return: výsledek. c 2006 2008 Michal Krátký Tvorba informačních systémů 7/17
Pří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 r e t u r n $ b / t i t l e Výsledek: < t i t l e > from the Experts< / t i t l e > c 2006 2008 Michal Krátký Tvorba informačních systémů 8/17
Příklad, FLWOR výrazy Vrat všechny názvy knih, které napsal autor s příjmením Moon setříděné dle názvu. Dotaz: f o r $b in doc ( books. xml ) / / book where $b / author / l a s t = Moon order by $b / t i t l e r e t u r n < r e s u l t > { $b / t i t l e } </ r e s u l t > Výsledek: < r e s u l t > < t i t l e >XML Indexing and Pattern Matching< / t i t l e > < / r e s u l t > c 2006 2008 Michal Krátký Tvorba informačních systémů 9/17
Příklad, FLWOR výrazy Vrat všechny názvy knih, které mají více než jednoho autora. Dotaz: f o r $b in doc ( books. xml ) / / book l e t $c : = $b / author where count ( $c ) > 1 r e t u r n < r e s u l t > { $b / t i t l e } </ r e s u l t > Výsledek: < r e s u l t > < t i t l e > from the Experts< / t i t l e > < / r e s u l t > c 2006 2008 Michal Krátký Tvorba informačních systémů 10/17
Příklad, Update 1 Vlož element year s obsahem 2005 za element price první knihy. Dotaz: i n s e r t node < year >2005</year> a f t e r fn : doc ( " books. xml " ) / books / book [ 1 ] 2 Zvyš cenu první knihy o 10%. Dotaz: replace value of node fn : doc ( " books. xml " ) / books / book [ 1 ] / p r i c e with fn : doc ( " bib. xml " ) / books / book [ 1 ] / p r i c e 1. 1 c 2006 2008 Michal Krátký Tvorba informačních systémů 11/17
: často prototypy: MonetDB/, Tamino, Timber. používají progresivní metody pro indexování XML. XML-enabled databáze: často rozšíření RDBMS: DB2, SQL Server, Oracle. definujeme atribut typu XML dokument. používají triviální přístupy pro indexování XML dat. c 2006 2008 Michal Krátký Tvorba informačních systémů 12/17
Triviální implementace Každý element je vložen do B-stromu (indexujeme dle id v uspořádání dokumentu), jinými slovy vytvoříme tabulku Element(tag, id, value) a pro každý element do ní vložíme záznam. n0 books n1 book n2 book n3 n4 n5 id title author n7 n6 n8 id title author 003-04312 The XML Book John Smyth 045-00012 The Frank Book Nash doc( books.xml )/books/book[author= John Smyth ]/title c 2006 2008 Michal Krátký Tvorba informačních systémů 13/17
Provádění dotazu 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 elementů, ale výsledkem bude pouze jeden element? c 2006 2008 Michal Krátký Tvorba informačních systémů 14/17
Aktuální stav 1 Takto triviální přístupy jsou velmi neefektivní. Např. 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řístupy jsou v současné době záležitostí výzkumu. Např. přístup MDX vyvíjený na katedře tento dotaz vykoná za 2s. c 2006 2008 Michal Krátký Tvorba informačních systémů 15/17
Sofistikované metody indexování 1 Holistické přístupy: garantují, že je každý element při vykonávání dotazu zpracován pouze jednou. 2 Optimalizace založená na ceně (cost-based): Odhad velikosti výsledku jednotlivých částí dotazu umožní vytvořit lepší plán vykonávání dotazu. V případě: doc( books.xml )/books/book[author= John Smyth ]/title je např. rozumné začít vykonávání získáním knih napsaných autorem John Smyth. Tato část dotazu generuje nejmenší mezivýsledek. 3 Další metody: např. indexování celých cest stromu. c 2006 2008 Michal Krátký Tvorba informačních systémů 16/17
Reference http://www.w3.org/tr/xquery/ Update http://www.w3.org/tr/xquery-update-10/ Howard Katz et al. 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 - články v časopisech a sbornících. c 2006 2008 Michal Krátký Tvorba informačních systémů 17/17