A Web és az adatbázisok

 

 

 

Papp Ágnes, agi@delfin.klte.hu

Debreceni Egyetem EFK

 

 

 

Internet böngészés közben szöveget, képet, mozgóképet láthatunk a képernyőn. Az interaktivitást kínáló illetve kívánó Web lapok valamilyen alkalmazás futtatását jelentik. Az alkalmazások hátterében pedig általában adatbázisok állnak. Adatok publikálására, Webes alkalmazások fejlesztésére ma már számtalan eszköz kínálkozik. Az XML megjelenése további távlatokat nyitott. Ezek közül az XML és az adatbázis-kezelők kapcsolatával szeretnék foglalkozni.

 

 

Kezdetben volt a HTML

 

A HTML (Hypertext Markup Language) jelölőnyelv alapvető Webes nyelvként szolgált és szolgál dokumentumok publikálására az Interneten. Azt írja le, miként jelenjenek meg a szöveges részek, a képek és a linkek a böngészőben. Számtalan eszközzel elő lehet HTML dokumentumokat állítani, amelyek használatával még a nyelv által használt kódokat sem kell ismerni.

 

Előnyeként fogalmazható meg a HTML-nek:

§         Tulajdonképpen szabvány

§         Könnyen olvasható

§         Platform független

 

A HTML korlátai abban jelentkeznek leginkább, hogy egy dokumentumnak csak a megjelenéséről rendelkezik, nem tudunk meg semmit a tartalmáról.

 

Hátrányaként fogalmazható meg a HTML-nek:

§         A tartalomról nem mond semmit

§         Előre meghatározott kódkészlet

§         Szintaxis nem szigorú

§         HTML verziók

§         Különböző nyelvek kezelése

 

A dokumentum tartalmára vonatkozó jelöléseket nem tudunk bevezetni, ez azzal jár, hogy a Webes keresések sokszor sikertelenek lesznek. Strukturálni sem lehet a dokumentumot, így az adattovábbítására korlátozottan alkalmas.

 

 

 

 

Az XML

 

Az XML (Extensible Markup Language) leíró nyelv, mely adatok strukturált leírására alkalmas.

 

Az XML jellemzői:

§         Nem a dokumentum megjelenítésének leírásával, hanem az adatok strukturált leírásával foglalkozik.

§         A tagok nem előre definiáltak, ezzel lehetőséget adva új nyelvek definiálására.

§         Szöveges adatreprezentáció, így szemmel is olvasható és számítógéppel is feldolgozható.

§         SGML kompatibilis.

§         Platform független.

§         Unicode-on alapul.

 

Az XML nyelv alapelemei a tagok (szöveg < és > jelek között). Az XML-ben a tagok betű érzékenyek. Az adatok egy nyitó és egy záró tag között helyezkednek el, így alkotnak egy XML elemet (element). A tagok között lévő adat az elem értéke. Az XML tagok rendelkezhetnek név="érték" formában használt attribútumokkal.

 

Az XML dokumentumban jellemzően egymásba ágyazott XML elemek szerepelnek. Egy dokumentum jól formázott, ha eleget tesz a szabvány szerinti formai követelményeknek. Érvényes pedig akkor lesz, ha egy előre meghatározott séma szerint van felépítve.

 

Névterek használatával lehet az elemeket minősíteni, egyértelművé téve az adatok értelmezését. A névtér megadásakor az egyediséget URI biztosítja. Az ugyanolyan nevű, de eltérő jelentésű elemek különböztethetők így meg.

 

A fejlesztők előre leírhatják XML dokumentumaik szerkezetét, az elemek sorrendjét. Ezt megtehetik egy DTD (Document Type Declaration) dokumentumban vagy egy XML nyelvű sémában. Ezek után egy dokumentum érvényességének ellenőrzése az általunk definiált szabályrendszerrel való összevetésével végezhető el.

 

A DOM (Document Object Model) lehetővé teszi, hogy programból lehessen XML fájlokat kezelni, például új tagokat beilleszteni. Ez úgy történik, hogy a teljes dokumentum beolvasásra kerül a memóriába és lehetővé teszi az XML fában való mozgást és módosítást. A másik mód XML dokumentum feldolgozására a Simple API for XML. Ekkor a sorok egyesével kerülnek beolvasásra és feldolgozásra, eseményvezérelt módon. Memóriatakarékos megoldás, főleg nagy méretű dokumentum esetén hasznosítható jól.

 

