Masarykova univerzita Fakulta informatiky

Porovnanie dostupných implementácií XML databáz

Bakalárska práca

Milan Mozolák

Brno, jar 2021

Masarykova univerzita Fakulta informatiky

Porovnanie dostupných implementácií XML databáz

Bakalárska práca

Milan Mozolák

Brno, jar 2021

Na tomto mieste sa v tlačenej práci nachádza oficiálne podpísané zadanie práce a vyhlásenie autora školského diela.

Vyhlásenie

Vyhlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj.

Milan Mozolák

Vedúci práce: RNDr. Adam Rambousek, Ph.D.

i

Poďakovanie

Ďakujem vedúcemu práce RNDr. Adamovi Rambouskovi, Ph.D. za pomoc a ochotu pri vypracovávaní práce.

iii Zhrnutie

Cieľom práce je otestovať dostupné implementácie open source XML databáz a vybrať najvhodnejšiu pre potreby Centra spracovania pri- rodzeného jazyka. Databázy budú naplnené slovníkovými dátami a otestované rôznymi typmi dotazov. Práca bude obsahovať popis vy- braných databáz, priebehu testovania a dosiahnutých výsledkov aj s odporúčaním.

iv Kľúčové slová

XML, XML databázy, Native XML databázy, XML-enabled databázy, eXist, Berkeley DB XML, BaseX, Sedna, PostgreSQL, MySQL

v

Obsah

1 Úvod 1

2 XML Dokument 3 2.1 Štruktúra XML ...... 3 2.2 Rozdelenie XML dokumentov ...... 3 2.2.1 Dokumentovo orientované XML dokumenty . .3 2.2.2 Dátovo orientované XML dokumenty ...... 4 2.2.3 Hybridné XML dokumenty ...... 4 2.3 Ukladanie XML dát ...... 4 2.4 XML dátový model ...... 4 2.5 Round-tripping ...... 4

3 XML dáta v databáze 7 3.1 Ukladanie dát ...... 7 3.1.1 Dokumentové ukladanie XML dát ...... 7 3.1.2 Dátové ukladanie XML dát ...... 7 3.2 XML databázy ...... 7 3.2.1 XML-enabled databázy ...... 7 3.2.2 Native XML databázy ...... 7 3.3 Dotazovanie na XML dáta ...... 8 3.3.1 XPath ...... 8 3.3.2 XQuery ...... 8 3.3.3 SQL/XML ...... 9 3.4 Dostupné databázy ...... 9

4 Centrum spracovania prirodzeného jazyka 11 4.1 Platforma DEB ...... 11 4.2 Portál AHISTO ...... 11 4.3 Slovníkové dáta ...... 12

5 Testovanie XML databáz 15 5.1 Obecné benchmarky ...... 15 5.1.1 Aplikačné benchmarky ...... 15 5.1.2 Micro benchmarky ...... 16 5.2 Testovanie slovníkových dát ...... 16

vii 6 Testované databázy 17 6.1 eXist-db ...... 17 6.2 BaseX ...... 17 6.3 Berkeley DB XML ...... 18 6.4 Sedna ...... 18 6.5 PostgreSQL ...... 18 6.6 MySQL ...... 19

7 Testovanie 21 7.1 XMark ...... 21 7.2 Testy na slovníkové dáta ...... 22 7.3 Príprava testov ...... 24 7.4 Testovacie prostredie ...... 25 7.5 Výsledky ...... 25 7.5.1 Výsledky XMark ...... 25 7.5.2 Výsledky slovníkových testov ...... 27

8 Zhrnutie výsledkov 31

9 Záver 33

Bibliografia 35

viii 1 Úvod

Ako množstvo dát vo svete neustále stúpa, vzniká aj väčšia potreba tieto dáta efektívne ukladať. Jednou s najvyužívanejších foriem úlo- žiska dát je formát XML. Je využívaný najmä kvôli jeho vysokej prispô- sobiteľnosti pre konkrétne potreby. Keď už sú dáta uložené vo formáte XML, potrebujeme s nimi vykonávať rôzne operácie a na túto úlohu nám slúžia XML databázy. S XML dátami pracuje aj Centrum spracovania prirodzeného ja- zyka na Fakulte informatiky Masarykovej univerzity. Toto centrum ukladá veľké množstvo slovníkových dát do XML dokumentov, nad ktorými potrebuje rýchlo a efektívne pracovať. Cieľom tejto práce bude nájsť najvhodnejšiu databázu pre potreby tohto centra. Podobná práca, zameriavajúca sa však iba na časť XML databáz, už bola vypracovaná Martinom Bukatovičom[1] v roku 2010. Druhá kapitola obsahuje prehľad XML štandardu. V tretej kapitole sa venujem prehľadu XML databáz. Vo štvrtej kapitole stručne pred- stavím Centrum spracovania prirodzeného jazyka. V piatej kapitole popisujem ako XML databázy testovať. Šiesta kapitola obsahuje pre- hľad testovaných databáz a v siedmej je popísané samotné testovanie aj s výsledkami a doporučením.

1

2 XML Dokument

XML je skratka označenia Extensible Markup Language. XML patrí me- dzi značkovacie jazyky a umožňuje vytvoriť štruktúru v textovom dokumente a uložiť ju do XML súboru. Tento súbor obsahuje dáta zapísané pomocou predom definovaných značiek, ktoré umožňujú ľahkú orientáciu pre čitateľa a vytvárajú určitú hierarchiu v doku- mente. Cieľom tohto formátu bolo vytvoriť ľahký spôsob komunikácie pre ľudí a stroje cez internet.

2.1 Štruktúra XML

Jazyk XML má zadefinované pravidlá, ktoré musia byť presne dodr- žiavané. Medzi tieto pravidlá patria napríklad úvodný element obsa- hujúci verziu a kódovanie, nutnosť každého elementu mať otváraciu a zatváraciu značku a iné. Dovoľuje ale zvoliť ľubovoľné názvy značiek. Dokumenty vytvorené pri dodržaní všetkých pravidiel sa nazývajú well-formed [2]. XML takisto dovoľuje vytvárať vlastné šablóny, podľa ktorých sa môžu XML dokumenty tvoriť. Dokument, ktorý zároveň dodržuje aj šablónu, sa označuje ako validný.

2.2 Rozdelenie XML dokumentov

XML dokumenty môžeme podľa obsahu rozdeliť na dokumentovo orientované, dátovo orientované a hybridné [3].

2.2.1 Dokumentovo orientované XML dokumenty

Tieto dokumenty sú zväčša tvorené človekom, nemajú pravidelnú štruktúru, sú menej členité a obsahujú komentáre a elementy so zmie- šaným obsahom. Tieto elementy sú tvorené kombináciou textu a ďal- ších vnorených značiek.

