13. blok Práce s XML dokumenty v databázi Oracle



Podobné dokumenty
Oracle XML DB. Tomáš Nykodým

6. blok část B Vnořené dotazy

Ukládání a vyhledávání XML dat

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

6. blok část C Množinové operátory

4. blok část A Logické operátory

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Využití XML v DB aplikacích

8.2 Používání a tvorba databází

Databázové systémy úvod

Databázové systémy Cvičení 5.2

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

12. blok Pokročilé konstrukce SQL dotazů - část II

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy. Cvičení 6: SQL

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Business Intelligence

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

O Apache Derby detailněji. Hynek Mlnařík

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Systém elektronického rádce v životních situacích portálu

Tvorba informačních systémů

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

MBI - technologická realizace modelu

Úvod do databázových systémů

5. POČÍTAČOVÉ CVIČENÍ

Úvod do databázových systémů

Ukázka knihy z internetového knihkupectví

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

8 Třídy, objekty, metody, předávání argumentů metod

4. lekce Přístup k databázi z vyššího programovacího jazyka

Databázové a informační systémy

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Databázové a informační systémy Jana Šarmanová

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

Tento blok je věnován vytváření uživatelských balíků funkcí v jazyce PL/SQL a použití systémových balíků. 2-3 hodiny

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

Programování a implementace Microsoft SQL Server 2014 databází

Sada 1 - PHP. 14. Úvod do jazyka SQL

1. Webový server, instalace PHP a MySQL 13

Archivace relačních databází

Operátory ROLLUP a CUBE

B Organizace databáze na fyzické úrovni u serveru Oracle

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Objektově relační databáze a ORACLE 8

Informační systémy 2006/2007

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Administrace Oracle. Práva a role, audit

Databáze I. Přednáška 4

2. blok část A Jazyk SQL, datové typy

Tvorba informačních systémů

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

TÉMATICKÝ OKRUH Softwarové inženýrství

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Michal Krátký, Miroslav Beneš

5. blok Souhrnné a skupinové dotazy

Použití databází na Webu

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Databáze v MS ACCESS

Michal Krátký, Miroslav Beneš

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Nerelační databázové modely. Helena Palovská

DUM 12 téma: Příkazy pro tvorbu databáze

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

1 Webový server, instalace PHP a MySQL 13

Úvod do databázových systémů. Ing. Jan Šudřich

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Elektronická podpora výuky předmětu Komprese dat

Roční periodická zpráva projektu

Střední odborná škola a Střední odborné učiliště, Hořovice

Úvod do aplikací internetu a přehled možností při tvorbě webu

Databáze I. Přednáška 7

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

10 Balíčky, grafické znázornění tříd, základy zapozdření

Úvod do databázových systémů

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

Databáze I. 5. přednáška. Helena Palovská

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Úvod do tvorby internetových aplikací

Informační systémy ve zdravotnictví. 6. cvičení

Transkript:

13. blok Práce s XML dokumenty v databázi Oracle Studijní cíl Tento blok je věnován práci s XML dokumenty, možnostmi jejich uložení a práce s nimi v databázi Oracle a datovému typu XMLType. Doba nutná k nastudování 2-3 hodiny Průvodce studiem Při studiu tohoto bloku se předpokládá, že čtenář je obeznámen se strukturou XML dokumentů a DDL a DML příkazy jazyka SQL. 1. XML v databázi Oracle a XMLType V dnešní informační době, ve které existují požadavky na kvalitní výměnu informací, značně vzrostl tlak na jednotný komunikační prostředek. Tento prostředek by měl umožňovat komunikaci nezávislou na platformě, databázovém prostředí či operačním systému. V dnešní době se za číslo jedna mezi těmito nástroji považuje XML, a proto se Oracle rozhodl pro jeho komplexní implementaci v rámci svého databázového systému. Databáze společnosti Oracle nejenom že umí zpracovávat databázové dotazy, jejichž výsledkem jsou XML dokumenty, ale rovněž umožňuje celé XML dokumenty do databáze ukládat a to dokonce i v rámci jednotlivých sloupců. V této kapitole bude popsáno velmi stručně, co to je XML a jaká je jeho základní syntaxe. Dále zde bude probrána podpora XML v databázi Oracle a na konec zde bude trochu podrobněji popsán datový typ XMLType. 2. XML XML (z anglického Extensible Markup Languge) je tzv. značkovací jazyk, který vznikl pod hlavičkou konsorcia W3C zjednodušením staršího jazyka SGML. Standard v podstatě definuje obecnou syntaxi, ve kterou jsou námi zasílaná data označovaná pomoci srozumitelných značek. Jazyk XML je neskutečně flexibilní a lze ho využít v nejrůznějších oblastech. Od webových stránek přes elektronické obchodování, vektorovou grafiku či serializaci objektů. 1