Publikálás, például az Interneten való megjelenés előtt a dokumentumokat át kell alakítani. Az XSL (Extensible Stylesheet Language) egy továbbfejlesztett nyelv stílusnyelvek leírására. Az XSLT (XSL Transformation) egy transzformációs nyelv, amely XML-ből XML-be alakít, tagok, attribútumok beszúrása, törlése által. Az XPath a dokumentumok hierarchikus tulajdonságait használja fel, hogy bizonyos elemeket meg lehessen jelölni.

 

Az XML-t dokumentumok leírása mellett használhatjuk kisebb méretű alkalmazás adatainak tárolására, adatbázisban tárolt adatok Interneten keresztül történő továbbítására és lehetőséget nyújt az elektronikus adatcsere megvalósítására is.

 

 

Az XML és az adatbázisok - Natív XML adatbázis

 

Az alkalmazások adatai jellemzően adatbázisokban kerülnek tárolásra. Az XML-t gyakorta az adatbázisból származó adatok Interneten történő továbbítására használják fel. Az XML generálás azonban költséges művelet, és a tranzakció feldolgozása XML-ben célravezetőbb is lehetne, mint a háttér adatbázisban. Az XML tartalom adatbázisban való tárolásának igényével együtt jelentkezik a DBMS-ek által nyújtott, megszokott szolgáltatások igénye is.

 

Ha tisztán relációs modellen alapuló adatbázis-kezelőt választanánk XML adatok tárolására, akkor normalizálás útján kellene az XML adatokat táblákba, sorokba és oszlopokba transzformálni. Ennek elvi akadálya nincsen, de relációs adatbázis-kezelőben megvalósítani bonyolult és időigényes munka lenne, a lekérdezések megfogalmazásáról nem is beszélve. A relációs adatbázis-kezelők objektum-orientált irányba történő kiterjesztése hozott olyan jellemzőket, melyek egyszerűsítik az XML kezelést. A Large Object adattípus lehetővé teszi tetszőleges típusú és méretű adat tábla oszlopban való tárolását és lekérdezhetőségét. További SQL kiterjesztések (full-text keresés) és W3C ajánlásokat (DOM, XPath) megvalósító eljárások támogathatják az XML kezelést.

 

Natív XML adatbázis

 

A megoldás ezek után egy olyan adatbázis-kezelő rendszer lehetne, mely XML adatok tárolására és lekérdezésére van specializálva. Egy ilyen rendszer alapja az XML szabványok által előírt adat és feldolgozási modell. Azonban egy natív XML adatbázis általában nem önálló adatbázis és az XML tartalmat sem biztos, hogy az eredtei, szöveges formában tárolja.

 

Mit értünk natív XML adatbázis alatt?

 

§         Logikai modellt definiál az adatokat tartalmazó XML dokumentum számára, és ennek a modellnek megfelelően tárolja és keresi vissza az adatokat. Amit a modellnek minimálisan tartalmaznia kell: elemek, attribútumok, PCDATA és azok sorrendje.

§         Az XML dokumentum a tárolás alapvető egysége.

§         Nem kíván speciális fizikai tárolási modellt. Épülhet relációs, hierarchikus vagy objektum-orientált adatbázisra.

 

Egy natív adatbázis XML adatok tárolására specializálódik és tartalmazza az XML modell minden elemét. Dokumentumokat tárol és dokumentumok nyerhetők ki belőle. Nem szükségszerűen önálló adatbázis.

 

A natív adatbázisokban az XML dokumentum a tárolás alapvető egysége egy olyan modell szerint, ami közel áll az XML dokumentum modellhez vagy más olyan technológiákhoz, mint az Infoset vagy a DOM. Ez a modell támogatja a tetszőleges mélységű beágyazást, csak úgy mint a vegyes adattartalmat és a szemi-strukturált adatokat. Az adatbázis biztosítja a modell és a háttérben álló tárolási mechanizmus közötti leképezést, hogy feldolgozás a modellnek megfelelően történhessen. A továbbiakban olyan eszközökre van szükség, melyekkel az elvárt reprezentációját kapjuk a tárolt adatoknak. Például relációs adatbázison alapuló megvalósítás esetén az SQL alkalmazása nem biztos, hogy a várt eredményre vezet. Mint XML tartalmat kell tudni feldolgozni a tárolt adatokat. A DOM, SAX, XPath és XSLT használatában járatos fejlesztők kényelmesen dolgozhatnak az adatbázissal, hiszen a tárolási mechanizmustól elvonatkoztatva, az ismert XML technológiák használatával fejleszthetik alkalmazásaikat.

 