3 2. XML Dokument 2.2.2 Dátovo orientované XML dokumenty

Na rozdiel od dokumentovo orientovaných, dátovo orientované sú tvorené automaticky strojom, ich obsah má pravidelnú vnútornú štruk- túru a sú určené predovšetkým na automatické spracovanie.

2.2.3 Hybridné XML dokumenty

Niekedy sa nedá dokument presne zaradiť ani do jednej z predošlých dvoch kategórií. Dátovo orientované dokumenty môžu obsahovať rôzne nepravidelné časti a dokumentovo orientované naopak pravi- delné. Tieto dokumenty označujeme ako hybridné.

2.3 Ukladanie XML dát

XML dokument môžeme sám o sebe považovať ako databázu, keďže štruktúrovane ukladá dáta a vieme ich v ňom spätne nájsť a zmeniť. Má takisto vlastný dotazovací jazyk XPath [4] a XQuery [5]. Oproti iným databázam má ale problém, že nemá implementované rôzne iné vlastnosti, ktoré sú pre ne úplne bežné. Príkladom je napríklad tvorba indexov, bezpečnosť, konkurenčný prístup a iné. Preto ak chceme ukladať väčšie množstvo XML dát, je dobré zvoliť si niektorú XML databázu.

2.4 XML dátový model

Aby sme s XML dátami mohli efektívne pracovať musíme dokument, ktorý je uložený v textovej podobe XML, prekonvertovať na štruktúru dát – dátový model. Tento dátový model môžeme mať následne ulo- žený v databáze alebo ho mať uložený v pamäti a vykonávať všetky požadované operácie nad ním.

2.5 Round-tripping

Keďže musíme dáta najskôr prekonvertovať na dátový model skôr ako budeme pracovať s XML dátami a rovnako aj v opačnom prípade pri ich spätnom ukladaní ich konvertovať naspäť na XML dokument,

4 2. XML Dokument vzniká nám tzv. round-tripping [6]. Ten uvádza mieru, ako veľmi sa počiatočný dokument podobá na ten výsledný po vykonaní jednej takejto konverzie.

5

3 XML dáta v databáze

3.1 Ukladanie dát

Keďže rôzne typy XML dokumentov podľa rozdelenia obsahu slúžia na rôzne funkcie, potrebujeme využiť iný spôsob na ich ukladanie.

3.1.1 Dokumentové ukladanie XML dát

Pri dokumentovo orientovaných XML dokumentoch je dôležité zacho- vať vysokú úroveň round-tripping, teda aby bol počiatočný a výsledný dokument čo najpodobnejší. Je nutnosť zachovať poradie elementov, metadáta, komentáre a rôzne iné údaje.

3.1.2 Dátové ukladanie XML dát

Pri tomto spôsobe ukladania sú dôležité iba samotné dáta, nie poradie elementov, komentáre a niektoré ďalšie dáta. Tie nie sú pre strojové spracovanie dôležité a teda ich model nemusí obsahovať. Pri tomto spracovaní je úroveň round-tripping nízka.

3.2 XML databázy

Podľa spôsobu uloženia samotného XML dokumentu v databáze roz- lišujeme dva hlavné typy databáz, XML-enabled a Native XML [7].

3.2.1 XML-enabled databázy

Za takéto databázy sa považujú relačné databázy s podporou jazyka XML. Tieto databázy mapujú XML dokument do riadkov a stĺpcov v tabuľkách, ktoré už majú požadované vlastnosti databázy, ako na- príklad indexovanie alebo priamo obsahujú dátový typ XML.

3.2.2 Native XML databázy

Tieto databázy priamo pracujú s XML dokumentami a nepotrebujú žiadne mapovanie ako XML-enabled databázy. Vďaka tomu sú dobrou voľbou pre ukladanie dokumentovo orientovaných XML dokumentov.

7 3. XML dáta v databáze 3.3 Dotazovanie na XML dáta

Pre prácu s XML dátami existuje niekoľko možností. Môžeme využiť rôzne šablóny, ktoré ale nemajú definovaný žiaden štandard, a preto sa ich implementácia môže veľmi líšiť medzi produktami. Ďalšou z možností je pridanie podpory pre XML dokumenty do jazyka SQL. Najrozšírenejší je štandard SQL/XML. Poslednou z možností je využiť jazyky určené priamo pre prácu s XML dátami ako sú XPath a XQuery.

3.3.1 XPath

XPath je dotazovací jazyk nad XML dokumentami navrhnutý konzor- ciom W3C v roku 1999. Umožňuje vyberať elementy, ale aj spočítavať hodnoty podľa obsahu dokumentu. Pracuje podľa ciest v XML strome, v ktorom hľadá výrazy podľa stanovených kritérií. Má niekoľko verzií, najnovšia je 3.1 odporúčaná od roku 2017 avšak najpoužívanejšia naďa- lej zostáva pôvodná 1.0 z roku 1999. Z verzie 2.0 sa vyvinul pokročilejší jazyk XQuery.

3.3.2 XQuery

Dotazovací jazyk XQuery bol inšpirovaný jazykom Quilt. V čase vy- pracovania tejto práce je vo verzii 3.1 a je najrozšírenejším dotazovacím jazykom nad XML dátami. Jeho cieľom je jednoduchý, ľahko pochopi- teľný jazyk, ktorý by fungoval nad dokumentami ale aj databázami. XQuery pracuje nad abstraktnou logickou štruktúrou dokumentu nazývanou data model[8]. XQuery výraz sa skladá z blokov „FLWOR“, ktoré sú podobné výrazom v jazyku SQL. Výrazy „FLWOR“ je možné vkladať samé do seba a vytvárať takto zanorenie. „FLWOR“ je skratka kľúčových slov použitých vo výraze for, let, where, order by a return. Každý výraz musí povinne obsahovať blok return a aspoň jeden z for a let. Ostatné bloky výrazu sú voliteľné. Funkcia jednotlivých blokov je nasledovná:

• for a let - tieto bloky vyhľadajú a naviažu dáta v dokumente na premennú a postupne cyklia cez všetky nájdené hodnoty

8 3. XML dáta v databáze

• where - pomocou logických výrazov vyfiltruje nevyhovujúce elementy

• order by - zoradí elementy do požadovaného poradia

• return - posledný krok výrazu, v ktorom sa elementy vrátené výrazom dávajú do ich finálnej formy

Jadro jazyka XQuery obsahuje iba podporu pre vyhľadávanie. Ak chceme dáta pridávať alebo aktualizovať, potrebujeme do jazyka XQu- ery pridať rozšírenia. Tento problém rieši rozšírenie XQuery Update[9] aktuálne vo verzii 3.0. Existujú aj mnohé ďalšie rozšírenia.

