5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?



Hasonló dokumentumok
XML adatkezelés. 11. témakör. Az XQuery nyelv alapjai. XQuery. XQuery célja egy imperatív lekérdező nyelv biztosítása. XQuery.

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

SQLServer. DB Recovery modes

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

Adatkezelési mőveletek az XML nyelvben XQuery - XML dokumentumok lekérdezésére szolgáló lekérdezınyelv kifejezı ereje az OQL nyelvével egyenértékő.

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbázis-kezelés. Harmadik előadás

B I T M A N B I v: T M A N

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Adatbázisok* tulajdonságai

XML technikák II Kovács, László

BEVEZETÉS Az objektum fogalma

Adatbázis-kezelés, információs-rendszerek

XML adatkezelés. 13. témakör. XML szabványok. Az adatkezelés és XML kapcsolata XSLT. XQuery XPath. XML-DB XMLSchema. rugalmasság.

34. Elsődleges kulcs megadása XMLSchema-ban Idegen kulcs megadása XMLSchema-ban Típusok kategóriái és saját típus megadásának

Adatbázisok I. Az SQL nyelv

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

XML és XSLT (a színfalak mögül)

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Adatbázis Rendszerek II. 2. Gyakorló környezet

Általános lekérdezési feladatok

Adatbázis Rendszerek II. 8. Gyakorló környezet

A könyv tartalomjegyzéke

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázisok I A relációs algebra

Tranzakciókezelés PL/SQL-ben

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Programozás és adatbázis kezelés PHP ben

Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

Webes űrlapok és az XForms ajánlás

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázis rendszerek SQL nyomkövetés

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis használat I. 5. gyakorlat

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Java és web programozás

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

Készítette: Szabóné Nacsa Rozália

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Együttes hozzárendelés

SQL parancsok feldolgozása

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Java és web programozás

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.


SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázisban tárolt kollekciók

Adatbázisok biztonsága

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Adatbázis másolás Slony-I segítségével

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

B I T M A N B I v: T M A N

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

XML adatbázis kezelésének lehetőségei

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Bevezetés: az SQL-be

Haladó DBMS ismeretek 1

Elemi alkalmazások fejlesztése IV.

Adatbázis kezelés Delphiben. SQL lekérdezések

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

Adatbázis rendszerek. Gyakorlati jegyzet. Készítette: Selling István

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

ADATBÁZISKEZELÉS ADATBÁZIS

XPath 1.0. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar Utolsó módosítás: szeptember 5.

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

CAD-CAM

ADATBÁZIS RENDSZEREK I BEADANDÓ

II. év. Adatbázisok és számítógépek programozása

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Az Oracle dokumentumkezelési környezetei. Markovits Péter Oracle Hungary

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Indexek és SQL hangolás

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

GEIAL Kovács László. GEIAL Kovács László

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

B I T M A N B I v: T M A N

Adatbázis rendszerek tervezése

Az XQuery szabvány elemei rendszer

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

INDEXSTRUKTÚRÁK III.

Webfejlesztés 4. alkalom

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázisok elmélete 10. előadás

Adatbázis használata PHP-ből

Adatbázisok elmélete 9. előadás

Hozzunk ki többet abból amink van. Fehér Lajos

Vizuális programozás gyakorlat

Átírás:

Adatbázis modellek 5. téma XML DB Az adatkezelés és XML kapcsolata Miért fontos az XML használata az adatbázis kezelésben? Adattárolás alapformái: - strukturált - szabad-szöveges - szemi struktúrált - XML a web-es adatcsere szabványa - XML széles körben elterjedt - XML rugalmas szerkezetű - XML szemi-struktúrált - XML az adatok mellett a jelentést is hordozza - XML-hez széles szabvány feldolgozó felületek állnak rendelkezésre - XML egyszerűen feldolgozható 1

Az adatkezelés és XML kapcsolata XML XSLT XQuery SQL XPath XML-DB XMLSchema dokumentum orientáltság adat orientáltság rugalmasság hatékonyság integritás Az adatkezelés és XML kapcsolata 2

Az adatkezelés és XML kapcsolata Adatbázis kezelés és XML kapcsolata - XML is alkalmas hosszúidejű adattárolásra - adatdok egyik megjelenítési, közvetítő formátuma - új piaci szegmens - DBMS-ek tartalmaznak XML adattípust - DBMS-ek tartalmaznak XML kezelő függvényeket - DBMS-ek támogatják az xquery-t - DBMS-ek támogatják az XmlSchema-t - DBMS-ek tartalmaznak XML-t generáló,vagy beolvasó funkciókat XML tárolási formátumai Logikai alternatívák: - külső állomány (karakterlánc) : + : egész dokumentum egyben - : lekérdezés, módosítás - belső nem ellenőrzött XML típus táblamezőben +: lekérdezés, érték módosítás -: bővítés, törlés, teljes dokumentum átfésülés - belső sémával ellenőrzött XML típus táblamezőben +: lekérdezés, érték módosítás -: bővítés, törlés, teljes dokumentum átfésülés - objektumokban (objektum táblákban) - lokális változókban 3

