EJB Komponenta Pro Efektivní Ukládání SVG Obrázků
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY EJB komponenta pro efektivní ukládání SVG obrázků DIPLOMOVÁ PRÁCE Petr Nehyba Brno, 2012 Prohlášení Prohlašuji, že tato diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Vedoucí práce: RNDr. Radek Ošlejšek, Ph.D. ii Poděkování Děkuji RNDr. Radkovi Ošlejškovi, Ph.D. za jeho čas a cenné rady, které mi věnoval. iii Shrnutí Cílem diplomové práce je popsat možnosti ukládání SVG obrázků. Dále je shrnuto jak vytvořit Enterprise Java Bean komponentu, která umožňuje ukládat a vyhledávat anotované SVG obrázky. V práci je popsán tento grafický formát včetně rozšíření o anotační část vytvořenou pro účely projektu GATE. Dále jsou popsány možnosti ukládání XML dat. Práce poskytuje přehled open source XML databází. Poslední část se věnuje výběru nejvhodnějšího řešení a jeho implementaci. iv Klíčová slova: SVG, ASVG, G.A.T.E., EJB 3.1, Java EE 6, Nativní XML Databáze (NXD), BaseX, MonetDB, BerkeleyDB, Qizx, Sedna v Obsah 1 Úvod .............................................................................................................1 2 SVG.................................................................................................................2 2.1 Struktura SVG formátu............................................................................2 2.2 Anotované SVG obrázky.........................................................................4 2.2.1Ukázka anotovaného SVG.................................................................4 2.2.2Rozbor ukázkového ASVG................................................................6 2.2.2.1 Metadata...................................................................................7 2.2.2.2 Polygony...................................................................................8 3 Ukládání XML do databáze.............................................................................9 3.1 Rozdělení XML dokumentů....................................................................9 3.1.1Datově orientované XML..................................................................9 3.1.2Dokumentově orientované XML.....................................................10 3.1.3Zařazení anotovaného SVG.............................................................10 3.2 Rozdělení XML databází.......................................................................11 3.2.1XML-enabled databáze....................................................................12 3.2.2XML nativní databáze......................................................................12 4 Nativní XML databáze..................................................................................13 4.1 Aplikační programové rozhraní.............................................................14 4.1.1JDBC................................................................................................14 4.1.2XML:DB API...................................................................................15 4.1.3XQJ..................................................................................................16 4.1.4Webová API.....................................................................................17 4.1.5Vlastní API.......................................................................................17 4.2 Dotazovací jazyky.................................................................................18 4.2.1XPath................................................................................................18 4.2.2XQuery.............................................................................................18 4.2.3XUpdate...........................................................................................19 4.2.4XQuery Update Facility...................................................................20 4.3 Seznam nekomerčních NXD.................................................................20 5 Projekt............................................................................................................21 5.1 Funkční požadavky................................................................................21 5.2 EJB komponenta....................................................................................22 5.2.1Druhy EJB........................................................................................23 5.2.2Implementace ..................................................................................24 5.3 Sestavení XQuery dotazů......................................................................26 5.3.1Hledání v anotacích..........................................................................27 5.3.2Hledání v polygonech......................................................................27 5.4 Klientská aplikace..................................................................................28 5.5 Vybrané nativní XML databáze.............................................................28 5.5.1BaseX ..............................................................................................29 5.5.1.1 Příklad použití vlastního API.................................................30 5.5.2Berkeley DB XML ..........................................................................30 vi 5.5.2.1 Příklad použití........................................................................31 5.5.3MonetDB/XQuery ...........................................................................31 5.5.3.1 Příklad použití JDBC.............................................................32 5.5.4Qizx .................................................................................................32 5.5.4.1 Příklad použití........................................................................32 5.5.5Sedna................................................................................................33 5.5.5.1 Příklad použití XQJ................................................................33 5.5.5.2 Příklad použití XML:DB API................................................34 5.5.6Hodnocení vybraných NXD.............................................................35 5.6 Test výsledné aplikace...........................................................................35 5.7 Nastavení a možná rozšíření aplikace....................................................37 6 Závěr..............................................................................................................38 vii 1 Úvod Informační technologie jsou jedním z nejrychleji se rozvíjejících odvětví techniky. Lidstvo generuje stále více a více dat, nejen proto je potřeba vytvářet nástroje na uchovávání těchto informací. Každé odvětví lidské činnosti má své specifické potřeby, proto jde dopředu i vývoj různých databázových řešení. Ty tam jsou doby, kdy veškerým potřebám organizace postačovala relační databáze s několika tabulkami. Kvůli transformacím a agregaci dat je často vhodnější použít buďto nástavby nad klasickými databázemi a nebo přístupy zcela odlišné. Tato práce má za cíl prostudovat a popsat efektivní ukládání XML dat do databáze. Jedná se zejména o strukturovaný způsob (po XML elementech). SVG je deskriptivní značkovací jazyk rozšiřující standart XML. Díky své flexibilitě je tento grafický formát v poslední době často používán k zpřístupnění objektově orientované vektorové grafiky. Flexibilita formátu umožňuje použít SVG i pro rastrovou grafiku, zejména fotografie. Pro účely projektu GATE (Graphics Accessible to Everyone) [1] vytvořím serverovou komponentu, která umožní ukládat a vyhledávat obrázky podle jejich anotace. Úvodní část práce je stručným popisem formátu SVG. Navazuje popis rozšíření o anotaci v rámci projektu GATE, což umožňuje informovat uživatele o grafickém obsahu nevizuální formou. Pro názornost uvádím rozbor vzorového ASVG obrázku, který později poslouží ke stanovení požadavků na databázové řešení. Třetí kapitola popisuje možnosti ukládání XML dat do databáze a jednotlivé varianty těchto řešení. Další kapitola se zabývá nativními XML databázemi, jejich hlavní charakteristikou, podporovanými jazyky pro práci s XML a standardním aplikačním rozhraním. Důraz je kladen na open source technologie. Následuje projektová část, kde jsou nejprve popsány možnosti EJB technologií a vytvoření serverové EJB komponenty, dále navazuje návrh řešení pro ukládání anotovaných SVG obrázků. Popsáno je několik XML nativních databází a jejich nasazení. Poslední část kapitoly demonstruje vytvořenou testovací aplikaci, která zpřístupňuje funkcionalitu serverové komponenty. Závěr se věnuje hodnocení dosažených výsledků. Navrhnuta jsou možná rozšíření a upřesnění o další funkcionality. 1 2 SVG SVG (Scalable Vector Graphics) je v obecném smyslu jazyk, formát, platforma. Slouží pro popis dvoudimenzionální grafiky založeném na XML. Umožňuje popsat vektorovou grafiku a to jak statickou, tak dynamickou. Jedná se o otevřený standart vyvíjený organizací W3C [2]. Platforma SVG vyplňuje mezeru mezi grafickými formáty používanými na internetu. Podporuje tři typy grafických objektů: vektorovou grafiku, rastrové obrázky a klasický text. Tyto objekty mohou být vloženy dohromady v jednom SVG obrázku a podle dostupných funkcí upraveny. Díky podpoře XML jmenných prostorů je obsah lehce přístupný a prohledatelný např. moderními dotazovacími jazyky [3]. V době psaní této práce je aktuální verze 1.1, poslední úprava je z 16. srpna 2011. Kromě