3.3.3 SQL/XML

Tento štandard rozširuje jazyk SQL o prácu s XML dátami. Pridáva nový dátový typ xml, vytváranie XML dát a operácie s nimi, ich trans- formáciu na relačné dáta a zavádza podporu pre XQuery výrazy. Za- vedenie XML dátového typu nahrádza ukladanie dát do typu VAR- CHAR alebo CLOB. Dáta sú ukladané pomocou dátového modelu XPath/XQuery. Napriek tomu, že prvá verzia tohto štandardu vyšla už v roku 2003, stále je jeho implementácia v moderných relačných databázach veľmi slabá a nekompletná.

3.4 Dostupné databázy

Existuje veľké množstvo rôznych implementácii XML databáz od rôz- nych spoločností. Každá databáza má svoje vlastné špecifiká, posky- tuje rôzne funkcie a správny výber databázy takmer vždy závisí od konkrétneho použitia. Najpoužívanejšie databázy:

• Natívne XML databázy

– S open source licenciou ∗ eXist-db ∗ BaseX ∗ Berkeley DB XML – S komerčnou licenciou

9 3. XML dáta v databáze

∗ Qizx [10] ∗ MarkLogic Server [11] – Neaktívne databázy s open source licenciou ∗ MonetDB/XQuery [12] - databáza vyvinutá vývojo- vým centrom CWI v Holdandsku. Od verzie 5.0 stra- tila podporu pre XQuery, a preto sa dnes už ako XML databáza použiť nedá. ∗ Sedna - stále patrí k jedným z najpoužívanejších aj napriek tomu, že jej posledná verzia vyšla v roku 2011 a jej aktívny vývoj sa skončil.

• XML-enabled databázy

– S open source licenciou ∗ PostgreSQL ∗ MySQL ∗ MariaDB [13] – S komerčnou licenciou ∗ IBM DB 2 [14] ∗ Microsoft SQL Server [15] ∗ Oracle Database [16]

10 4 Centrum spracovania prirodzeného jazyka

Centrum spracovania prirodzeného jazyka[17] (ZPJ) prevádzkuje Fa- kulta informatiky Masarykovej Univerzity v Brne. Centrum sa zame- riava na prácu s textom a úspešne spravuje niekoľko veľkých projektov. Centrum pracuje v veľkým množstvom slovníkových dát, ktoré sú uložené vo formáte XML. Potrebuje pre to rýchly a efektívny spôsob ukladania a pracovania s takýmito dokumentami. Medzi aplikácie spravované centrom ZPJ patria napríklad platforma DEB a novo roz- biehajúci sa portál AHISTO.

4.1 Platforma DEB

Tento projekt vznikol s cieľom uľahčiť vývojárom tvorbu slovníkových aplikácií. Detailne ho popisuje RNDr. Adam Rambousek, Ph.D. vo svo- jej práci[18]. Platforma bola úspešne použitá pri vytváraní viacerých medzinárodných projektov. Platforma DEB funguje na architektúre klient-server. Tieto dve jednotky spolu komunikujú pomocou proto- kolu SOAP. Klient beží vo webovom prehliadači a poskytuje grafické rozhranie s množstvom funkcií. Server poskytuje mnoho služieb vrá- tane pripojenia na vlastné aplikácie pomocou rozhrania. Server je naprogramovaný v jazyku Ruby a beží v Centre ZJP na systéme Li- nux a využíva pre ukladanie a prácu s XML dokumentami databázu Sedna. Príklady projektov na tejto platforme sú napríklad:

• DEBdict - prehliadač slovníkov

• DEBVisDic - aplikácia pre prácu s databázou WordNet

4.2 Portál AHISTO

Projekt[19] sa začal v máji roku 2020 a jeho koniec je naplánovaný na rok 2023. Má za cieľ sprístupniť historické písomné dáta o českom stredoveku. V historických dokumentoch bude možné plnotextové vyhľadávanie, export štruktúrovaných dát a rôzne iné funkcie. Ako úložisko dát projekt využíva XML databázu.

11 4. Centrum spracovania prirodzeného jazyka 4.3 Slovníkové dáta

Slovníkové XML dokumenty sa skladajú z množstva záznamov. Podľa konkrétneho slovníka a miery prevodu na formát XML môžu mať dáta rôznu štruktúru. Medzi slovníky, ktoré sú využívané v platforme DEB patri Slovník spisovného jazyka českého (ssjc). Slovník je veľmi dobre prevedený na formát XML a jeho záznamy môžu byť veľké aj niekoľko kilobajtov. Príklad záznamu pre slovo dotaz: dotaz, -u m. ( 6. j. -u, -e) požadování odpovědi, informace; dotázání, doptání, otázka, optání: zdvořilý, skromný d.; věcný, opětovný d.; písemný d.; vyřídit, vznést d.; d. stran, ve věci prodeje; přijít s d-em do poradny; podat d. v parlamentě interpelaci K ďalším slovníkom patrí databáza WordNet (wn). Záznamy sú rozdelené do elementov SYNSET, ktoré obsahujú množinu synoným a každý z nich je jednoznačne určený unikátnym identifikátorom. Zá- znamy môžu pomocou nich na seba navzájom odkazovať. Veľkosť záznamov sa pohybuje prevažne do jedného kilobajtu. Príklad zá- znamu pre množinu troch synoným s odkazom na iný záznam: ENG20-00759271-v tázat se dotazovat se klást otázku

12 4. Centrum spracovania prirodzeného jazyka

v ENG20-00868100-v

13

5 Testovanie XML databáz

Operácie s veľkými XML dokumentami môžu byť veľmi zložité, a preto môže záležať na každom implementačnom detaile. Výsledky testov môžu závisieť aj na type testov. Rôzne použitie databáz v praxi znamená, že niektoré vlastnosti sú viac dôležité ako iné. Preto sa tes- tovanie skladá z dvoch častí. V prvej časti každú databázu otestujeme obecným benchmarkom, ktorý má za úlohu preveriť databázy z čo najširšieho spektra. Druhá časť je zameraná na testovanie slovníkových dát.

5.1 Obecné benchmarky

Do dnešného dňa bohužiaľ neexistuje žiadny štandard pre benchmark nad XML databázami. Keďže nie je žiadny štandard ukladania XML dokumentov, spôsob akým to jednotlivé databázy robia sa môže zá- sadne líšiť. To viedlo k vytvoreniu hneď niekoľko benchmarkov, kde každý sa zameriava na trochu iný cieľ. Vo všeobecnosti ich ale môžeme rozdeliť do dvoch skupín - aplikačné a micro benchmarky[20].