XML tárolási formátumai Tárolási alternatívák: - CLOB (karakterlánc) : + : egész dokumentum egyben - : lekérdezés, módosítás - shredded (elemekre bontott, objektum-relációs táblákba átvitt): +: lekérdezés, érték módosítás -: bővítés, törlés, teljes dokumentum átfésülés - binary (az struktúra elemek tokenekkel kódoltak) +: tömörség -: teljes dokumentum átfésülés - hibrid (egyes részek más és más módon tárolódnak) XML tárolási formátumai XML dokumentumok tárolásának fő elemei: XMLType/XML XML DB Repository XML XMLSchema XML-DB XMLType mezők, táblák Táblák XML tárolási formátumok (CLOB, binary, OR) XML-DB Repository séma ellenőrzés XSLT indexelés adatkezelés ACL védelem verzió követés katalógusok 4

XML tárolási formátumai A XML adatkezelés fő problémája: - hatékony keresés, szelekció - tömörítés - védelem XML indexelési alternatívák tárolási típus shredded CLOB CLOB index típus B-fa, bitmap XMLIndex FreeText XMLIndex: (dokumentum ID, position of the node, xpath, value) XML tárolási formátumai XML-DB Repository Az XML-DB Repository célja, hogy egy virtuális file-rendszert tegyen az XMLType mezőkben tárolt XML dokumentumok fölé. XML-DB Repository ACL verziókezelés relációs struktúra FTP HTTP virtuális file-rendszer 5

XML kezelő felülete XML adatok kezelésének alternatívái: - hagyományos szövegkezelő funkciókkal (korlátozott funkciók) - XML szabványok (xquery,..) (általános) - SQL-beli XML szabványok (SQL/XML) (lekérdezésre korlátozott) - DBMS specifikus elemek (XMLDB) (kiterjedt) XML adatok letárolása XML mezőtípus használata Tábla létrehozása: CREATE TABLE XT (KOD INT PRIMARY KEY, SZOVEG XML); Index létrehozása, törlése: CREATE PRIMARY XML INDEX XTI ON XT(SZOVEG); DROP INDEX XTI ON XT; Konstans XML szöveg felvitele: INSERT INTO XT VALUES (1,'<A><B><C>1</C><D>A</D></B><B><C>2</C><D>A</D> </A>'); 6

XML adatok lekérdezése SELECT parancs használata Teljes tartalom lekérdezése: SELECT kod, szoveg FROM XT; Eredmény: 1 <A><B><C>1</C><D>uj</D></B><B><C>2</C> </A> 2 <A><B><C>4</C><D>UU</D></B></A> 3 <autok><auto><tipus> Fiat </tipus></auto><auto> </autok> Egy csomópont szövegtartalmának lekérdezése: SELECT szoveg.value('/b[1]/c[1]','char(2)') from xt; Nem érvényes, nem egyértelmű az alábbi alak: SELECT szoveg.value('/b[1]/c','char(2)') from xt; XML adatok lekérdezése xquery parancs használata Lekérdezés: SELECT szoveg.query('for $i in //B return $i/d ') FROM XT Eredmény: <D>uj</D><D>A</D> <D>UU</D> Létezés vizsgálat: SELECT KOD FROM XT WHERE SZOVEG.exist('//C')=1; 7

XML adatok módosítása xquery parancs használata Csomópont felvitele: UPDATE xt SET szoveg.modify(' insert <E/> into /A[1]/B[1] ') WHERE kod = 1; UPDATE xt SET szoveg.modify(' insert <E/> after /A[1]/B[1] ') WHERE kod = 1; Csomópont törlése: UPDATE xt SET szoveg.modify(' delete //B/E ') WHERE kod = 1 Csomópont módosítása: UPDATE xt SET szoveg.modify(' replace value of (//B[1]/D[1]/text())[1] with xs:string("uj") ') WHERE kod = 1 Relációs tábla XML adatokból Létező XML objektum használata OPENXML(doc_id, r_node, mode) WITH séma: egy létező XML dokumentumból rowset, rekordhalmaz előállítása; táblával egyenértékű halmazt ad doc_id: dokumentum azonosító, előállítása sp_xml_preparedocument-n keresztül r_node: gyökér csomópont mode: megjelenítési minta séma: mezők neve, típusa és képzési típusa az eredmény táblában név típus forrás 8

