Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK.

Podobné prezentace


Prezentace na téma: "Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK."— Transkript prezentace:

1 Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK

2 DBI026 -DB Aplikace - MFF UK 2 Komunikace aplikace s okolím Databázová aplikace potřebuje často komunikovat s dalšími informačními systémy –Export podkladů z IS pro externí účetnictví –B2G (business-to-government) Export výkazů pro státní správu –B2B (business-to-business) Import údajů z IS jiných firem Elektronické objednávky –SOA service-oriented architecture Komunikace mezi jednotlivými komponentami

3 DBI026 -DB Aplikace - MFF UK 3 Komunikace aplikace s okolím Pro komunikaci se ve stále větší míře používá XML formát dat  Čitelný i pro lidskou obsluhu aplikací  Strukturovaný  Snadno parsovatelný –Velký objem dat –Přímé dotazování nad XML daty vyžaduje zcela odlišné nástroje a datové struktury, než relační databází

4 DBI026 -DB Aplikace - MFF UK 4 XML a relační databáze Pro komunikaci databázové aplikace s okolím je proto často potřebné –Exportovat uložená relační data do XML –Získat informace uložené v uzlech XML stromu a uložit je do relačních tabulek –Ukládat původní XML dokumenty, získané od obchodních partnerů –Vyhledávat XML dokumenty obsahující dané informace

5 DBI026 -DB Aplikace - MFF UK 5 Adresování dat v XML - XPath XPath je jedním z často používaných dotazovacích jazyků nad XML Výsledkem dotazu je množina uzlů či atributů, které vyhovují zadané podmínce Dokument je chápán jako strom, obsahující –Kořenový uzel (není součástí dokumentu) –Elementy –Atributy –Textové uzly (listy, odpovídají volnému textu mezi uzly) –… (komentáře, jmenné prostory, instrukce pro zpracování)

6 DBI026 -DB Aplikace - MFF UK 6 Adresování dat v XML - XPath Cesta je základním prostředkem pro adresaci uzlu či uzlů ve stromě –Absolutní začínají znakem ’/’ –Relativní –Zapisuje se jako seznam kroků, oddělených lomítky.

7 DBI026 -DB Aplikace - MFF UK 7 Adresování dat v XML - XPath Příklady Xpath dotazů –/knihy/kniha/nazev seznam všech elementů nazev, které jsou přímým potomkem elementu kniha, který je přímým potomkem kořenového elementu knihy. –//nazev seznam všech elementů nazev v XML stromu, nacházejících se na libovolných cestách