5.1.1 Aplikačné benchmarky

Tieto benchmarky sa zamieriavajú na aplikáciu ako celok. Ich testy odpovedajú reálnemu použitiu databáz v praxi. Sú zložitejšie, testujú viacero vecí naraz a ich primárne zameranie je vyhodnocovanie XQu- ery dotazov, pretože tento jazyk je medzi databázami veľmi dobre rozšírený.

• X-Mach1[21] - testuje databázu a aplikačný server ako celok. Benchmark obsahuje generátor textovo orientovaných dokumen- tov, 8 XQuery dotazov a testovací framework.

• XOO7[22] - pomocou 23 XQuery dotazov testuje jeden rekur- zívny XML dokument.

• XMark[23] - test obsahuje generátor dát xmlgen, ktorý generuje XML dokumenty podľa zadanej veľkosti. Tieto dokumenty vždy dodržiavajú schému DTD, ktorá je takisto súčasťou testu. Nad

15 5. Testovanie XML databáz

týmito dokumentami je navrhnutých 20 XQuery dotazov, ktoré simulujú on-line aukciu.

• XBench[24] - obsahuje 4 varianty, pre dátovo a textovo orien- tované dokumenty a pre každý z nich jedno alebo viac doku- mentovú variantu. Testovanie prebieha pomocou 20 XQuery dotazov.

5.1.2 Micro benchmarky

Micro bencharky sú primárne určené pre optimalizáciu menších častí databáz. Netestujú celok, ale iba základné operácie nad databázou.

• Michigan benchmark[25] - pomocou 45 dotazov testuje jeden XML dokument s rekurzívnou štruktúrou elementov.

• MemBeR[26] - skladá sa z generátora dokumentov a procesora na spúšťanie dotazov. Testuje XPath a XQuery dotazy.

5.2 Testovanie slovníkových dát

Ukladanie slovníkových dát v databáze je špecifický prípad použitia, ktorý sa využíva v platforme DEB. Obecný benchmark sa nezameriava na toto využitie, a preto treba použiť špecifické testy vytvorené presne pre tento prípad.

16 6 Testované databázy

Pri výbere databáz bola stanovená požiadavka, aby databáza bola open source a poskytovala rozhranie do jazykov Python a Ruby.

6.1 eXist-db

Databázu eXist-db[27] napísal v roku 2000 Wolfgang Meier a vydal ju pod licenciou GNU LGPL. V súčastnosti sa nachádza vo verzii 5.2.0 a k jej vývoju prispelo viacero univerzít. Je napísaná v jazyku Java a je klasifikovaná ako natívna XML databáza, ale aj ako NOSQL databáza. Dokáže ukladať XML, JSON a binárne dokumenty. Má plnú podporu XPath a XQuery. Databáza obsahuje server, Java klient rozhranie a we- bové rozhranie. Server dokáže naraz pracovať iba s jednou databázou. Dokumenty sú ukladané do kolekcií a tie môžu byť vnorené v iných kolekciách. Štruktúrou sa tak podobajú adresárovému systému. Kolek- cie nekladú žiadne požiadavky na súbory, dovoľujú uložiť akýkoľvek dokument. Databáza podporuje viacero užívateľských účtov, ktoré môžu byť priradené do skupín, majú vlastné práva a domovskú kolek- ciu. Indexácia súborov je robená automaticky na úrovni elementov a štruktúry atribútov.

6.2 BaseX

BaseX[28] je natívna XML databáza napísaná v jazyku Java. Projekt začal Christian Grün na univerzite v Konstanz v roku 2005. Od roku 2007 je projekt open source s licenciou BSD a je vyvíjaný ako komu- nitný GitHub projekt. Dokumenty sú ukladané do databáz, jedna databáza ich môže obsahovať ľubovoľný počet. Každý dokument je uložený ako strom jeho elementov pomocou tabuliek. Databáza pod- poruje viacero XML štandardov vrátane XPath a XQuery. Dokáže byť spustená ako samostatná aplikácia alebo ako klient-server. Obsahuje správu používateľov a podporu transakcií.

17 6. Testované databázy 6.3 Berkeley DB XML

Databáza Berkeley DB XML[29] je natívna databáza, ktorá je posta- vená na základoch Berkeley DB od spoločnosti Oracle. Berkeley DB XML pridáva nad touto databázou novú vrstvu, ktorá dokáže pracovať s XML dokumentami. Okrem nich dokáže vďaka jadru Berkeley DB ukladať aj iné typy dokumentov ako XML, vrátane metadát o samot- ných dokumentoch. Je dostupná pod duálnou licenciou, komerčnou od Oracle a od verzie 6.0.2 licenciou GNU. Primárny dotazovací ja- zyk je XQuery. Dokumenty sú ukladané do kontajnerov, ktoré majú rovnakú funkciu ako kolekcie v iných natívnych XML databázach.

6.4 Sedna

Databázu Sedna[30] som zahrnul do výberu aj napriek tomu, že jej vývoj nie je aktívny z dôvodu jej použitia v platforme DEB. Databáza má Apache 2.0 licenciu. Bola vyvinutá v roku 2003 v Ústave pre systé- mové programovanie v Ruskej akadémii vied. Jej vývoj sa skončil v roku 2011 a jej aktuálna verzia je odvtedy 3.5. Databáza je napísaná v jazykoch C/C++ a má plnú podporu jazyka XQuery. XML dokumenty sú ukladané do kolekcií alebo osobitne, kolekcie avšak už nemožno vkladať do iných kolekcií. Databáza poskytuje zabezpečenie pomocou systému používateľov, rolí a práv.

6.5 PostgreSQL

PostgreSQL[31] je relačná databáza, často označovaná aj ako Postgres, ktorá obsahuje dátový typ xml. Vďaka tomu ju radíme medzi XML- enabled databázy. Výhodou oproti ukladaniu dokumentov do XML dátového typu oproti bežnému textovému typu je, že databáza auto- maticky kontroluje, či je dokument well-formed a obsahuje podporu pre XML funkcie. PostgreSQL obsahuje podporu na dátovom type xml pre jazyk XPath, avšak iba pre jeho verziu 1.0. XQuery, ktoré vychádza až z verzie 2.0 v tejto databáze nemá žiadnu podporu. Pracovať s jazykom XPath sa dá vďaka funkcii (), ktorá je vložená do SQL výrazu, samostatne používať jazyk XPath databáza neumožňuje.

18 6. Testované databázy 6.6 MySQL