Relációs tábla XML adatokból Parancssor: declare @did int; exec sp_xml_preparedocument @did output, '<a><b>2</b><b>4</b><b>8</b></a>'; select * from openxml(@did,'/a/b/text()',1) ; exec sp_xml_removedocument @did; Eredmény: id parentid ntype lname text 5 2 3 #text NULL NULL NULL NULL 2 6 3 3 #text NULL NULL NULL NULL 4 7 4 3 #text NULL NULL NULL NULL 8 Relációs tábla XML adatokból Parancssor: declare @did int; exec sp_xml_preparedocument @did output, '<a><b>2</b><b>4</b><b>8</b></a>'; select * from openxml(@did,'/a/b',1) with (AA varchar(8) 'text()') ; exec sp_xml_removedocument @did; Eredmény: AA 2 4 8 9

Relációs tábla XML adatokból Parancssor: declare @did int; declare @stxt varchar(2000); set @stxt = (select convert(varchar(2000), szoveg) from xt where kod = 3); exec sp_xml_preparedocument @did output, @stxt; select * from openxml(@did,'//auto/tipus/text()',2) ; exec sp_xml_removedocument @did; Eredmény: id parentid ntype lname text 6 3 3 #text NULL NULL NULL NULL Fiat 7 5 3 #text NULL NULL NULL NULL Opel XML állomány relációs táblából SELECT FOR XML tipus tipus: RAW AUTO EXPLICIT Minden rekord egy elem, a mezők attributumok lesznek: SELECT * FROM AUTOK FOR XML AUTO; Eredmény: <row rsz="r1 " tipus="fiat " ar="233" /> <row rsz="r2 " tipus="fiat " ar="333" /> Explicit mezőnév kell: SELECT tipus, count(*) as db FROM AUTOK group by tipus for xml AUTO 10

XML állomány relációs táblából Minden rekord egy elem, a mezők gyerekelemek lesznek: SELECT * FROM AUTOK FOR XML AUTO, ELEMENTS; <AUTOK> <tipus>fiat <db>2</db> </AUTOK> <AUTOK> <tipus>opel <db>2</db> </AUTOK> </tipus> </tipus> XML adatok külső állományból OPENROWSET( forrásállomány, eredménytípus) Al-SELECT- ben használhatjuk insert into xt select 3, xx from (Select * FROM openrowset(bulk 'C:\users\kovacs_l\ab_msc\xmldb\X1.XML', SINGLE_BLOB) as xx) as R(xx); 11