8 DBI026 -DB Aplikace - MFF UK 8 Adresování dat v XML - XPath Příklady Xpath dotazů –/knihy/*/nazev na druhém kroku cesty může být libovolný element –/knihy/kniha[1]/autor[2] druhý autor první knihy v seznamu –/knihy/kniha[autor=’Pokorný J.’]/titul tituly všech knih od J. Pokorného

9 DBI026 -DB Aplikace - MFF UK 9 Adresování dat v XML - XPath Osy v XPath –self:: - aktuální uzel –parent::, child:: - přímý rodič/potomci aktuálního uzlu –ancestor::, descendand:: - všichni předci/potomci, včetně nepřímých –descendand-or-self::, ancestor -or-self:: –following::, preceding:: - uzly před/za aktuálním uzlem a všemi jeho předky –following-sibling::, preceding-sibling:: - sourozenci –attribute:: - atributy aktuálního uzlu child:: tvoří defaultní osu, nemusí se uvádět

10 DBI026 -DB Aplikace - MFF UK 10 Adresování dat v XML - XPath preceding::following::

11 DBI026 -DB Aplikace - MFF UK 11 Adresování dat v XML - XPath Obvykle se využívají zkrácené notace –jméno_uzlu místo child::jméno_uzlu –@jméno_atributu místo attribute:: jméno_atributu –’.’ pro aktuální uzel –’..’ pro rodičovský uzel

12 DBI026 -DB Aplikace - MFF UK 12 Adresování dat v XML - XPath Příklady dotazů –Názvy všech knih /knihy/kniha/nazev/text() –První kniha v seznamu /knihy/kniha[1] … …

13 DBI026 -DB Aplikace - MFF UK 13 Indexování dat v XML Problémem je efektivita vyhodnocování XPath dotazů, případně dotazů v jiných dotazovacích jazycích nad XML –Data mohou být v relační databázi uložena po částech, a využity standardní nástroje (spojení, indexy)  Použitelné v libovolné relační databázi  Nutná znalost struktury ukládaných dokumentů (DTD, XMLSchema) –Data mohou být uložena nativně v podobě textu  Nutná podpora speciálních typů indexů

14 DBI026 -DB Aplikace - MFF UK 14 Ukládání XML do relačních databází Pokud je potřeba ukládat XML dokumenty, platné vzhledem ke konkrétnímu DTD, je možné použít několik variant uložení Nástin jednoho z možných řešení: –Předpokládá dostatečně jednoduché DTD, nebo vytvoření jednoduššího DTD’, které je méně striktní, než DTD původní, tj.: platnost v DTD  platnost v DTD’ Elementy jmenují jiné elementy ve svém obsahu nejvýše jednou Obsažený element může být nepovinný (?) nebo opakující se (*) Obsažené elementy jsou oddělené pouze čárkou, ne ’|’ Na pořadí elementů nezáleží

15 DBI026 -DB Aplikace - MFF UK 15 Ukládání XML do relačních databází Pro takto zjednodušené DTD je možné vytvořit –Seznam možných cest v XML stromu –Pro každý element je E vytvořena tabulka, obsahující sloupce pro jednotlivé atributy E(DocID,ElemID,ParID,PathID,atributy) Id dokumentu, Id elementu,sloupce pro uchování atributů, Id rodičovského elementu, Id cesty na které element leží

16 DBI026 -DB Aplikace - MFF UK 16 Ukládání XML do relačních databází Kniha(DocID,ElemID,ParID,PathID,ISBN) Titul(DocID,ElemID,ParID,PathID,PCDataId) Autor(DocID,ElemID,ParID,PathID,PCDataId) PCData(DocID,ElemID,Data)

17 DBI026 -DB Aplikace - MFF UK 17 Ukládání XML do relačních databází Dotazy v XPath jsou přeformulovány na SQL Často je nutné spojovat velké množství tabulek. Jejich počet je možné snížit např. tím, že pro podstromy, ve kterých se nemůže vyskytovat opakující se element, se vytvoří jediná tabulka obsahující element a všechny podelementy

18 DBI026 -DB Aplikace - MFF UK 18 Ukládání XML do relačních databází Kniha( DocID,ElemID, ISBN, TitulPCDataId, AutorPCDataId, ParID,PathID) PCData(DocID,ElemID,Data)

19 DBI026 -DB Aplikace - MFF UK 19 Ukládání XML do relačních databází Pokud se autor může vícekrát opakovat, je nutné jej uložit do samostatné tabulky, titul ale může být sloučen Kniha( DocID,ElemID,ISBN,TitulPCDataId,ParID,PathID) Autor(DocID,ElemID,ParID,PathID,PCDataId) PCData(DocID,ElemID,Data)

20 DBI026 -DB Aplikace - MFF UK 20 Indexace XML dat DataGuide index –obsahuje strom cest, vyskytujících se v XML dokumentu –Každá cesta je vněm uložena právě jednou –Uzly obsahují metainformace o uzlech, které dané cestě odpovídají –Je možné jej uložit v XML formátu

21 DBI026 -DB Aplikace - MFF UK 21 Indexace XML dat Index cest v XML –Obdoba DataGuide indexu –V uzlech obsahuje přímo množiny odkazů na jednotlivé elementy, které cestě odpovídají –Výrazně urychluje odpovědi na dotazy ve formě cest bez použití // –Přispívá pro vyhodnocení dotazů, které alespoň začínají absolutní cestou, a // obsahují ve větší hloubce

22 DBI026 -DB Aplikace - MFF UK 22 Indexace XML dat Lore Index –VIndex (Value index) - indexuje textové hodnoty uzlů a atributů –TIndex (Term index) - indexuje slova v hodnotách elementů –LIndex - index pro nalezení otců pro jednotlivé uzly –PIndex (Path index) - indexuje cesty a udržuje pro ně množiny odpovídajících uzlů

23 DBI026 -DB Aplikace - MFF UK 23 Indexace XML dat Lore Index –/knihy//autor[@stat=”CZ”] pomocí VIndexu se naleznou atributy stat s hodnotou ”CZ”, pro ně se bottom-up postupem přes LIndex ověří cesta

24 DBI026 -DB Aplikace - MFF UK 24 Uložení XML dat – MS SQL Nativní datový typ XML –CREATE TABLE XmlTab( ID NUMERIC CONSTRAINT XmlTabPk PRIMARY KEY, Dok XML ); –INSERT INTO XmlTab VALUES( 1, ’ b1 ’ );

25 DBI026 -DB Aplikace - MFF UK 25 Export tabulky do XML – MS SQL MS SQL pro export dat z tabulek do XML podoby používá konstrukci SELECT … FOR XML {RAW|AUTO|EXPLICIT|PATH} [,XMLDATA][,ELEMENTS][BINARY BASE64] [ROOT(’korenovy_element’)] RAW generuje pro každou řádku jeden element row, hodnoty jsou obsažené v atributech elementu, názvy atributů odpovídají názvům sloupců (aliasů) v dotazu

26 DBI026 -DB Aplikace - MFF UK 26 Export tabulky do XML – MS SQL MS SQL pro export dat z tabulek do XML podoby používá konstrukci SELECT … FOR XML {RAW|AUTO|EXPLICIT|PATH} [,XMLDATA][,ELEMENTS][BINARY BASE64] RAW generuje pro každou řádku jeden element row, hodnoty jsou obsažené v atributech elementu, názvy atributů odpovídají názvům sloupců (aliasů) v dotaz

27 DBI026 -DB Aplikace - MFF UK 27 Export tabulky do XML – MS SQL AUTO generuje pro každou tabulku v použitém dotazu jeden element. Struktura odpovídá spojení. Názvy elementů odpovídají názvům tabulek

28 DBI026 -DB Aplikace - MFF UK 28 Export tabulky do XML – MS SQL Modifikátor ELEMENTS zajistí, že hodnoty atributů jsou uloženy jako podelementy, nikoli jako atributy 10 1230 King 4560 Scott...

29 DBI026 -DB Aplikace - MFF UK 29 Indexování XML dat – MS SQL MS SQL dovoluje nad sloupcem typu XML vytvořit tři typy indexů –Nejprve je nutné vytvořit primární XML index CREATE PRIMARY XML INDEX XmlIdx ON XmlTab(Dok) –Následně lze vytvořit hodnotový index, index cest a index vlastností CREATE XML INDEX jm ON XmlTab(Dok) USING XML INDEX XmlIdx FOR {VALUE|PATH|PROPERTY}

30 DBI026 -DB Aplikace - MFF UK 30 Získání dat z XML Pokud je k dispozici XML dokument s požadavkem na databázovou aplikaci, je potřebné získat z něj potřebné údaje a požadavek vyřídit, nebo data uložit do relační databáze

31 DBI026 -DB Aplikace - MFF UK 31 Získání dat z XML – MS SQL Využívá XPath pro adresaci jednotlivých elementů a jejich množin, případně Xquery pro konstrukci výsledného XML z XML zdrojového xml.Query(dotaz) –Vrací fragment, obsahující elementy, vyhovující dotazu –Dok.Query(’/kniha/autor’) xml.Exist(dotaz) –Vrací 1, pokud ex. alespoň jeden uzel, odpovídající dotazu. Jinak vrací 0 xml.Value(dotaz,typ) –Vrací hodnotu odpovídajícího uzlu

32 DBI026 -DB Aplikace - MFF UK 32 Získání dat z XML – MS SQL SELECT dok.Query(’/kniha/autor’) FROM knihy; – Pokorný J. – Král J. SELECT dok.Value(’/kniha/autor’,’varchar(30)’) FROM knihy; –Pokorný J. –Král J.

33 DBI026 -DB Aplikace - MFF UK 33 Aktualizace XML - MS SQL Metoda xml.Modify(’XQuery’) UPDATE Knihy SET seznam=seznam.Modify( ’delete /knihy/kniha[autor=”Kopecký M.”]’ ) WHERE … UPDATE Knihy SET seznam=seznam.Modify( ’insert … … into /knihy’) WHERE...

34 DBI026 -DB Aplikace - MFF UK 34 Zpřístupnění XML dat – MS SQL Pomocí nástroje „IIS Virtual Directory Management for SQL Server “ lze definovat v IIS 5 a vyšším adresář, pomocí kterého lze XML data publikovat na webu //http://localhost/xml?SELECT * FROM KNIHY FOR XML AUTO&root=knihy


Stáhnout ppt "Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK."

Podobné prezentace


Reklamy Google