Databáza MySQL[32] je relačná databáza vlastnená spoločnosťou Oracle. Databáza ma duálnu licenciu, komerčnú od Oracle a open source GNU. V roku 2010 z nej vznikla databáza MariaDB. Databázu zaraďujeme medzi XML-enabled databázy a to aj napriek tomu, že neobsahuje natívny xml dátový typ. XML dáta je potrebné ukladať do typu VARCHAR alebo CLOB (Character large object) ako textové dáta. MySql má podporu pre jazyk XPath, ale rovnako ako pri da- tabáze PostgreSQL iba pre verziu 1.0. Navyše má databáza viacero obmedzení a podpora pre XPath je iba čiastočná. Databáza pracuje s jazykom XPath vďaka funkcii ExtractValue(), tá musí byť ale súčas- ťou SQL výrazu, databáza nevie používať jazyk XPath priamo. Táto funkcia vráti výsledok ako jeden text, do ktorého sú všetky nájdené výsledky spojené. Vrátiť dokáže ale iba textový obsah výsledku, nedo- káže vrátiť žiadne elementy. Vráti taktiež iba textový obsah nájdeného elementu, textový obsah jeho potomkov už nie. To znamená, že vo väčšine testov je výsledok prázdny. V reálnom využití to môže byť problém a treba kvôli tomu buď upraviť dotazy, alebo priamo obsah a štruktúru samotných XML dokumentov. Pri testovaní ale neberieme ohľad na výsledok, iba na čas vykonania. Databáza musí vykonať rovnaké množstvo práce aj keď nič nevráti. V niektorých prípadoch by to bolo možné vyriešiť úpravou dotazu, avšak to by skreslilo výsledky v porovnaní s ostatnými databázami.

19

7 Testovanie

Keďže rôzne implementácie XML databáz majú veľmi veľa rozdielov a neexistuje žiadny štandard pre ich benchmark, rozhodol som sa použiť XMark. Micro benchmarky sa na túto úlohu nehodia z dôvodu ich zamerania iba na jednu špecifickú časť databázy. Najvhodnejším kandidátom bol XBench, ten pokrýva najviac scenárov, bohužiaľ už ale nie je voľne dostupný, a preto ním nie je možné testovať. K XMarku som sa priklonil aj s dôvodu jeho použitia v práci Martina Bukatoviča[1] z roku 2010.

7.1 XMark

Základom testovania benchmarkom XMark bolo vytvoriť dokumenty, na ktorých bude XMark spustený. Tých som vytvoril celkovo sedem, veľkostne od 1.9MB až do 119.5MB. Súbory boli vytvorené nástrojom xmlgen, ktorý je dostupný na stiahnutie priamo zo stránky projektu XMark[23]. Veľkosti boli špecifikované zmenou parametra pri spúš- ťaní tohto nástroja. XMark spúšťa 20 XQuery dotazov, ktoré simulujú on-line aukciu. Každý dotaz je spustený na jednotlivých súboroch s cieľom zistiť, ako vplýva veľkosť dát a typ dotazu na rýchlosť databázy. Jednotlivé dotazy sa zameriavajú na nasledovné:

• Presná zhoda - dotaz q1

• Špecifické poradie prístupu - dotazy q2 - q4 testujú vnútornú štruktúru dokumentu a požiadavky na poradie

• Pretypovanie - dotaz q5 pretypuje text na číslo

• Neúplné cesty - dotazy q6 a q7 testujú ako si databáza poradí pri hľadaní zhody a preskakovaní nepotrebných častí dokumentu

• Spájanie elementov - dotazy q8 a q9 spoja dáta z dvoch častí dokumentu do jedného výsledku

• Výstupná hodnota - dotaz q10 testuje zložité vytváranie výstup- nej hodnoty

21 7. Testovanie

• Spájanie podľa hodnoty - dotazy q11 a q12

• Rekonštrukcia - dotaz q13 testuje ako databáza dokáže poskla- dať časť pôvodného dokumentu z jednotlivých častí

• Plnotextové vyhľadávanie - dotaz q14 hľadá elementy, ktoré obsahujú určité slovo

• Úplné cesty - dotazy q15 a q16 testujú prehľadávanie pomocou úplnej cesty hlboko zanorenej do dokumentu

• Chýbajúce hodnoty - dotaz q17 hľadá časti dokumentu, ktoré neobsahujú určitú voliteľnú časť

• Funkcie - dotaz q18 testuje používateľom definovanú funkciu a jej použitie

• Triedenie - dotaz q19 zoradí výsledok podľa abecedy

• Agregácia - dotaz q20 zoskupí výsledok do definovaných kate- górií Všetky dotazy benchmarku XMark sú v jazyku XQuery. Toto je ale problém pre databázy PostgreSQL a MySQL. Tieto databázy jazyk XQuery nepodporujú, obsahujú podporu len pre jazyk XPath. Z tohto dôvodu museli byť testy prepísané do XPath, to bolo možné len v prí- pade testov q1, q5, q6, q7 a q14. Ostatné testy využívajú jazyk XQuery spôsobom, ktorý nejde prepísať do čistého jazyka XPath. Výsledky spustenia tohto benchamarku na ostatných dotazoch pre XML-enabled databázy preto chýbajú.

7.2 Testy na slovníkové dáta

Tieto testy boli spúšťané priamo na dátach z praxe. Použité boli tieto súbory: • Slovník spisovného jazyka českého (ssjc) - 53.4MB, jeden zá- znam tvorí element , približne 124 tisíc záznamov

• Databáza WordNet (wn) - 8.1MB, jeden záznam tvorí element , približne 28 tisíc záznamov

22 7. Testovanie

Samotné testy tvorí 6 vyhľadávacých dotazov v jazyku XPath, 3 pre každý slovník. • ssjc1 - /root[starts-with(h, "ko")]

• ssjc2 - /root[starts-with(small, "ž.") and starts-with(bold, "2.")]

• ssjc3 - /root[contains(ital, "stroj")]

