Využití XML v DB aplikacích



Podobné dokumenty
PRG036 Technologie XML

Distanční opora předmětu: Databázové systémy Tématický blok č. 5: Dotazovací jazyk XPath Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D.

Oracle XML DB. Tomáš Nykodým

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

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

Tvorba informačních systémů

Použití databází na Webu

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

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

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

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

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

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

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

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

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

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

Vkládání, aktualizace, mazání

Michal Krátký, Miroslav Beneš

SQL - trigger, Databázové modelování

MBI - technologická realizace modelu

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

Dotazování nad XML daty a jazyk XPath

XQuery. Jirka Kosek. Visual FoxPro DevCon června Praha. Copyright 2005 Jiří Kosek

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.

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.

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

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

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

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

Správnost XML dokumentu

Virtual Private Database (VPD) Jaroslav Kotrč

Databázové systémy a SQL

Operátory ROLLUP a CUBE

PRG036 Technologie XML

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

Fyzické uložení dat a indexy

Databázové systémy úvod

Sada 1 - PHP. 14. Úvod do jazyka 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ů

Tvorba informačních systémů

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

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

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

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

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

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace:

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

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

SQL tříhodnotová logika

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

Jazyk SQL databáze SQLite. připravil ing. petr polách

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

XML a ORACLE Petr Davídek

Integritní omezení (IO)

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Semestrální práce z DAS2 a WWW

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

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

Archivace relačních databází

Základy XML struktura dokumentu (včetně testových otázek)

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

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

Dotazování nad stromem abstraktní syntaxe

KIV/ZIS cvičení 6. Tomáš Potužák

6. SQL složitější dotazy, QBE

MySQL sežere vaše data

Z n a č k o v a c í j a z y k y. XPath, XLink, XQuery, XPointer, XLinkTime, XForms

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

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

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

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

Virtual private database. Antonín Steinhauser

Databáze SQL SELECT. David Hoksza

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

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

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

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

POKROČILÉ POUŽITÍ DATABÁZÍ

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

Zápisování dat do databáze

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

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

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Lekce 6 - Správa prostorových dat

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

Konceptuální modelování a SQL

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

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

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

Další XML technologie

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

Transkript:

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

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 2

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

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 4

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í) 5

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

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 7

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 8

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 9

Adresování dat v XML - XPath preceding:: following:: 10

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 11

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] <kniha><nazev> </nazev><autor> </autor></kniha> 12

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

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ží 14

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ží 15

Ukládání XML do relačních databází <!ELEMENT kniha (titul, autor)> <!ATTLIST kniha isbn CDATA)> <!ELEMENT titul (#PCDATA)> <!ELEMENT autor (#PCDATA)> Kniha(DocID,ElemID,ParID,PathID,ISBN) Titul(DocID,ElemID,ParID,PathID,PCDataId) Autor(DocID,ElemID,ParID,PathID,PCDataId) PCData(DocID,ElemID,Data) 16

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 17

Ukládání XML do relačních databází <!ELEMENT kniha (titul, autor)> <!ATTLIST kniha isbn CDATA)> <!ELEMENT titul (#PCDATA)> <!ELEMENT autor (#PCDATA)> Kniha( DocID,ElemID, ISBN, TitulPCDataId, AutorPCDataId, ParID,PathID) PCData(DocID,ElemID,Data) 18

Ukládání XML do relačních databází <!ELEMENT kniha (titul, autor*)> <!ATTLIST kniha isbn CDATA)> <!ELEMENT titul (#PCDATA)> <!ELEMENT autor (#PCDATA)> 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) 19

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 20

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 21

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

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 23

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, <a><b>b1</b></a> ); 24

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 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] 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 <row empno= 1230 ename= King deptno= 10 /> <row empno= 4560 ename= Scott deptno= 10 /> <row empno= 7800 ename= King deptno= 20 /> 26

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 <dept deptno= 10 > <emp empno= 1230 ename= King /> <emp empno= 4560 ename= Scott /> </dept> <dept deptno= 20 > <emp empno= 7800 ename= King deptno= 20 /> </dept> 27

Export tabulky do XML MS SQL Modifikátor ELEMENTS zajistí, že hodnoty atributů jsou uloženy jako podelementy, nikoli jako atributy <dept> <deptno>10</deptno> <emp> <empno>1230</empno><ename>king</ename> <empno>4560</empno><ename>scott</ename> </emp> </dept> <dept deptno= 20 >... </dept> 28

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

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 30

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 31

Získání dat z XML MS SQL SELECT dok.query( /kniha/autor ) FROM knihy; <autor>pokorný J.</autor> <autor>král J.</autor> SELECT dok.value( /kniha/autor, varchar(30) ) FROM knihy; Pokorný J. Král J. 32

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 <kniha><autor> </autor> </kniha> into /knihy ) WHERE... 33

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 34