Podstatné na jazyku XML je to, že se jedná o meta-značkovací jazyk. To znamená, že není definována žádná pevně daná množina značek. XML dává vývojářům volnou ruku v definici elementů a atributů jazyka, takže si lze jazyk libovolně rozšiřovat, tak aby plně vyhovoval mnoha různým potřebám. Na druhou stranu je důležité zmínit, že jak je jazyk volný k definování vlastních elementů, tak je na druhou stranu velmi striktní v jejich zápisu. XML definuje tzv. gramatiku jazyka, jenž přesně definuje umístění, kde se dané elementy a jejich atributy mohou objevit. Gramatika je důležitá vzhledem k vývoji analyzátorů XML dokumentů. Bez této gramatiky by byl vývoj analyzátorů velmi složitý. Každý XML dokument, jenž vyhoví gramatice jazyka, se považuje za správně formulovaný. Pokud je dokument správně formulovaný, znamená to, že projde analyzátorem bez problému. Ovšem správně formulovaný dokument nezaručuje platnost dokumentu, čili zda má dokument vhodnou strukturu pro naši aplikaci. Proto jazyk XML umožňuje vytvořit definici typu dokumentu (DTD), jenž určuje, kde a jak mohou být jednotlivé značky v rámci dokumentu použity. Dokument, jenž vyhoví DTD, je označen za platný. Platnost či neplatnost dokumentu vždy závisí na definici DTD, se kterým ho porovnáváme. DTD je však nepovinné. Nyní malá ukázka XML dokumentu: <?xml version="1.0"?> <catalog> <book id="bk101"> <author>gambardella, Matthew</author> <title>xml Developer's Guide</title> <genre>computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>an in-depth look at creating applications with XML.</description> </book> <book id="bk102"> <author>ralls, Kim</author> <title>midnight Rain</title> <genre>fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>a former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> </catalog> 2

3. Oracle XML DB Oracle začal s podporou XML přímo v databázi již v roce 1998, a to konkrétně ve verzi 8i. Se zvyšujícím se číslem verze nejenom že rostly možnosti databáze pracovat s XML formátem, zároveň rostl i celkový výkon databáze při práci s XML formátem. Oracle souhrnně nazývá balík podpory pro práci s XML zjednodušeně XML DB [2]. Ve své podstatě se jedná o množinu technologií, zaměřených na vyhledávání a ukládání XML dokumentů v rámci databáze. Všechny tyto technologie jsou nativně implementovány přímo v databázi, proto můžeme využívat výhody provádění XML dotazů nad daty uloženými v rámci relační databáze, a zároveň můžeme provádět běžné SQL operace nad XML daty. Následující obrázek velmi stručně shrnuje výhody využití XML DB. Obr. 1 - Výhody využití Oracle XML DB. Zdroj: Oracle. 3

Základem architektury celé XML DB jsou: Tabulky a pohledy využívající XMLType o S XMLType získáváme možnost přirozeně uložit XML (například jako sloupec v tabulce) s možností nám běžně známého dotazování pomocí SQL. Oracle XML DB Repository o Repositář XML umožňuje jednotlivé XML dokumenty třídit do složek a řídit k nim přístup, využívat správu verzí, atd Následující obrázek obsahuje nákres architektury XML DB: Obr. 2 - Architektura XML DB. Zdroj: Oracle. 4