• wn1 - /SYNSET[contains(.//LITERAL,"pes") and POS="n"]

• wn2 - /SYNSET/SYNONYM/LITERAL[@sense="2" and starts-with(., ös")]

• wn3 - /SYNSET/ILR[@type="hypernym" and contains(., "90")]/../ID

Dotazy možno rozdeliť podľa ich primárneho zamerania na: • Zhoda na začiatku slova - dotazy ssjc1, ssjc2 a wn2

• Vyhľadávanie v texte - dotazy ssjc3, wn1 a wn3 V natívnych XML databázach, s výnimkou Berkeley DB XML, takto sformulované dotazy ssjc2, ssjc3 a wn1 vypíšu chybu XPTY0004. Chybu spôsobuje vykonávanie funkcií, ktoré očakávajú ako parame- ter jeden element, ale dostanú celé pole a s tým si funkcia nedokáže poradiť. Ako riešenie pre natívne databázy je použitie kvantifikova- ného výrazu some in satisfies. Takto dokážeme rozbiť celé pole na jednotlivé elementy a funkcia už nevypíše žiadnu chybu. Použitie výrazu some in satisfies avšak nefunguje v databázach Postgre- SQL a MySQL, pretože tento výraz bol pridaný až od verzie XPath 2.0 a táto verzia nie je v nich podporovaná. Konečné riešenie je za- volať funkciu na elemente samotnom. Ak aspoň jeden z elementov spĺňa funkciu, výber bude neprázdny a podmienka výberu splnená. Napríklad výsledný výraz ssjc3 vyzerá nasledovne: • /root[ital[contains(., "stroj")]] Takto formulované výrazy fungujú vo všetkých vybratých databázach a tým je zaručená čo najväčšia férovosť testovania.

23 7. Testovanie 7.3 Príprava testov

Pri testovaní som sa snažil pristupovať k databázam čo najpodobnejšie, a preto boli všetky dotazy spúšťané priamo cez príkazový riadok. Aby som čo najviac znížil vplyv externých faktorov na výsledok, každý test som spustil štyrikrát, odmeral som čas potrebný na vykonanie v milisekundách a ako výsledok som zvolil priemer posledných troch spustení. Dokumenty boli do databáz vložené bez žiadnych ďalších optimalizácií alebo manuálneho nastavovania indexov. • eXist-db - Súbory boli vložené do spoločnej kolekcie, čas vyko- nania bol meraný pomocou rozdielu systémového času pred vykonaním a po vykonaní testu. Systémový čas bol zistený po- mocou XQuery funkcie system-time() z balíčka util.

• BaseX - Súbory boli rovnako vložené do spoločnej kolekcie. Čas vykonania bol odmeraný pomocou XQuery funkcie time() z balíčka prof.

• Berkeley DB XML - Na uloženie súborov bol využitý spoločný kontajner. Na odmeranie času bol použitý príkaz time priamo zabudovaný do databázy. Tento príkaz obalí dotaz časovačom, ktorý nakoniec vypíše čas potrebný pre vykonanie dotazu.

• Sedna - Pre testy bola vytvorená databáza, v ktorej boli doku- menty uložené do jednej kolekcie. Čas bol meraný pomocou možnosti show-time on priamo z príkazového riadku.

• PostgreSQL - Pre súbory bola vytvorená relačná tabuľka s dvomi stĺpcami. V prvom stĺpci je názov súboru v dátovom type VAR- CHAR a v druhom stĺpci je uložený samotný XML dokument do dátového typu xml. Čas bol odmeraný pomocou príkazu timing on vstavaného do prostredia databázy.

• MySQL - Súbory boli ukladané podobne ako pre databázu PostgreSQL, ale dokumenty boli uložené do dátového typu longtext, pretože databáza neobsahuje natívny xml dátový typ. Čas bol meraný možnosťou verbose pri spustení dotazu, ktorá vypíše údaje o spustenom programe vrátane času potrebného na vykonanie.

24 7. Testovanie 7.4 Testovacie prostredie

Testy boli spúšťané na počítači s procesorom 3.3 GHz Dual-Core In- tel Core i7, 16 GB operačnej pamäte s operačným systémom macOS (Bir Sur 11.3). Databázy neboli nijako konfigurované, všetky nastave- nia zostali predvolené. Testované boli najaktuálnejšie verzie databáz dostupné v marci 2021. Použité boli stabilné verzie. • eXist-db - 5.2.0

• BaseX - 9.5.1

• Berkeley DB XML - 6.1.4

• Sedna - 3.5

• PostgreSQL - 13.2

• MySQL - 8.0.23

7.5 Výsledky

Každá databáza sa snaží vyhodnocovanie čo najviac optimalizovať. Výsledky na rovnakej databáze ale odlišnej veľkosti dokumentu veľmi názorne ukazujú ako si jednotlivé databázy dokážu poradiť s väčším množstvom dát. Kvôli lepšej optimalizácii môžu byť niektoré porovna- nia medzi databázami na určitom dotaze zavádzajúce. Vo všeobecnosti sa dá vyvodiť niekoľko záverov.

7.5.1 Výsledky XMark

Každý z dotazov q1 až q20 bol spustený pre dokumenty vo veľkostiach 1.9MB, 3.8MB, 7.3MB, 15MB, 29.9MB, 59.5MB a 119.5MB. Výsledky sa konzistentne menili v závislosti od veľkosti dokumentu a vo výsled- koch nie sú v závislosti na veľkosť dokumentu žiadne nepravidelnosti. Preto uvádzam výsledky v porovnaní menších a väčších dokumen- tov. Ako zástupcu menších som vybral dokument s veľkosťou 7.3MB (obrázok 7.1 a väčších dokument s veľkosťou 119.5MB (obrázok 7.2). Už na menších dokumentoch (obrázok 7.1) je možné vidieť, že da- tabáza Berkeley DB XML vo väčšine prípadov za ostatnými natívnymi

25 7. Testovanie

100000 ms

10000 ms

1000 ms

100 ms

10 ms

1 ms q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20

BaseX eXist Berkeley Sedna PostgreSQL MySQL

Obr. 7.1: Porovnanie XMark pre 7.3MB dokument databázami zaostáva. Databáza eXist-db má problém so zložitejšími dotazmi, ale pre jednoduchšie dokázala pracovať rýchlo. Databáza BaseX patrí k rýchlejším na zložitejších dotazoch ale zaostáva na tých jednoduchších. Najlepšie na menších dokumentoch dopadla databáza Sedna. XML-enabled databázy PostgreSQL a MySQL dopadli horšie ako na- tívne databázy. Databáza PostgreSQL bola s výnimkou dvoch dotazov vždy najhoršia, MySQL druhá najhoršia. Databáza MySQL nedoká- zala správne spustiť dotaz q14 aj napriek tomu, že bol celý prepísaný do jazyka XPath. Dôvodom je nedostatočná implementácia podpory pre tento jazyk. Pre väčšie dokumenty (obrázok 7.2) je databáza Berkeley DB XML z natívnych databáz jednoznačne najpomalšia. Databázy eXist-db a BaseX dopadli podobne, BaseX je ale rýchlejšia pre zložitejšie dotazy. BaseX v jednoduchších dotazoch už nie je najpomalšia ako v prípade menších dokumentov, dokonca patrí k najrýchlejším. Databáza Sedna je opäť v priemere najrýchlejšia, nie je to už ale také jednoznačné. Ostatné databázy dokážu byť v niektorých prípadoch rýchlejšie, hlavne pri zložitejších dotazoch.

26 7. Testovanie

10000000 ms

1000000 ms

100000 ms

10000 ms

1000 ms

100 ms

10 ms

1 ms q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20

BaseX eXist Berkeley Sedna PostgreSQL MySQL

Obr. 7.2: Porovnanie XMark pre 119.5MB dokument

XML-enabled databázy majú podobné výsledky ako pri menších dokumentoch. MySQL dopadla opäť lepšie ako PostgreSQL avšak na natívne databázy s výnimkou Berkeley DB XML nestačia.

7.5.2 Výsledky slovníkových testov

Výsledky týchto testov je možné vidieť na obrázkoch 7.3 a 7.4. Pri po- hľade na grafy je hneď na prvý pohľad vidieť, že natívne XML databázy majú oveľa lepšie výsledky ako XML-enabled. Všetky natívne databázy dokážu v slovníkových dátach nájsť výsledok pomerne rýchlo. Pre Slovník spisovného jazyka českého je najdlhší čas vykonávania 1.7 sekundy, pre WordNet je to 0.4 sekundy. XML-enabled databázam rovnaká úloha trvá niekoľko násobne dlhšie. Pre jednoduchšie dotazy na začiatok slova (ssjc1 a wn2) je data- báza Berkeley DB XML jednoznačne najlepšia, ostatné databázy nie- koľko násobne prekonala. Pri dotaze ssjc2, ktorý už je trochu zložitejší a obsahuje podmienku s dvomi časťami, má už ale horší výsledok. Da- tabázy Sedna a BaseX majú na tomto type dotazov podobné výsledky, najhoršie z natívnych databáz dopadla eXist-db. Dotazy, ktoré obsa- hovali podmienku na začiatok slova pomocou funkcie starts-with()

27 7. Testovanie

1 000 000 ms

1 000 ms

1 ms ssjc1 ssjc2 ssjc3

BaseX eXist Berkeley Sedna PostgreSQL MySQL

Obr. 7.3: Porovnanie pre Slovník spisovného jazyka českého databáze MySQL nejdú spustiť, databáza túto funkciu nepodporuje. Na poslednom mieste je databáza PostgreSQL. Vyhodnotiť dotaz jej trvalo približne osemkrát dlhšie ako natívnym databázam. V dotazoch zameraných na vyhľadávanie v texte je z natívnych databáz Berkeley DB XML najhoršia. BaseX a eXist-db opäť dopadli podobne, BaseX má mierne lepšie výsledky. Databáza Sedna má s vý- nimkou dotazu wn1 najlepšie výsledky. Na tomto dotaze ju predbehli databázy BaseX a eXist-db. MySQL má zďaleka najhoršie výsledky. Vyhodnotiť dotazy jej trvalo aj niekoľko minút, dotaz ssjc3 jej trval dokonca viac ako hodinu. Na druhom najhoršom mieste je databáza PostgreSQL, s približne päťkrát dlhším časom ako natívne databázy.

28 7. Testovanie

1 000 000 ms

1 000 ms

1 ms wn1 wn2 wn3

BaseX eXist Berkeley Sedna PostgreSQL MySQL

Obr. 7.4: Porovnanie pre WordNet

29

8 Zhrnutie výsledkov

Každá databáza má vďaka rôznej implementácii a optimalizáciám veľa výhod aj nevýhod. Žiadna ale nie je jednoznačne najlepšia. Čo môžeme s istotou povedať je, že XML-enabled databázy sa na ukladanie a prácu s XML dokumentami nehodia. Databáza MySQL je limitovaná chýbajúcim natívnym xml dátovým typom a nedostatoč- nou implementáciou niektorých XML štandardov. PostgreSQL natívny dátový xml typ síce má, na natívne XML databázy ale nestačí. Imple- mentáciu XML štandardov má oveľa lepšiu ako databáza MySQL, avšak zďaleka nie je dostačujúca. Používanie XML-enabled databáz by som odporučil iba ak sú ukladané XML dokumenty malé, často sa v nich nevyhľadáva a primárnou úlohou databázy nie je práca s nimi. Toto ale nie je prípad využitia v centre ZPJ a preto tieto databázy sú preň nevhodné. Databázu Berkeley DB XML fungovala na veľmi jednoduchých dotazoch najlepšie. Ak bol dotaz čo i len trochu zložitejší, výrazne sa to prejavilo na výslednom čase. Pokiaľ sú používané dotazy jed- noduché, databáza je skvelým kandidátom na použitie. Pri práci so slovníkovými dátami sú vyhľadávacie kritériá často zložitejšie, ob- sahujú textové vyhľadávanie, porovnávanie viacerých elementov, a preto túto databázu neodporúčam. Databázy BaseX a eXist-db dosahovali veľmi podobné výsledky. Pre jednoduchšie dotazy a menšiu veľkosť použitých dokumentov vy- nikala eXist-db. Naopak pri zložitejších dotazoch a väčších veľkostiach súborov dosahovala lepšie výsledky databáza BaseX. Pri testoch nad slovníkovými dátami mala databáza BaseX v priemere lepšie výsledky z tejto dvojice a preto je lepším kandidátom pre centrum ZPJ. Najlepšie výsledky dosahovala databáza Sedna. Nebola vždy naj- rýchlejšia, podľa typu dotazu ju niektoré databázy dokázali predbe- hnúť. Priemerne však dosahovala lepšie výsledky ako ktorákoľvek iná testovaná databáza. Obrovskou nevýhodou tejto databázy je jej neaktívny vývoj od roku 2011. Databáza neimplementuje najnovšie štandardy a tento problém sa môže v budúcnosti s vývojom novších XML štandardov ešte zhoršiť. Aktuálne to nie je až taký problém, da- tabáza obsahuje všetky základné funkcie a nemal som problém so žiadnym chýbajúcim štandardom, čo sa môže kedykoľvek zmeniť. Ďal-

31 8. Zhrnutie výsledkov

ším problémom je aj oprava chýb alebo bezpečnostných problémov, ktoré ak sa objavia tak nemusia byť opravené. Z hľadiska výkonu data- bázy je najlepším kandidátom pre centrum ZPJ, no jej reálne nasadenie je s jej neaktívnym vývojom otázne. Moje odporúčanie pre centrum ZPJ je databáza BaseX. Aj keď ju výkonom predbehla databáza Sedna, jej neaktívny vývoj je väčšia ne- výhoda ako o niečo lepšie výsledky testov. Oproti databáze eXist-db bola lepšia vo väčšine prípadov. Databázu Berkeley DB XML neodpo- rúčam, rovnako ani jednu z dvojice XML-enabled databáz PostgreSQL a MySQL.

32 9 Záver

Pri vypracovávaní tejto práce som otestoval 6 databáz pre použitie s XML dátami. Databázy som otestoval viacerými spôsobmi so zame- raním na slovníkové dáta. Zistil som, že natívne XML databázy sú oveľa vhodnejšie ako XML-enabled. Medzi natívnymi XML databázami nie je ani jedna vždy najlepšia. Každá má svoje výhody a nevýhody. Využitie konkrétnej XML databázy závisí od jej použitia. Žiadna open source databáza nie je vhodná pre všetky typy použitia.

33

Bibliografia

1. BUKATOVIČ, Martin. Srovnání dostupných implementací XML da- tabází [online]. 2010. Dostupné tiež z: https://is.muni.cz/th/ fichw/. [cit. 10-5-2021]. 2. W3C. Extensible Markup Language (XML) 1.0 (Fifth Edition). 2008. Dostupné tiež z: https://www.w3.org/TR/xml/#sec- well- formed. [Online; cit. 20-11-2020]. 3. BOURRET, R. XML and Databases. 2009. Dostupné tiež z: http: //www.rpbourret.com/xml/XMLAndDatabases.htm#datavdocs. [Online; cit. 20-11-2020]. 4. W3C. XML Path Language (XPath) 2.0 (Second Edition). 2010. Do- stupné tiež z: https://www.w3.org/TR/xpath20/. [Online; cit. 20-11-2020]. 5. W3C. XQuery 3.1: An XML Query Language. 2017. Dostupné tiež z: https://www.w3.org/TR/2017/REC-xquery-31-20170321/. [Online; cit. 20-11-2020]. 6. WIKIPEDIA CONTRIBUTORS. Round-trip format conversion — Wikipedia, The Free Encyclopedia. 2019. Dostupné tiež z: https:// en.wikipedia.org/w/index.php?title=Round-trip_format_ conversion&oldid=876987739. [Online; cit. 20-11-2020]. 7. WIKIPEDIA CONTRIBUTORS. XML database — Wikipedia, The Free Encyclopedia. 2021. Dostupné tiež z: https://en.wikipedia. org/w/index.php?title=XML_database&oldid=1007718236. [Online; cit. 22-2-2021]. 8. W3C. XQuery and XPath Data Model 3.1. 2017. Dostupné tiež z: https://www.w3.org/TR/xpath-datamodel/. [Online; cit. 6-5- 2021]. 9. W3C. XQuery Update Facility 3.0. 2017. Dostupné tiež z: https: //www.w3.org/TR/xquery-update-30/. [Online; cit. 10-5-2021]. 10. AWS Marketplace: Qualcomm Qizx. Dostupné tiež z: https:// aws.amazon.com/marketplace/pp/prodview-b33fuuf5nm2e4. [Online; cit. 20-5-2021].

35 BIBLIOGRAFIA

11. MarkLogic | Data Integration and Data Management Hub. Dostupné tiež z: http://www.marklogic.com. [Online; cit. 20-5-2021]. 12. Home | MonetDB. Dostupné tiež z: https://www.monetdb.org. [Online; cit. 20-5-2021]. 13. MariaDB Enterprise Open Source Database SkySQL MariaDB Cloud | MariaDB. Dostupné tiež z: https://mariadb.com. [Online; cit. 20-5-2021]. 14. Bb2 Database | IBM. Dostupné tiež z: https://www.ibm.com/ products/db2-database. [Online; cit. 20-5-2021]. 15. Microsoft Data Platform | Microsoft. Dostupné tiež z: https://www. microsoft.com/en-us/sql-server. [Online; cit. 20-5-2021]. 16. Database Services | Oracle. Dostupné tiež z: https://www.oracle. com/database/. [Online; cit. 20-5-2021]. 17. Centrum zpracování přirozeného jazyka. [B. r.]. Dostupné tiež z: https://nlp.fi.muni.cz. [Online; cit. 10-5-2021]. 18. RAMBOUSEK, Adam. Lexikografická platforma na vývoj slovní- kových aplikací [online]. 2010 [cit. 2021-05-17]. Dostupné tiež z: https://is.muni.cz/th/f1vtu/. Diplomová práce. Masary- kova univerzita, Fakulta informatiky, Brno. Vedúci práce Aleš HORÁK. [cit. 10-5-2021]. 19. AHISTO. [B. r.]. Dostupné tiež z: https://nlp.fi.muni.cz/ trac/ahisto/. [Online; cit. 10-5-2021]. 20. BOURRET, R. XML / Database Links. 2009. Dostupné tiež z: http: //www.rpbourret.com/xml/XMLDBLinks.htm#Benchmarks. [On- line; cit. 6-5-2021]. 21. XMach-1: A Benchmark for XML Data Management. Dostupné tiež z: https : / / dbs . uni - leipzig . de / en / projekte / XML / XmlBenchmarking.html. [Online; cit. 10-5-2021]. 22. XOO7: applying OO7 benchmark to XML query processing tool. Do- stupné tiež z: https://dl.acm.org/doi/abs/10.1145/502585. 502614. [Online; cit. 10-5-2021]. 23. XMark — An XML Benchmark Project. Dostupné tiež z: https: //projects.cwi.nl/xmark/. [Online; cit. 10-5-2021].

36 BIBLIOGRAFIA

24. XBench - A Family of Benchmarks for XML DBMSs. Dostupné tiež z: https://cs.uwaterloo.ca/~tozsu/ddbms/projects/xbench/ Publications.html. [Online; cit. 10-5-2021]. 25. The Michigan benchmark: towards XML query performance diagnostics. Dostupné tiež z: https://www.sciencedirect.com/science/ article/abs/pii/S030643790400095X. [Online; cit. 10-5-2021]. 26. MemBeR: A Micro-benchmark Repository for XQuery. Dostupné tiež z: https://pages.saclay.inria.fr/ioana.manolescu/ PAPERS/AfanasievManolescuMichiels-XSYM2005.pdf. [Online; cit. 10-5-2021]. 27. eXist-db - The Open Source Native XML Database. Dostupné tiež z: http://exist-db.org/exist/apps/homepage/index.html. [Online; cit. 10-5-2021]. 28. BaseX - The XML Framework. Dostupné tiež z: https://basex.org. [Online; cit. 10-5-2021]. 29. Berkeley DB XML. Dostupné tiež z: https://www.oracle.com/ database/berkeley-db/xml.html. [Online; cit. 10-5-2021]. 30. Sedna XML Database. Dostupné tiež z: https://www.sedna.org. [Online; cit. 10-5-2021]. 31. PostgreSQL: The world’s most advanced open source database. Do- stupné tiež z: https://www.postgresql.org. [Online; cit. 10-5- 2021]. 32. MySQL. Dostupné tiež z: https://www.mysql.com. [Online; cit. 10-5-2021].

37