Egy natív XML adatbázis kezeli dokumentumok egy gyűjteményét, lehetővé téve, hogy lekérdezhetők, manipulálhatók legyenek, mint egy dokumentumhalmaz. Hasonlóan ahhoz, mint relációs adatbázisban egy tábla sorai. Azonban a relációs táblától eltérően, nem minden natív XML adatbázis kívánja meg séma létét egy dokumentum gyűjteményhez. Ez azt jelenti, hogy tetszőleges dokumentumok gyűjteménye definiálható, sémára való tekintet nélkül, amelyen lekérdezések végezhetők. Az ilyen funkcionalitással rendelkező adatbázist séma-függetlennek nevezik. A séma-független dokumentum gyűjtemények léte rugalmassá teszi az adatbázis használatát, és könnyebbé teszi az alkalmazásfejlesztést, de alacsony adatbázis-integritást eredményez. Ha szigorú séma struktúrára van szükség, akkor azt támogató adatbázist kell keresni. A DTD, XML Data Schema vagy más szabványos séma leíró nyelv használatával definiálhatók a dokumentum gyűjtemények tulajdonságai és végezhető el a validálás. A DTD-vel szemben az XML Schema előnyei az XML szintaxis és az adattípusok támogatása.

 

Az XPath az aktuális lekérdező-nyelv a natív XML adatbázisokban. Hogy adatbázis lekérdező-nyelvként funkcionálhasson, kiegészült dokumentum gyűjtemények lekérdezésének lehetőségével. Mivel eredetileg nem ilyen céllal tervezték, néhány szempontból nem bizonyul elégségesnek. Hiányzik belőle a csoportosítás, rendezés, dokumentumok összekapcsolása és az adattípusok támogatása. Mivel az XPath az XSLT nyelv része, azon a szinten pótolhatók a hiányosságok. Egy másik lehetőség az XQuery, ami inkább adatbázis-orientált lekérdezőnyelv. Az XQuery funkcionális nyelv, amelyben minden lekérdezés egy kifejezés, amelyek 7 típusba sorolhatók. Dokumentumok halmazán működik. Számos adatbázisában kezd megjelenni az XQuery implementációja.

 

Az XML adatok módosítása még gyengesége a mai XML adatbázisoknak. A legtöbb esetben a fejlesztőre bízzák a dokumentumok lekérdezését és módosítását tetszőleges XML API használatával. Csak néhány adatbázis-kezelő rendelkezik szabványos manipulációs nyelvvel. Mindaddig számolni kell ezzel a problémával, míg az XQuery-t ki nem egészítik ezzel a rész-nyelvvel. Addig marad a DOM manipuláció, ami eddig a legelterjedtebbnek bizonyult.

 

XML adatokat tároló alkalmazásokat kell natív XML adatbázisokra építeni. Ezek ugyanis dokumentum-orientált, bonyolult szerkezetű több szint mélységű beágyazást tartalmazó, illetve szemi-strukturált adatok tárolásában emelkednek ki. Egy natív XML adatbázisban tetszőleges típusú XML adatot tárolhatunk, de semmiképpen nem érdemes a hagyományos adatfeldolgozó rendszerek jól strukturált adatait tárolni benne.

 

Lehetséges alkalmazási területek, ahol célszerű natív XML adatbázis használata:

 

§         Információs portálok

§         Katalógus adatok

§         Termék alkatrész adatbázisok

§         Egészségügyi információs adatbázisok

§         Dokumentum-kezelő rendszerek

§         B2B tranzakció log-ok

§         Perszonalizációs adatbázisok

 

A natív XML adatbázisok célja nem az, hogy helyettesítsék a meglévő adatbázis rendszereket. Egy újabb eszközt szolgáltatnak a fejlesztők számára, amelyet ha megfelelő körülmények között alkalmaznak, jelentős előnyt hozhatnak.

 

 

Adatbázis-kezelő rendszerek XML támogatása

 

Az adatbázis-kezelő rendszerek az XML tárolás és feldolgozás natív támogatására törekszenek.

 

 

Az Oracle XML DB

 

Az Oracle-ben az XMLType adattípus és a hozzá tartozó, az SQL-el együttműködő funkciók kerültek megvalósításra, valamint beépített eljárásokkal végezhető XML generálás és összegzés. A legújabb verzióban a W3C XML adatmodellje és az XML lekérdezésekhez szabványos elérési módok kerültek megvalósításra. Továbbá egy XML repository áll rendelkezésre az XML dokumentumokkal kapcsolatos adatok tárolására.

 