4. Oracle XML Repository Pokud to řekneme velmi jednoduše, XML je Repositář úložiště XML dokumentů, jejich sklad, který umožňuje přístup k těmto dokumentům. Pro přístup k dokumentům můžeme zvolit různé protokoly (HTTP, FTP, WebDAV). V tomto skladu můžeme spravovat různá přístupová práva, spravovat adresáře. XML Repositář se skládá z těchto základních komponent [4]: Seznam a správa přístupových oprávnění (ACL) Správa složek WebDAV a FTP protokol pro přístup ke složkám. SQL vyhledávání v XML Repositářích. API pro práci s XML Repositáři. Přístup pomocí Java servletu manipulace s objekty. Do Oracle XML repositáře v podstatě existují dvě přístupové cesty [3]: Přístup založený na cestě (navigační přístup). Při tomto přístupu se využívá hierarchického indexu ukazujícího na jednotlivé zdroje a objekty v repositáři. Každý zdroj v repositáři má jednu nebo více unikátních cest, jež odráží jeho umístění v hierarchii. Těmito přístupovými cestami můžeme referencovat libovolný XMLType objekt v databázi, bez ohledu na jeho umístění v tabulkových prostorách. Přístup do repositáře za využití SQL skrze speciální pohledy, které jsou schopné mapovat prostor repositáře do Oracle XML DB schématu. Pro přístup do repositáře slouží dva pohledy a to konkrétně PATH_VIEW a RESOURCE_VIEW. PATH_VIEW obsahuje jeden řádek pro každou unikátní cestu v repositáři. Naproti tomu RESOURCE_VIEW je vytvářen stylem co jeden zdroj, to jeden řádek. Řádky v těchto pohledech jsou datového typu XMLType. Nad těmito pohledy je možné provádět DML operace, které vkládají, přejmenovávají, mažou či aktualizují obsah zdroje. Pro ostatní operace (jako vytvoření zdroje) je nutné využít služeb API. 5

5. Datový typ XMLType V této podkapitole se dostaneme ke druhému způsobu ukládání XML dat do databáze. A to pomocí datového typu XMLType. Tento typ umožňuje uložit XML dokument do databázové tabulky. Pokud se podíváme trochu hlouběji do historie XML v databázi Oracle, zjistíme, že datový typ XMLType se poprvé objevil ve verzi 9 pro usnadnění práce s daty v XML uvnitř databáze. Abychom byli úplně přesní, tak XMLType je objektový datový typ, což znamená, že tento datový typ obsahuje i některé členské funkce. Příkladem takové členské funkce může být funkce, jež zkonvertuje textový řetězec obsahující XML dokument do datového typu XMLType. A co nám tedy použití XMLType umožňuje: XMLType může reprezentovat libovolný XML dokument uložený v databázi. Díky tomu, že je uložen v databázové tabulce, je přístupný přes SQL příkazy. Tím nám zůstávají zachovaný základní výhody relačního přístupu, a zároveň však zůstávají zachovány všechny výhody XML formátu. XMLType je využitelný v PL/SQL, a proto jej můžeme využít jako vstupní parametr, proměnnou či návratovou hodnotu uložené procedury. XMLType obsahuje členské funkce. Tyto funkce umožňují provádět různé operace nad dokumentem uloženým v databázi. Můžeme například z daného dokumentu extrahovat pouze některé části. (členská funkce extract()) Nyní když známe možnosti datového typu XMLType, můžeme se podívat na jednoduché ukázky toho, jak typem XMLType pracovat. Nejprve bude předvedeno založení tabulky obsahující XMLType a vkládání hodnot do této tabulky. Dále bude uveden příklad na využití některých členských funkcí typu XMLType v rámci SQL. V závěru bude uveden příklad na vytvoření typu XMLType nad obyčejnou relační tabulkou. Definovat tabulku, obsahující sloupec datového typu XMLType je velmi jednoduché. CREATE TABLE xml_tab ( id number(10), xml XMLType NOT NULL ); 6

Vložení nových řádků do tabulky obsahující XMLType je stejně jednoduché. INSERT INTO xml_tab(id,xml) VALUES ( 1, XMLType( '<zamestnanec id="1"> <jmeno>tomas</jmeno> <prijmeni>vana</prijmeni> <plat>100000</plat> </zamestnanec>' ) ); INSERT INTO xml_tab(id,xml) VALUES ( 2, XMLType( '<zamestnanec id="1"> <jmeno>petra</jmeno> <prijmeni>barakova</prijmeni> <plat>70000</plat> </zamestnanec>' ) ); Při dotazování nad sloupci s XMLType se nejčastěji využívá funkcí extract a existnode. Následující příklad demonstruje využití funkce existnode v klauzuli WHERE: SELECT x.xml.getclobval() AS poxml FROM xml_tab x WHERE x.xml.existsnode('/zamestnanec[plat > 80000 ]') = 1; Zápis '/zamestnanec[plat > 80000 ]' předávaný funkci existnode říká, že se hledají jen ty zaměstnanci, jejichž plat je vyšší než 80000. Funkce extract se využívá k extrakci určitých uzlů z XML Dokumentu. Viz následující příklad: SELECT EXTRACT(xml,'/zamestnanec/jmeno/text()').getStringVal() ' ' EXTRACT(xml,'/zamestnanec/prijmeni/text()').getStringVal () AS cele_jmeno, EXTRACT(xml,'/zamestnanec/plat/text()').getNumberVal() AS plat FROM xml_tab; 7