XML adatok sémakezeléssel Séma létrehozása: CREATE XML SCHEMA COLLECTION mysc AS ' <schema xmlns="http://www.w3.org/2001/xmlschema"> <element name="a" > <complextype> <sequence> <element name="b" type="string"/> <element name="c" type="string"/> </sequence> </complextype> </element> </schema>' GO XML adatok sémakezeléssel Séma kötése mezőhöz CREATE TABLE T (Col1 xml (mysc)) GO Adatfelvitel: INSERT INTO T VALUES ('<G>3</G>'); Eredmény: XML Validation: Declaration not found for element 'G'. Location: /*:G[1] INSERT INTO T VALUES ('<A><B>aa</B><C>hh</C></A>'); Eredmény: OK 12

Oracle XML kezelő felülete XML adatok letárolása Tábla létrehozása: CREATE TABLE XT (KOD INT PRIMARY KEY, SZOVEG XMLType); Konstans XML szöveg felvitele: INSERT INTO XT VALUES (1, XMLType ('<A><B><C>1</C><D>A</D></B><B><C>2</C> </A> ) ); UDT típusként kezeli az XMLType típust XML kezelő felülete Oracle XML-DB tábla XML/SQL SQL PL/SQL Oracle XML/SQL XML SQL/XML elemei: - XMLElement() - XMLForest() - XMLAggreg() - XMLQuery() - XMLValidate() Oracle XML/DB elemei: - UpdateXML() - DeleteXML() - InsertXMLBefore() Az XML/DB csomag segítségével XML View definálható a relációs adattáblák fölé 13

XPath szabvány XPath : szabvány az XML dokumentumrészletek kijelölésére 1999-ben jött létre Követelmények: -tetszõleges elem vagy elemhalmaz kijelölhetõ legyen -rugalmas elemkijelölés biztosítása, melyben az elem kiválasztása történhet - név alapján - pozíció alapján - érték alapján - öszetett feltételek támogatása - származtatott kifejezések támogatása - tömör jelölési - adattípusok kezelése Add vissza azon áruk nevét, amiből legalább 7 darab van <nev>bab</nev> <nev>ásó</nev> XPath kifejezés Elemi XPath kifejezés általános alakja: tengely::csomópont-szûrés[szelekció] Összetett XPath kifejezés: elem_kif/elemi_kif/ XPath kifejezés értéke: - csomópont-halmaz - logikai értékû érték - numerikus érték - szöveges érték - (navigációs) tengely: megadja a keresés fõ irányát (lehet például a gyererek felé vagy a szülõ felé mozogni) - csomópont-szûrés: az érintett csomópontok halmazát szûkíteni lehet a csomópont neve vagy típusa alapján - szelekció : az elõzõ lépésekben kiválasztott csomópontoknál további, rendszerint a tartalmukra vonatkozó szûkítés 14

XPath kifejezés Tengelytípusok - self: maga a kontextus csomópont - child: gyerek csomópontok (nem elemjellemzõ nem névtér) - descendant: befoglalt csomópontok,tetszõleges mélységben - descendant-or-self: a befoglalt csomópontok + kontextus - parent: a szülőt tartalmazó csomópont - ancestor: befoglaló csomópontotok - ancestor-or-self: a befoglaló csomópontok és a kontextus - preceding: megelõző csomópontotok (nem elemjellemzõ nem névtér) - preceding-sibling: megelőző és testvér - following: követő csomópontotok (nem elemjellemzõ nem névtér) - following-sibling: követő és testvér - attribute: elemjellemzõ - namespace: névtér leíró csomópontok Child::* XPath kifejezés Csomópont szűrés A megadott tengely mentén elhelyezkedő csomópont halmazra történő elemi szűrés Név alapján név névtér:név * Tipus alapján névtér:* node() text() processing instruction() comment() 15

XPath kifejezés Fontosabb rövidítések child:: attribute:: descendant-or-self::node() self::node() parent::node() [position()=2] @ //... 2 child::/adatbazis/ descendant::jatekos[csapat[attribute::p=3]/tipus/text() = 3]/child::nev /adatbazis//jatekos[csapat[@p=3]/tipus/text() = 3]/nev XPath kifejezés Az XPath kifejezés nemcsak útvonal kifejezéseket tartalmazhat + : összeadás - : kivonás * : szorzás div : osztás mod : moduló : csomópont-halmaz egyesítés and : logikai és or : logikai vagy not() : logikai tagadás = : egyenlő!= : nem egyenlő < : kisebb > : nagyobb 16

XQuery minta for $x in doc('xx9.xml')/adatbazis/autok/auto where $x/ar < 222 order by $x/tipus descending return <car> {$x/@rsz} {$x/tipus/text()} {$x/ar} {ll:felez($x/ar)}</car> <adatbazis> <autok> <auto rsz= > <tipus> opel</tipus> <ar>214 </ar> </auto> </autok> <emberek> </emberek> </adatbazis> <car rsz=> opel 214 107 </car> XQuery lekérdezés struktúrája (FLOWER) FOR elem : ciklus LET elem : értékadás ORDER BY elem : rendezés WHERE elem : szelekció RETURN elem : projekció for $x in doc('xx9.xml')/adatbazis/autok/auto where $x/ar < 222 order by $x/tipus descending return <car> {$x/@rsz} {$x/tipus/text()} {$x/ar} {ll:felez($x/ar)}</car> 17

XQuery lekérdezés struktúrája XML dokumentum kijelölés Részfa kijelölés (XPath) fn:doc(file-specifikáció) fn:doc(file-specifikáció)/p1/p2/ for $x in fn:doc("xx9.xml")/adatbazis/autok/auto return <a> {$x} </a> for $x in doc('xx9.xml')/adatbazis/autok/auto for $y in doc('xx9.xml')/adatbazis/emberek/ember return <a> {$x} {$y} </a> XQuery lekérdezés struktúrája Szelekcio FOR $v IN lista LET $w := kifejezes WHERE feltetel RETURN kifejezes for $x in doc('xx9.xml')/adatbazis/autok/auto where $x/ar > 222 return <a> <car>{$x/@rsz}{$x/tipus/text()}</car> </a> 18

XQuery lekérdezés struktúrája a 200-nál drágább autok rendszáma for $v in fn:doc('xx9.xml')//auto where $v/ar>200 return element eredmeny {$v/@rsz} Auto rendszama es a tulaj neve for $a in fn:doc('xx9.xml')//auto for $e in fn:doc('xx9.xml')//ember where $a/@tulaj eq $e/@kod return element eredmeny { element auto {$a}, element tulaj {$e} } XQuery lekérdezés struktúrája Tipusok es darabszamuk <adatok> { for $t in fn:distinct-values( fn:doc('xx9.xml')//auto/tipus ) return element tipus {attribute tip {$t}, attribute db {count( for $a in fn:doc('xx9.xml')//auto where $a/tipus eq $t return element auto {$a/@rsz} ) } } } </adatok> 19