Az XMLType adattípussal definiált oszlop XML típusú adatot tárol. A tartalom kezelésének igénye szerint az XMLType adattípus tárolható nagyméretű objektumként (LOB) illetve objektum-relációs formában. Az előbbi az eredeti XML dokumentum tartalmát megőrizve kezeli azt, és rugalmas a séma változásaira. Az utóbbi objektum-relációs szerkezet szerint dekomponálva tárol, a DOM-nak (Document Object Model) való megfelelést azzal biztosítva, hogy rejtett oszlopokban olyan információkat tart nyilván, amelyeket az SQL objektumok nem tartalmaznak:

 

§         Alárendelt elemek és attribútumok sorrendje

§         Elemek és attribútumok megkülönböztetése

§         A sémában deklarált strukturálatlan tartalom

§         Deklarálatlan adatok példánydokumentumokban, mint feldolgozási utasítások, megjegyzések vagy névtér deklarációk

§         SQL-ben nem létező XML adattípusok, pl. Boolean

§         Az SQL által nem támogatott megszorítások

 

Az objektum-relációs tárolási formában korlátozottak a sémaváltozások, ellenben használhatók a DML műveletek és az SQL megszorítások. Az XMLType adattípus tárolása megváltoztatható objektum-relációsról LOB-ra és viszont, az alkalmazás programkódjának megváltoztatása nélkül.

 

Az XMLType adattípus előnyei:

 

§         XML Schema támogatás. Szabványos adatmodell áll rendelkezésre strukturált és nem strukturált adatok számára, amellyel az XML dokumentumok validálhatók. A sémák lehetnek globálisak vagy lokálisak.

§         XPath keresés: XMLType típusú adat vagy tartalom kérdezhető le XPath használatával az SQL utasításokban.

§         XPath index: Az XPath keresésekhez index hozható létre, szintén az XPath használatával megjelölt elemeken.

§         Elemenkéni update: Az XPath használatával megjelölhetők XMLType típusú adat módosítandó elemei, attribútumai, így nem kell a teljes dokumentumot újra tárolni.

§         XML operátorok. Új függvények (XMLTABLE, XMLELEMENT, stb.) jelentek meg az XML lekérdezések és XML generálás megkönnyítésére.

§         XSL transzformációk: XSLT használatával XML transzformáció végezhető XMLType előfordulásokon.

§         XML nézetek: Nézetek hozhatók létre különböző XML dokumentumok és táblák összegzésével.

§         Adatok integrációja: Átjárókon keresztül külső adatforrások és heterogén adatok is egységes modellben szemlélhetők az XML nézetekkel.

 

Az XML DB előnyös tulajdonsága, hogy ugyanazon szabványos XML adatmodell szerint teszi lehetővé a strukturált és strukturálatlan adatok tárolását és kezelését. Felcserélhetőséget biztosít az XML és SQL között. A táblák adatain XML műveleteket, XML adatokon SQL utasításokat lehet végrehajtani. Ez részben SQL függvényekkel tehető meg, a kialakulóban lévő SQL/XML szabvány szerint.

 

Az XML repository révén Internetes adatraktár áll rendelkezésre az XML adatok és XML dokumentumok nyilvántartásához.

 

Az XML repository által nyújtott előnyök:

 

§         Mappák: Az adatbázisban tárolt dokumentumok hierarchikus mappákba rendezetők. Így egy XML dokumentum tekinthető úgy is, mint egy XMLType típusú sor az adatbázisban és úgy is, mint egy mappaelem a hierarchiában, egységesítve az adat és tartalom-orientált szemléletet. A repository verziókezelést és más meta adat kezelési funkciót is biztosít.

§         Hozzáférés szabályozási listák (ACL: Access Control List). Az XMLType objektumokhoz hozzáférés szabályozási listák készíthetők, a rendszerben meglévő jogosultságokat kiegészítve.

§         Elérés WebDAV és FTP segítségével. A mappákba rendezett XMLType sorok WebDAV (Distributed Authoring and Versioning) és FTP protokollal is elérhetők

§         Keresés az adatraktárban SQL-lel. A repository-ban az új operátorokkal SQL-lel is végezhető keresés.

§         Hierarchikus index. Speciális hierarchikus index segítségével gyorsítható a keresés a mappákban.

 

Az XML DB adatraktár funkciót biztosít: mappákat, hozzáférés-szabályozást, illetve az FTP és WebDAV protokoll támogatását.

 

 

Microsoft SQL Server 2000

 

Az SQL Server 2000 XML alapú adatbázis-kezelőként is használható, az XML támogatást a következőkkel biztosítva:

 

§         Adatok XML formátumban való lekérdezése

§         XML adatok feltöltése

§         XML séma támogatás

§         XPath lekérdezések használata

§         SQL Server elérése HTTP protokollon keresztül

 