Dává následující výstup: Obr. 3 - Výstup funkce extract(). Jak je vidět, pomocí funkce extract() lze vytvořit z jednoho sloupce datového typu XMLType více sloupců odpovídajících jednotlivým uzlům XML dokumentu. Takto můžeme nad XMLType sloupci vytvářet pohledy, které budou vytvářet zdání klasické tabulky. Nyní bude představen opačný přístup, kdy z klasické tabulky čítající mnoho sloupců (bez XMLType) vytvoříme jeden XMLType sloupec, který bude mít v každém řádku XML dokument, jehož obsah bude korespondovat s odpovídajícím řádkem původní tabulky. Máme tedy tabulku: Obr. 4 - Zdrojová data pro XMLELEMNT. Nyní nad touto tabulkou spustíme následující dotaz: SELECT XMLELEMENT("KLIENT", XMLAttributes(cli_id AS id), XMLElement("JMENO",cli_name), XMLElement("PRIJMENI",cli_surname), XMLElement("DATUM_NAR",cli_birthday), XMLElement("NARODNOST",cli_nationality), XMLElement("MOBIL",cli_mobile), XMLElement("EMAIL",cli_email) )KLIENTI FROM clients; 8

Dotaz vygeneruje následující výstup: Obr. 1 - Výsledek volání funkce XMLELEMENT. Pojmy k zapamatování Příkazy a funkce: EXTRACT, XMLELEMENT, XMLType Problém: práce s XML dokumenty v prostředí databázového serveru, konverze dat mezi klasickými tabulky či výstupu běžných SQL dotazů a XML dokumenty Shrnutí Využití XML v rámci databáze Oracle je velice jednoduché a poskytuje velmi široké možnosti využití. Díky nativní podpoře XML přímo v databázi můžeme nad XML dokumenty provádět standardní XML dotazy a naopak můžeme nad běžnými tabulkami spouštět dotazy, jejichž výsledkem je XML dokument založený na datech obsažených v tabulce. Možnost vytvářet XML dokumenty přímo v databázi značně urychluje vývoj aplikací, neboť není nutné zavádět další vrstvu, která by obhospodařovala tvorbu XML dokumentů. Navíc je generování dokumentů v rámci databáze velmi rychlé a vytvoření samotného dokumentu je poměrně jednoduché. Otázky na procvičení 1. Popište architekturu XML DB. 2. Co je Oracle XML Repository? 3. Charakterizujte možnosti práce s datovým typem XMLType? 4. Jmenujte některé funkce pro práci s XML dokumenty? 5. Jakým způsobem lze vytvořit XML dokument z výstupu běžného SQL dotazu? 9

Odkazy a další studijní prameny [1] Wikipedia [online]. 2011-02-23 [cit. 2011-04-27]. XML. Dostupné z WWW: <http://cs.wikipedia.org/wiki/extensible_markup_language >. [2] DRAKE, Mark. Oracle [online]. 2008 [cit. 2011-04-20]. Oracle Database 11g XML DB. Dostupné z WWW: <http://www.oracle.com/technetwork/database/features/xmldb/11g.pdf> [3] Oracle [online]. 2005 [cit. 2011-04-15]. Introduction to Oracle XML DB. Dostupné z WWW: <http://download.oracle.com/docs/cd/b19306_01/appdev.102/b14259/xdb01int.htm> [4] KRYL, Milan. Milan Kryl web [online]. 2010 [cit. 2011-04-20]. XML a Oracle9i. Dostupné z WWW: <http://kryl.info/oracle/referat_xml.html>. [5] Oracle [online]. 2008 [cit. 2011-04-21]. XMLType Operations. Dostupné z WWW: <http://download.oracle.com/docs/cd/b28359_01/appdev.111/b28369/xdb04cre. htm>. Odkazy a další studijní prameny LACKO, L. Oracle, správa, programování a použití databázového systému. Praha: Computer Press, 2007. ISBN 80-251-1490-2. 10