Relációs táblákban tárolt adatokon végzett lekérdezés a SELECT utasítás FOR XML záradékával az eredményhalmazt XML formátumban adja vissza. Az utasítás három különböző (RAW, AUTO és EXPLICIT) használati módja a további opciókkal együtt azt határozza meg, hogy az eredményhalmazból milyen XML struktúra jön létre.

Egy XML dokumentum tartalmának adatbázisba írása az OPENXML függvény használatával lehetséges. A dokumentum tartalmát rowset-ekké konvertálva lehet beszúráshoz vagy módosításhoz felhasználni. Ehhez először a dokumentum szerkezetét kell értelmezni, majd azokat a csomópontokat kijelölni, amelyeket feldolgozunk. Ezt XPath kifejezésekkel lehet megadni. Végül a sémadeklarációs részben az szerepel, hogy az XML attribútumok milyen SQL oszlopneveknek és adattípusoknak feleljenek meg. Ahhoz, hogy közvetlenül lehessen egy XML dokumentum tartalmát adatbázisba juttatni, a szerver egy kiegészítését kell használni. A megoldás az ún. updategram, amely lehetővé teszi XML adatmódosító parancsok végrehajtását.

Létrehozhatók XML nézetek, amelyek egy vagy több táblán definiált lekérdezések eredményét adják vissza XML dokumentum formájában. Egy ilyen nézetet Annotált XDR (XML-Data Reduced) sémának neveznek. A séma a dokumentum attribútumai valamint a táblák és oszlopok közötti kapcsolatot írja le.

Az Internet Information Server-rel együttműködve a HTTP protokollon keresztül is el lehet érni a szerveren tárolt adatokat. Az URL Query-kkel közvetlenül SQL utasításokkal vagy azokat elrejtő template-ekkel lehet az XML eredményt a böngészőben megjelentetni. Az XPath Query pedig XML nézeteken szintén közvetlenül vagy template fájl használatával végez XPath utasításokkal megadott lekérdezést.

 

 

RDBMS vagy XML adatbázis?

 

Természetesen az XML adatbázisok sem nyújtanak univerzális megoldást az adatfeldolgozási igényekre. Mikor megfelelő választás egy RDBMS és mikor egy XML adatbázis? A relációs adatbázisok valószínűleg sokkal erősebbek az adatintegritás biztosításában, az XML adatbázisok pedig jobban megfelelnek XML dokumentumok kezeléséhez. Bár az adatok és dokumentumok közötti megkülönböztetés eddig is homályos volt, az XML megjelenése még jobban elmosta a határvonalat.

 

A relációs adatbázisok üzleti eseményekkel kapcsolatos adatokat tárolnak, jól alátámasztott módszertan szerint, redundancia-mentesen, biztosítva azok logikai konzisztenciáját. Az XML is lehetővé teszi a fejlesztő számára a közösen használt adatok redundáns tárolásának minimalizálását, és külső egyedekre való hivatkozással vagy XLink kifejezésekkel illeszti be azokat. Még ha egy tranzakció adatai XML-ben is kerülnek továbbításra, az alkalmazás szempontjából kritikus adatokat célszerű lehet relációs adatbázisban tárolni, hiszen ez biztosítja a szigorú konzisztenciát az üzleti események adatai között. Az elektronikus kereskedelem révén nagy mennyiségű XML dokumentum mozog vásárlók és szállítók között, amelyek a papíralapú üzleti dokumentumoknak felelnek meg. Még ha relációs adatbázisból is generálták azokat, más féle integritási koncepció szerint kell kezelni. A dokumentumok a valóság pillanatképeit tükrözik, még ha a valóság változik is, és a verziók követését a normalizálás eléggé megnehezítené. A dokumentumok, mint a strukturált adatok ellenpontjai, olyan XML szerkezeteket tartalmazhatnak, amelyeket bonyolult relációs sémákba normalizálni. Általában elkerülendőnek tartják a tervezők számára a vegyes adattartalmú vagy rekurzív szerkezettel rendelkező XML sémák relációssá transzformálását. Összegzésül elmondható, ha egy XML tartalmat bonyolult relációs formában tárolni, akkor sokkal könnyebben és hatékonyabban tárolható natív XML adatbázisban.

 

 

 

Irodalom

 

Neil Bradley: XML kézikönyv, Szak kiadó 2000

World Wide Web Consortium http://www.w3c.org

Kimbro Staken: Introduction to Native XML Databases, October 31, 2001

Michael Champion: Storing XML in Databases, eAI Journal, October 2001

Dare Obasanjo:An Exploration of XML in Database Management Systems, 2001

Oracle Technology Network http://otn.oracle.com

Microsoft Tech.net magazin http://technet.netacademia.net