uporaba tehnologije xquery na primeru iskalnika … · xquery je jezik, ki omogoča povpraševanja...

77
Martin Počkar UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV Diplomsko delo Maribor, avgust 2013

Upload: others

Post on 01-Sep-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

Martin Počkar

UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV

Diplomsko delo

Maribor, avgust 2013

Page 2: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV

Diplomsko delo

Študent: Martin Počkar

Študijski program: univerzitetni študijski program

Računalništvo in informatika

Smer: Informatika

Mentor: izr. prof. dr. Aleš Živkovič

Lektorica: Helena Bradač, univ. dipl. prev.

Page 3: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

I

Page 4: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

II

UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV

Ključne besede: povpraševalni jezik XQuery, iskalnik AmisTV, Saxon, test obremenitve, EPG

UDK: 004.438:004.777(043.2)

Povzetek

V diplomskem delu je predstavljena uporaba povpraševalnega jezika XQuery na primeru iskalnika

po digitalnem televizijskem sporedu (angl. EPG) na storitvi AmisTV 1.5. Skozi delo so predstavljeni

koncepti jezika XQuery in orodja za delo s tem jezikom. Delo predstavi delovanje produkcijskega

iskalnika AmisTV 1.5, ki deluje z uporabo relacijske podatkovne baze in jezika SQL, ter praktično

rešitev iskalnika z uporabo jezika XQuery. Obe rešitvi sta v diplomskem delu primerjani s statistiko,

pridobljeno z izvajanjem testov obremenitve. Delo vsebuje tudi predloge, kako izboljšati

zmogljivosti aplikacij v jeziku XQuery.

Page 5: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

III

USING XQUERY WITHIN THE AMISTV SEARCH ENGINE

Key words: query language XQuery, AmisTV search engine, Saxon, load test, EPG

UDK: 004.438:004.777(043.2)

Abstract

The graduation thesis presents the use of the query language XQuery, by the example of the

AmisTV search engine, which is a search engine for electronic program guide data on digital

television AmisTV 1.5. The concepts of XQuery language and also some tools to work with it are

presented. The thesis defines the main principles of AmisTV search engine, which operates on the

use of relational data base and query language SQL; furthermore the practical solution for the

search engine by using the query language XQuery is presented. Both solutions are tested with

load tests and statistically compared. Consequently, the thesis includes suggestions how to improve

performance of applications in XQuery language.

Page 6: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

IV

KAZALO VSEBINE 1 UVOD ................................................................................................................................. 1

2 OPIS TEHNOLOGIJE XQUERY ...................................................................................... 3

2.1 Uvod ............................................................................................................................. 3

2.2 Izrazi, operatorji ........................................................................................................... 4

2.3 Podatkovni model, tipi ................................................................................................ 9

2.4 Funkcije .................................................................................................................... 12

2.5 XQuery po specifikaciji 3.0 ...................................................................................... 13

2.6 Prednosti tehnologije, primerjava s XSLT in SQL ................................................... 15

3 ORODJA ZA DELO Z XQUERY ............................................................................... 17

3.1 Procesorji XQuery ................................................................................................ 18

3.1.1 Saxon ............................................................................................................. 18

3.1.2 Zorba .............................................................................................................. 18

3.1.3 Apache VXQuery .......................................................................................... 19

3.2 XQuery urejevalniki ............................................................................................. 19

3.2.1 Altova XMLSpy ............................................................................................ 20

3.2.2 <oXygen/> XML ........................................................................................... 21

3.2.3 Editix 2008 .................................................................................................... 24

3.3 Podatkovne baze na osnovi XML in XQuery ....................................................... 24

3.3.1 BaseX ............................................................................................................ 25

3.3.2 eXist-db 2.0 ................................................................................................... 26

4 UPORABA PROCESORJA XQUERY SAXON ............................................................ 28

4.1 Osnovne funkcije procesorja XQuery ................................................................... 28

4.1.1 Analiza ........................................................................................................... 29

4.1.2 Prevajanje ...................................................................................................... 29

4.1.3 Evalvacija ...................................................................................................... 30

4.1.4 Serializacija ................................................................................................... 30

4.2 Procesor Saxon ..................................................................................................... 30

4.3 Uporaba procesorja XQuery Saxon v .NET ......................................................... 32

5 OPIS STORITVE ISKALNIK AMISTV 1.5 ............................................................... 34

5.1 Storitev AmisTV 1.5 ............................................................................................. 34

5.2 Iskalnik AmisTV 1.5 v splošnem ......................................................................... 35

Page 7: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

V

5.3 Iskalnik AmisTV 1.5 podrobneje .......................................................................... 37

6 ISKALNIK AMISTV 1.5 Z UPORABO XQUERY ........................................................ 42

7 TESTIRANJE ZMOGLJIVOSTI ..................................................................................... 47

7.1 Testiranje obremenitve ......................................................................................... 47

7.2 Testno okolje ......................................................................................................... 48

7.3 Testiranje .............................................................................................................. 49

7.3.1 Test 1 – scenarij 1 nad različico z uporabo relacijske podatkovne baze SQL 49

7.3.2 Test 2 – scenarij 2 nad različico z uporabo relacijske podatkovne baze SQL 50

7.3.3 Test 3 – scenarij 3 nad različico z uporabo relacijske podatkovne baze SQL 51

7.3.4 Test 4 – scenarij 1 nad različico z uporabo XQuery...................................... 51

7.3.5 Test 5 – scenarij 2 nad različico z uporabo XQuery...................................... 52

7.3.6 Test 6 – scenarij 3 nad različico z uporabo XQuery...................................... 52

7.4 Povzetek in analiza testov ..................................................................................... 53

8 IDEJE ZA IZBOLJŠAVO ................................................................................................ 55

8.1 Transformacija ali drugačna oblika dokumentov ................................................. 55

8.2 XML podatkovna baza .......................................................................................... 55

8.3 Večnitnost ............................................................................................................. 56

9 SKLEP .......................................................................................................................... 57

VIRI ..................................................................................................................................... 59

PRILOGE ............................................................................................................................ 63

Page 8: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

VI

KAZALO SLIK

Slika 3.1: Altova XMLSpy orodje za odpravljanje napak ("debugger"). ............................ 21

Slika 3.2: <oXygen/> XML Editor - orodje Tree editor. .................................................... 23

Slika 3.3: <oXygen/> XML Editor - vmesnik pomočnika za odpravljanje napak. ............. 23

Slika 3.4: Arhitektura podatkovne baze, osnovane na XML [12]. ...................................... 24

Slika 3.5: Grafični vmesnik BaseX. V zgornji vrstici oken so od leve proti desni aktivirana

okna: Editor, Folder, Map in Plot. V spodnji vrstici oken so od leve proti desni aktivirana

okna: Text, Query info, Table in Tree. ................................................................................ 26

Slika 5.1: Prikaz vnosa iskanja v storitvi iskalnika AmisTV 1.5 - na levi strani lahko z

virtualno tipkovnico ali s črkami na daljinskem upravljalcu vnašamo iskalni niz, v

sredinskem stolpcu pa lahko rezultate omejimo z izbiro žanra ali podžanra. ..................... 36

Slika 5.2: Iskalnik AmisTV 1.5 nam rezultat prikaže v obliki večstranskega seznama

zadetkov. .............................................................................................................................. 36

KAZALO DIAGRAMOV

Diagram 2.1: Hierarhija tipov v XQuery 1.0 in XPath 2.0 [3]. ........................................... 11

Diagram 5.1: Diagram primerov uporabe za AmisTV 1.5. ................................................. 35

Diagram 5.2: Entitetno-relacijski diagram podatkovne baze na AmisTV 1.5..................... 38

Diagram 5.3: Diagram primerov uporabe za produkcijsko rešitev z uporabo relacijske

podatkovne baze SQL. Za iskanje po podatkih EPG je najprej potrebno parsanje. ............ 39

Diagram 5.4: Diagram aktivnosti pri parsanju dokumentov XML na produkcijski različici.

............................................................................................................................................. 39

Diagram 5.5: Poenostavljen prikaz delovanja iskalnika po podatkih EPG na produkcijski

različici. ............................................................................................................................... 41

Diagram 6.1: Izpuščena je potreba po parsanju in zapisovanju podatkov v relacijske tabele.

............................................................................................................................................. 42

Diagram 6.2: Diagram sodelovanja za rešitev iskalnika EPG z uporabo XQuery. ............. 44

Page 9: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

VII

KAZALO TABEL

Tabela 3.1: Primerjalna tabela preizkušenih orodij za delo z jezikom XQuery. ................. 17

Tabela 7.1: Scenarij 1. ......................................................................................................... 49

Tabela 7.2: Scenarij 2. ......................................................................................................... 49

Tabela 7.3: Scenarij 3. ......................................................................................................... 49

Tabela 7.4: Rezultati Test 1. ................................................................................................ 49

Tabela 7.5: Rezultati Testa 2. .............................................................................................. 50

Tabela 7.6: Rezultati Testa 3. .............................................................................................. 51

Tabela 7.7: Rezultati za Test 4. ........................................................................................... 51

Tabela 7.8: Rezultati za Test 6. ........................................................................................... 52

Tabela 7.9: Rezultati testov obremenitve. ........................................................................... 53

KAZALO GRAFOV

Graf 7.1: Časi odgovorov za Test 1. .................................................................................... 50

Graf 7.2: Časi odgovorov za Test 2. .................................................................................... 50

Graf 7.3: Časi odgovorov za Test 3. .................................................................................... 51

Graf 7. 4: Časi odgovorov za Test 4. ................................................................................... 52

Graf 7.5: Časi odgovorov za Test 6. .................................................................................... 53

Page 10: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

VIII

UPORABLJENE KRATICE

API Application Programming Interface

programski vmesnik

CIL Common Intermediate Language

skupni vmesni jezik

CRID Content Reference Identifier

referenčni identifikator vsebine

EPG Electronic Program Guide

digitalni televizijski spored

FTP File Transfer Protocol

protokol za prenos datotek

JAXP Java API for XML Processing

API za procesiranje XML v jeziku Java

JDOM Java Document Object Model

dokumentni objektni model za jezik Java

JSON JavaScript Object Notation

objektna notacija za jezik JavaScript

OQL Object Query Language

objektni povpraševalni jezik

SQL Structured Query Language

strukturiran povpraševalni jezik

STB Set-top Box digitalni sprejemnik

URI Uniform Resource Identifier

enotni označevalnik vira

W3C World Wide Web Consortioum

konzorcij za svetovni splet

XDM XQuery and XPath Data Model

podatkovni model za jezika XQuery in XPath

XML eXtesible Markup Language

razširljivi označevalni jezik

XOM XML Object Model

objektni model za jezik XML

Page 11: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

IX

XQJ XQuery API for Java

API za procesiranje XQuery v jeziku Java

XQL XML Query Language

povpraševalni jezik za XML

XSD XML Schema Definition

shema XML

XSLT Extensible Stylesheet Language Transformations

razširljiv slogovni jezik za transformacije

Page 12: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

1

1 UVOD

Za diplomsko nalogo smo iskalnik po elektronskem televizijskem sporedu (angl. electronic

program guide ali EPG; v nadaljevanju EPG) 1

1. XQuery je dovolj izrazno močna, da lahko v visokonivojski spletni aplikaciji

nadomesti klasičen pristop k podatkom s tehnologijo SQL. Prva teza te naloge je,

da lahko jezik XQuery v takšnih okoliščinah oziroma v danem modelu

enakovredno nadomesti relacijsko podatkovno bazo.

, ki je bil med študijsko prakso v podjetju

Amis d.o.o. razvit s pomočjo povpraševalnega jezika SQL, razvili s pomočjo XQuery,

povpraševalnega jezika za XML, in ob tem še dodobra raziskali ta jezik. S pomočjo tega

bomo skušali jezik XQuery predstaviti kot jezik, ki je zmožen izrazno in zmogljivostno

opravljati naloge povpraševanj v visokonivojskih aplikacijah, hkrati pa kot dostopna

tehnologija z veliko odprtokodnimi rešitvami in pripomočki omogoča nizke stroške

razvoja. Tako lahko postavimo dve tezi:

2. Uporaba tehnologije XQuery ima nižje stroške razvoja in je bolj organska

tehnologija za razvijalca v primerjavi z uporabo relacijske podatkovne baze in

jezika SQL.

Skozi poglavja bomo predstavili tehnologijo XQuery, spoznali orodja za delo z XQuery,

četrto poglavje pa se bo podrobneje osredotočilo na procesor Saxon, ki je bil uporabljen v

praktičnem delu naloge. Naslednja poglavja se osredotočajo na praktično rešitev; peto

poglavje na rešitev, ki je bila razvita v podjetju Amis, šesto poglavje pa se posveti rešitvi v

jeziku XQuery. Ob koncu smo nad obema rešitvama izvedli obremenitvene teste in zbrali

nekaj idej za izboljšave zmogljivosti rešitve z uporabo XQuery.

XML je široko sprejet kot format za shranjevanje dokumentov in kot standardna oblika za

izmenjavo podatkov med aplikacijami, pogosto tudi med različnimi organizacijami. Dobra

sprejetost tehnologije je posledica zmožnosti vzdrževanja kompleksnih informacij in na

drugi strani preprostosti in dostopnosti tehnologije [28].

XQuery kot povpraševalni jezik za XML je funkcionalno močna razširitev tehnologije

XML, saj omogoča povpraševanje po podatkih v večjem številu dokumentov XML in celo

1 Electronic program guide ali EPG je neprestano osveževan seznam celotne televizijske ali radijske vsebine, ki ga zagotavlja ponudnik storitve digitalne televizije [30].

Page 13: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

2

povpraševanje po dokumentih XML na spletu ter s tem ponuja uporabno alternativo

shranjevanju podatkov v relacijske podatkovne baze.

Page 14: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

3

2 OPIS TEHNOLOGIJE XQUERY

2.1 Uvod

XML je vsestranski označevalni jezik, zmožen označevanja informacij v različnih oblikah.

XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti

fizično shranjeni kot dokument XML bodisi so prevedni v XML s pomočjo vmesnega

programja (angl. middleware). Zaradi svoje vsestranskosti omogoča združevanje podatkov

iz dokumentov XML, podatkovnih baz, spletnih strani in mnogih drugih virov [6].

Jezik XQuery je razvila skupina XML query working group oziroma Skupina za razvoj

povpraševalnega jezika XML pod okriljem W3Consortium (v nadaljevanju W3C). W3C

ali World Wide Web Consotium je osrednja mednarodna organizacija za standardizacijo

World Wide Web tehnologij. Osnova za nastanek je bil povpraševalni jezik Quilt, pri

katerem so združili lastnosti številnih drugih jezikov, vključno z XPath 1.0, XQL, XML-

QL, SQL in OQL [5]. Prvi delovni dokumenti za specifikacijo jezika XQuery 1.0 so nastali

februarja 2001, jezik pa je zaživel leta 2007, ko je W3C izdal priporočilo za specifikacijo

1.0. W3C priporočilo (angl. W3C Recommendation) je ekvivalentni dokument, kot

'standard' pri sorodnih organizacijah za standardizacijo. V osnovi je to skupek smernic.

XQuery so podprli IBM, Microsoft in Oracle kot najpomembnejša podjetja, ki se ukvarjajo

z razvojem podatkovnih baz [37]. V začetku leta 2013 je W3C izdal kandidata za

priporočilo za specifikacijo XQuery 3.0 (na začetku znana pod delovnim imenom XQuery

1.1), ki bo nadomestila specifikacijo 1.0.

Omenjena skupina je tesno sodelovala s Skupino za razvoj XSL, ki je razvila XSLT 2.0.

Obe skupini sta skupaj razvili XPath 2.0 [36], ki je neke vrste podjezik jezika XQuery.

XPath je v primerjavi z XQuery izrazno skromnejši jezik, vendar nepogrešljiv del pri

povpraševanju z XQuery. Lahko bi se reklo, da XQuery 1.0 funkcionalno nadgrajuje

XPath 2.0. Kateri koli izraz, ki je sintaktično in semantično pravilen v XPath 2.0, je

pravilen tudi v XQuery 1.0, izvajanje tega izraza pa bo vrnilo enake rezultate.

Specifikacija XQuery 1.0 zajema sledeče:

• Podatkovni model XQuery/XPath (XDM).

Page 15: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

4

• Formalno semantiko XQuery 1.0 in XPath, ki definira statično semantiko jezika

XQuery, vsebuje pa tudi formalni (vendar ne definicijski) opis dinamične semantike.

• Sistem tipov XQuery, ki so definirani z XML Shemo; enaki tipi, kot se uporabljajo

v XQuery, se uporabljajo tudi v XML oziroma v XML Shemi.

• Knjižnico vgrajenih funkcij in operatorjev, ki jih podpira XQuery.

• Ima vsaj dva sintaksna vhoda, prvi je sintaksa, ki je berljiva ljudem, drugi je

sintaksa, ki je bazirana na XML. Sintaksa, definirana v obliki XML, je opisana z

XQueryX [17].

2.2 Izrazi, operatorji

XQuery uporablja XPath sintakso za naslavljanje določenih delov dokumenta XML.

Dopolnjuje ga stavkom SQL podobna skupina stavkov, poimenovana FLWOR (izgovarja

se enako, kot angleška beseda 'flower'), ki je namenjena iteracijam in združevanju

spremenljivk. FLWOR je v jeziku XQuery ekvivalent stavkom SELECT-FROM-WHERE

v jeziku SQL. Izrazi FLWOR so najpomembnejši izrazi in posebnost jezika XQuery, ostali

izrazi so opisani v drugi polovici tega poglavja.

FLWOR sestoji iz petih stavkov:

• FOR – ustvari zaporedje rezultatov (rezultat je ekvivalent SQL vrstici),

• LET – poveže rezultat s spremenljivko,

• WHERE – vsebuje Boolov izraz (angl. Boolean expression), s katerim filtrira

rezultat,

• ORDER BY – uredi rezultate,

• RETURN – konstruira rešitve, ovrednosti se za vsak posamezen rezultat.

Stavek RETURN nam omogoča vračanje rezultatov v obliki novega dokumenta XML,

vseeno pa XQuery ne pozna konstruktov, kot so stavki INSERT, UPDATE, DELETE v

jeziku SQL.

Uporaba povpraševalnega jezika XQuery na primeru trgovskega podjetja z več

poslovalnicami:

Page 16: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

5

"podjetje.xml": <?xml version="1.0" encoding="utf-8" ?> <podjetje> <poslovalnica id="1"> <naslov> <ulica>Prešernova ulica 15</ulica> <postna_stevilka type="xs:integer">2000</postna_stevilka> <posta>Maribor</posta> </naslov> <telefon>02/9876-123</telefon> <email>[email protected]</ email> <cas_poslovanja> <odpiralni>8</odpiralni> <zapiralni>18</zapiralni> </cas_poslovanja> </poslovalnica> <poslovalnica id="2"> <naslov> <ulica>Tržaška cesta 397</ulica> <postna_stevilka type="xs:integer">2000</postna_stevilka> <posta>Maribor</posta> </naslov> <telefon>02/5918-000</telefon> <email>[email protected]</ email>

<cas_poslovanja> <odpiralni>10</odpiralni> <zapiralni>21</zapiralni> </cas_poslovanja> </poslovalnica> <poslovalnica id="3"> <naslov> <ulica>Mariborska cesta 38</ulica> <postna_stevilka type="xs:integer">3000</postna_stevilka> <posta>Celje</posta> </naslov> <telefon>03/1000-000</telefon> <email>[email protected]</ email> <cas_poslovanja> <odpiralni>9</odpiralni> <zapiralni>18</zapiralni> </cas_poslovanja> </poslovalnica> <poslovalnica id="4">

Page 17: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

6

<naslov> <ulica>Dunajska cesta 100</ulica> <postna_stevilka type="xs:integer">1000</postna_stevilka> <posta>Ljubljana</posta> </naslov> <telefon>01/1234-987</telefon> <email>[email protected]</email> <cas_poslovanja> <odpiralni>8</odpiralni> <zapiralni>21</zapiralni> </cas_poslovanja> </poslovalnica> </podjetje>

XQuery za naslavljanje delov dokumenta uporablja izraze s sintakso XPath:

doc("podjetje.xml")/podjetje/poslovalnica/naslov/ulica

Funkcija doc() omogoča odpiranje dokumentov XML, /poslovalnica izbere vse

poslovalnice v dokumentu, z /naslov se premaknemo en nivo globlje po drevesu, z /ulica

pa še za en nivo globlje na element 'ulica'. Klic zgornje funkcije bi vrnil sledeči rezultat:

<ulica>Prešernova ulica 15</ulica> <ulica>Tržaška cesta 397</ulica> <ulica>Mariborska cesta 38</ulica> <ulica>Dunajska cesta 100</ulica>

Raba FLWOR izraza na tem primeru bi izgledala tako:

for $x in doc("podjetje.xml")/podjetje/poslovalnica where $x/naslov/postna_stevilka=2000 order by $x/naslov/ulica return $x/telefon

Stavek for izbere vse elemente, izbrane z izrazom XPath, v spremenljivko x. Stavek where

filtrira elemente na izbor tistih, pri katerih je vrednost elementa postna_stevilka enaka kot

2000, stavek order by določi kriterij, po katerem se rezultati sortirajo, return pa pove, da

naj izraz vrne vse telefon elemente. Zgornji izraz bi vrnil sledeči rezultat:

<telefon>02/9876-123</telefon> <telefon>02/5918-000</telefon>

Page 18: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

7

Izrazi so gradniki vseh povpraševanj v jeziku XQuery. Obstaja več vrst (skupin) izrazov

[18]:

• Primarni izrazi (angl. primary expressions) – literali, imena spremenljivk, opisi

konteksta, konstruktorji, klici funkcij.

• Izrazi poti (angl. path expressions) – locirajo elemente, atribute znotraj

dokumenta XML. Izrazi poti so lahko:

o Relativni (izraz je sestavljen iz enega ali več korakov, ki so med seboj

ločeni z eno ali dvema poševnicama (/ ali //).

o Absolutni (izraz se začne z eno ali dvema poševnicama (/ ali //), opcijsko

(le če smo uporabili dve poševnici) pa se nadaljuje z relativno potjo.

• Izrazi zaporedij (angl. sequence expressions) – operatorji, ki se uporabljajo za

ustvarjanje, filtriranje in kombiniranje zaporedij predmetov. Predmeti so lahko

atomarne vrednosti ali vozlišča.

• Aritmetični izrazi – aritmetični operatorji - seštevanje, odštevanje, množenje,

deljenje in modusi.

• Primerjalni izrazi – operatorji, ki omogočajo primerjave:

o Splošni primerjalni operatorji (=, !=, <, >, <=, >=) – z njimi lahko

primerjamo atomarne vrednosti, zaporedja ali kombinacije teh dveh.

o Vrednostni primerjalni operatorji (eq, ne, lt, gt, le, ge) – z njimi lahko

primerjamo le atomarne vrednosti. Lahko jih nadomestimo s splošnimi

primerjalnimi izrazi.

o Vozliščni primerjalni operator (operator 'is') – le za primerjavo med

vozlišči.

o Primerjalni operatorji za primerjavo zaporedja vozlišč – primerjajo par

vozlišč glede na njihovo mesto v dokumentu. Obstajata dva operatorja:

<<: vrne 'true', če je operand 1 pred operandom 2,

>>: vrne 'true' če je operand 1 za operandom 2.

• Logični izrazi ('and' in 'or' operatorja) – logični izrazi lahko vračajo prazno

zaporedje, zaporedje enega ali več vozlišč ali 'boolean' vrednost.

• Izrazi za ustvarjanje dokumentov XML – konstruktorji, ki omogočajo

ustvarjanje struktur XML znotraj povpraševanj. S konstruktorji lahko

Page 19: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

8

ustvarjamo elemente, atribute, dokumente, tekst, komentarje in procesne

inštrukcije. Poznamo:

o Direktni konstruktorji – vrednosti elementov, atributov itd. so konstante.

Primer direktnega konstruktorja elementov, ki ustvari element z

atributom in nekaj vgnezdenemi elementi:

<oseba emso="0101900500111">

<naziv>

<ime>Martin</ime>

<priimek>Počkar</priimek>

</naziv>

</oseba>

o Računski konstruktorji – klic konstruktorja se začne s tipom vozlišča, ki

ga želimo ustvariti (element, atribut ... itd.), sledi mu ime vozlišča, sledi

pa mu zaviti oklepaj ({}), v katerega se vstavi bodisi fiksna vrednost ali

izraz, iz katerega se vrednost izračuna:

<primer>

<p>EMŠO Martina Počkarja je { data($x/@emso) }</p>

<!--funkcija data() vrača vrednost (vsebino) elementa; več funkcij je

opisanih v poglavju 2.5-->

</primer>

Ta izraz bi vrnil sledeče:

<primer>

<p>EMŠO Martina Počkarja je 0101900500111 }</p>

</primer>

• Izrazi FLWOR– opisani v začetku tega poglavja.

• Izrazi razvrščanja – urejajo zaporedje vračanja rezultatov nekaterih izrazov poti.

Nimajo povezave z 'order by', ki spada med izraze FLWOR.

• Pogojni izrazi (if, else, then stavki).

• Kvantifikatorski izrazi (every, some):

Page 20: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

9

o Kvantifikator 'some' vrne true, če je izraz, na katerega vpliva

kvantifikator, vsaj enkrat v povpraševanju resničen, torej vrača vrednost

'true'.

o Kvantifikator 'every' vrne 'true', če je izraz, na katerega vpliva

kvantifikator, v vsakem primeru resničen in torej vrača vrednost 'true'.

• Izrazi tipa zaporedja (operatorja 'instance of' in 'cast as').

2.3 Podatkovni model, tipi

XQuery 1.0 in XPath 2.0 Data Model ali krajše XDM je formalni podatkovni model za

jezik XQuery. XDM hkrati definira sledeče:

• vse dovoljene vrednosti izrazov,

• vse dovoljene vrednosti pri vmesnih kalkulacijah,

• vse dovoljene vrednosti, ki jih vrača izraz.

To pomeni, da je vsak vhod, vsak izhod in vsaka vmesna kalkulacija instanca

podatkovnega modela XDM.

Parsanje podatkov XML v XDM in validiranje po shemi se izvede pred procesiranjem

XQuery. Med generiranjem podatkovnega modela se dokument XML parsa v XDM

instanco.

Na kratko bi lahko XDM podatkovni model opisali kot zaporedje predmetov (angl. items),

ki so bodisi atomarne vrednosti bodisi vozlišča, torej je to zaporedje (angl. sequence)

zbirka nič ali več atomarnih vrednosti ali vozlišč. Atomarna vrednost (angl. atomic value)

je tista, ki ima vrednost atomarnega tipa. Atomarni tip (angl. atomic type) je primitivni tip

(angl. primitive simple type) ali tip, ki je derivat drugega atomarnega tipa.

Pomembna lastnost modela je, da ne razlikuje med predmetom in zaporedjem, ki vsebuje

ta predmet. Predmet je ekvivalenten zaporedju, ki vsebuje le ta isti predmet, in obratno.

V XDM obstaja sedem različnih tipov vozlišč:

• dokument,

Page 21: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

10

• element,

• atribut,

• tekst,

• namespace,

• procesna inštrukcija,

• komentar.

Vsako vozlišče v modelu ima svojo unikatno identiteto, ki ga razlikuje od vseh ostalih

vozlišč, četudi so ta vozlišča sicer identična.

Na drugi strani se atomarne vrednosti nanašajo na preproste tipe (angl. simple types), ki so

definirani v W3C priporočilu XML Shema, Part 2. Preprosti tipi so string, Boolean,

decimal itd. Točna sestava tipov po podatkovnem modelu XDM je prikazana v Diagramu

2.1:

Page 22: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

11

Diagram 2.1: Hierarhija tipov v XQuery 1.0 in XPath 2.0 [3].

Page 23: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

12

2.4 Funkcije

XQuery vključuje številne vgrajene funkcije, ki omogočajo upravljanje z numeričnimi

vrednostmi, nizi, upravljanje z vozlišči in podobno. XQuery 1.0, XPath 2.0 in XSLT 2.0 si

delijo knjižnico definiranih funkcij. Moč jezika XQuery pa leži tudi v možnosti definiranja

uporabniško definiranih funkcij.

V primerjavi z jezikom SQL so pomembnejše funkcije min (arg, arg, ...), max (arg, arg,

...), count (arg, arg, ...) in avg (arg, arg, ...), saj nudijo enake funkcionalnosti kot funkcije

SQL. Najpomembnejša funkcija XQuery pa je doc (URI), ki omogoča naslavljanje in

odpiranje dokumentov XML. Primer klica funkcij doc() in substring():

doc(''dokument.xml'')/podatki/naslov[substring(ulica,1,3)='Smetanova']

Funkcije se lahko v grobem razdeli na naslednje kategorije [16]:

• upravljanje z nizi, npr. substring, contains, concat,

• regularni izrazi, npr. matches, replace,

• aritmetične funkcije, npr. count, sum, avg, min, max,

• lastnosti vozlišč, npr. name, node-name,

• upravljanje z dokumenti, npr. doc, doc-available.

Uporabniško definirane funkcije se lahko definirajo znotraj povpraševanja ali v ločeni

knjižnici. Funkcija se definira na sledeč način:

declare function prefix:ime_funkcije($parameter AS tip_parametra)

AS return tip_funkcije

{

...telo funkcije...

}

Preprost primer uporabniško definirane funkcije:

declare function local:kvadratna_potenca ($x as xs:double)

as xs:double {

Page 24: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

13

<result>{$x*$x}</result>

};

2.5 XQuery po specifikaciji 3.0

Specifikacija XQuery 3.0 je trenutno v fazi kandidata za priporočilo, kar pomeni, da bo

postala tudi uradno W3C priporočilo [32], ko bo specifikacija široko sprejeta in bo

zadovoljevala vse tehnične zahteve. To se utegne zgoditi v kratkem, zato je primerno, da

predstavimo razlike specifikacije XQuery 3.0 od prvotne različice XQuery 1.0.

Predstavili bomo izbor najbolj bistvenih sprememb:

• Group by stavek v FLWOR izrazih – stavek generira zaporedje izhodnih

rezultatov, pri čemer je vsak rezultat skupina tistih vhodnih podatkov, ki imajo

skupen grupacijski ključ [21].

• Window stavek v FLWOR izrazih – stavek iterira prek vezanega zaporedja

(angl. binding sequence; predstavlja vrednost izraza, ki sledi besedi 'in' – npr. for

$x in $expr) in generira zaporedje rezultatov. Vsak rezultat predstavlja okno.

Okno je zaporedje elementov, zaporedno povlečenih iz vezanega zaporedja.

Vsako okno je določeno z najmanj eno in največ devetimi spremenljivkami.

Imena spremenljivk so sicer uporabniško-specifična, vendar so njihove vloge

sledeče (namenoma bomo uporabili angleška poimenovanja, ki jih uporablja

W3C, saj bi se med prevodom utegnil pomen izgubiti):

o Window-variable – vezana na zaporedje elementov iz vezanega

zaporedja in omejujejo okno.

o Start-item – vezana na prvi element v oknu.

o Start-item-position – vezana na zaporedno pozicijo prvega okenskega

elementa v vezanem zaporedju in je tipa xs:integer.

o Start-previous-item – vezana na element v vezanem zaporedju, ki ima

zaporedno pozicijo pred prvim elementom v oknu.

o Start-next-item – vezana na element v vezanem zaporedju, ki sledi

prvemu elementu v oknu.

Page 25: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

14

o End-item – vezana na zadnji element v oknu.

o End-item-position – vezana na zaporedno pozicijo zadnjega okenskega

elementa v vezanem zaporedju in je tipa xs:integer.

o End-previous-item – vezana na element v vezanem zaporedju, ki ima

zaporedno pozicijo pred zadnjim elementom v oknu.

o End-next-item – vezana na element v vezanem zaporedju, ki sledi

zadnjemu elementu v oknu [21].

• Stavek count v FLWOR izrazih – stavek se navezuje na zaporedno pozicijo

vsakega rezultata v zaporedju rezultatov. Zaporedje vhodnih podatkov je enako

kot zaporedje izhodnih rezultatov s to razliko, da so izhodni rezultati

opremeljeni z dodatno spremenljivko, ki prikazuje zaporedno pozicijo tega

rezultata v zaporedju rezultatov [21].

• Try/catch izrazi – zagotavljajo upravljanje z napakami, ki nastanejo zaradi napak

pri uporabi tipov ali med dinamično evalvacijo. Podobno kot v visokonivojskih

jezikih Java ali C++/C#, try/catch izrazi s catch stavki 'lovijo' napake, ki so

leksikalno vsebovane v try stavku [21].

• Deklaracija funkcij kot private ali public.

• Možnost dinamičnih klicov funkcij.

• Izraz switch – izraz, dobro poznan iz drugih jezikov, pri katerem ključni besedi

switch sledi switch operand, ki se nato primerja s case operandi. Če noben

switch operand ne ustreza case operandu, je vrednost izraza enaka privzetemu

stavku [21].

Page 26: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

15

2.6 Prednosti tehnologije, primerjava s XSLT in SQL

Osnovne prednosti tehnologije XQuery so [34]:

• Izraznost – jezik XQuery lahko vrši povpraševanja nad različnimi podatkovnimi

strukturami, s svojo dobro podporo rekurziji pa je naravni jezik za povpraševanje

po drevesnih strukturah in grafih.

• Jedrnatost – stavki v jeziku XQuery so krajši kot podobni stavki, napisani v

jezikih SQL ali XSLT

• Fleksibilnost – v jeziku XQuery lahko povprašujemo po hierarhičnih kot tudi

tabeliranih podatkih.

• Konsistentnost – jezik XQuery ima konsistentno sintakso, ki jo je možno uporabiti

tudi s sintakso drugih standardov XML, kot naprimer podatkovni tipi XML Sheme.

Za razliko od jezika SQL, ki vrača tabele, jezik XQuery vrača drevesno strukturo

podatkov. To nam omogoča, da neposredno ustvarjamo XHTML strukture, ki jih nato

lahko uporabimo za spletne strani. XQuery je namenjen objektnim podatkovnim bazam na

osnovi tehnologije XML, objektne baze pa pred podatkovnimi bazami, ki shranjujejo

tabelirane podatke, prednjačijo po svoji fleksibilnosti.

XQuery je lahko razumljiv in enostaven za učenje za vsakogar, ki pozna jezik SQL. Mnogi

konstrukti so v obeh jezikih podobni:

• urejanje rezultatov – oba jezika poznata 'order by' stavek,

• izbiranje določenih vrednosti – oba jezika lahko na enostaven način povprašujeta

po točno določenih vrednostih,

• razločevanje vrstic – oba jezika poznata 'where' stavek.

Velika prednost jezika XQuery pred jezikom SQL je v tem, da je XQuery naravni jezik za

svetovni splet. Uporabnik lahko z jezikom XQuery povprašuje po spletnih straneh, česar

mu jezik SQL ne omogoča. Tudi če uporablja podatkovno bazo na osnovi SQL, kamor

shranjuje HTML/XHTML strani ali dele strani, bo izgubil veliko prednosti, ki jih nudi

preprosto iskanje po oznakah in atributih.

Page 27: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

16

Kot že napisano je XQuery jezik, ki je zlahka razumljiv nekomu, ki pozna jezik SQL, kar

pa ne velja za jezik XSLT. Ta vsebuje veliko principov, ki se bodo zdeli nenaravni

marsikateremu razvijalcu, vajenemu proceduralnih jezikov.

Na eni strani je XSLT dober za statične transformacije enega tipa dokumentov v drugega,

na drugi strani pa je XQuery dosti bolj dinamičen povpraševalni jezik, primeren za iskanje

podatkov iz velikih dokumentov oziroma iz velike količine dokumentov.

XSLT 2.0 in XQuery 1.0 sta bila razvita v tesnem sodelovanju obeh delovnih skupin, zato

je kljub razlikam med jezikoma veliko prekrivajočih funkcionalnosti [15] in tako si delita

sledeče koncepte:

• podatkovni model XDM,

• funkcije in operatorje,

• formalno semantiko,

• serializacijo [31].

Page 28: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

17

3 ORODJA ZA DELO Z XQUERY

Z uveljavitvijo jezika XQuery se je pojavila tudi ponudba orodij za delo s tem jezikom.

Razdelili smo jih na procesorje, urejevalnike in podatkovne baze na osnovi jezikov XML

in XQuery. V tem poglavju se ne bomo osredotočali na tehnične rešitve orodij, ampak na

uporabnost in namen teh – izbrana orodja smo tudi preizkusili in primerjali, kar prikazuje

Tabela 3.1:

Tabela 3.1: Primerjalna tabela preizkušenih orodij za delo z jezikom XQuery.

Procesorji

Ime orodja Proizvajalec Licenca Podprte

platforme

Saxon Saxonica

Saxon-HE odprtokodna;

licence za plačljive

izvedenke od 50 £ naprej Java, .NET

Zorba Skupina s podporo

FLWOR Foundation Odprtokodna

C++, C, C#,

Java, PHP,

Python, Ruby

VXQuery Skupina pod okriljem

Apache Inkubatorja Odprtokodna Java

Urejevalniki

Ime orodja Proizvajalec Licenca

XMLSpy Altova Professional Edition 399$;

Enterprise Edition 799$

<oXygen/>

XML SyncRo Soft

Academic Edition 99$;

Professional Edition 488$;

Enterprise Edition 698$

Editix 2008 JAPISoft

Editix 2008 brezplačna;

Editix 2013 Small Business 79$;

Editix 2013 Enterprise 139$

Page 29: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

18

Podatkovne baze na osnovi XML in XQuery

Ime orodja Proizvajalec Licenca

BaseX

BaseX GmbH, podjetje

raziskovalcev Univerze v

Konstanzu

Odprtokodna

eXist-db 2.0 eXist Solutions GmbH Odprtokodna;

Opcijsko doplačilo za uporabniško podporo

3.1 Procesorji XQuery

3.1.1 Saxon

Saxon je implementacija standarda XQuery podjetja Saxonica, napisana v Javi in omogoča

delo z jezikom XQuery v javanskih aplikacijah. Sprva je bil to procesor XSLT, ki se mu je

kasneje dodala tudi podpora za XQuery. Saxon poleg XQuery 1.0 implementira XSLT 2.0,

XPath 2.0, XML Schema 1.0, podpira pa tudi prihajajoči XQuery 3.0, ki je trenutno

kandidat za priporočilo (candidate recommendation) [13].

Implementacija je spisana v čisti Javi in je torej platformsko široko uporabna, obstaja pa

tudi .NET različica, ki pa je v bistvu prevedena javanska bajtna koda. Saxon je na voljo v

več različicah, od katerih je ena prostodostopna in odprtokodna. Za namene te naloge smo

uporabili in preizkusili odprtokodno različico Saxon-HE 9.3, prevedeno za .NET. Več o

Saxonu je opisano v četrtem poglavju te naloge.

3.1.2 Zorba

Zorba je odprtokodni procesor XQuery, napisan v programskem jeziku C++. Projekt med

drugim podpira tudi FLWOR Foundation in Oracle. Čeprav je spisan v C++, ima širok

nabor programskih vmesnikov (angl. application programming interface ali API;

Page 30: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

19

opredeljuje, kako naj določene programske komponente interaktirajo med seboj - v praksi

so to knjižnice oziroma nabor knjižnic, ki specificira rutine, podatkovne tipe, razrede in

spremenljivke [35]) in je tako na voljo iz številnih programskih jezikov, npr. C++,C, C#,

Java (z ali brez XQuery API for Java), PHP, Python in Ruby.

Procesor poleg XQuery kot povpraševalnega jezika za XML podpira še povpraševalni

jezik JSONiq za JSON (JavaScript Object Notation – standard za izmenjavo berljivih

podatkov). XQuery in JSONiq si delita podobno semantiko, tako pri obeh veljajo izrazi

FLWOR, oba uporabljata jezik XPath za navigacijo, tudi tipi in operacije so pri obeh

jezikih enake. Tako si v procesorju Zorba oba jezika delita isti prevajalnik.

3.1.3 Apache VXQuery

Apache VXQuery je procesor XQuery, implementiran v programskem jeziku Java, ki je

trenutno še v fazi razvoja in se nahaja v Apachejevem Inkubatorju (angl. Apache

Incubator). Apache Incubator je vstopna točka v The Apache Software Foundation (ASF)

za vse projekte, ki želijo pridobiti podporo fundacije. Vsi zunanji projekti v fundacijo

vstopijo skozi ta inkubator [29]. Razvoj procesorja se osredotoča na izvrševanje

povpraševanj nad veliko količino podatkov XML, prav posebej na izvrševanje

povpraševanj nad velikimi zbirkami relativno majhnih dokumentov XML [2].

3.2 XQuery urejevalniki

Urejevalniki so celovita orodja, ki ponujajo pomoč pri pisanju programske kode jezika

XQuery v smislu barvnega označevanja programske kode, številčenja vrstic in

samodejnega zapiranja posameznih sklopov programske kode (angl. source folding),

pomoč pri vnašanju, vgrajene validatorje in vgrajene procesorje, ki omogočajo izvrševanje

kode jezika XQuery nad datotekami XML ali podatkovnimi bazami, ki omogočajo

povpraševanja v jeziku XQuery.

Page 31: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

20

3.2.1 Altova XMLSpy

XMLSpy je priljubljeno in zelo razširjeno orodje avstrijskega podjetja Altova, ki omogoča

modeliranje, urejanje, transformiranje in odpravljanje napak v širokem spektru tehnologij

XML. Poleg podpore jezikom XSLT 2.0, XPath 2.0 in XQuery 1.0 omogoča tudi

integracijo v Microsoftov Visual Studio in javansko razvojno okolje Eclipse.

Licenca za XMLSpy 2013 je plačljiva, za preizkus delovanja in funkcionalnosti pa so na

voljo brezplačne 30-dnevne preizkusne različice. Za namen te naloge smo preizkusili

preizkusno različico cenejše izvedenke Professional Edition, ki vključuje večino

funkcionalnosti dražje izvedenke Enterprise Edition.

Kot drugi podobni urejevalniki tudi XMLSpy razvijalcu pomaga z barvnim označevanjem

programske kode, številčenjem vrstic in samodejnim zapiranjem posameznih sklopov

programske kode. Za sintaktično pravilnost kode med shranjevanjem skrbi validator, za

pravilno in hitrejšo pisanje kode pa je na voljo pomočnik, ki ponuja imena elementov

XML, že definiranih spremenljivk, funkcij (vključno s prikazom tipov in števila

argumentov). Močno orodje je tudi pomočnik za odpravljanje napak (angl. debugger), ki

po vzoru orodij za razvoj aplikacij v visokonivojskih jezikih omogoča vpogled v proceduro

kode po principu korak-za-korakom (angl. step-by-step debugging), ki predstavlja metodo

odpravljanja napak, pri kateri se izvaja le ena programska vrstica naenkrat, ali z uporabo

točke ustavljanja (angl. breakpoint), ki je točka v programski kodi, na kateri namenoma

ustavimo izvajanje za namene odpravljanja napak. Potek opazujemo v štirih oknih – v

prvem vidimo dokument s povpraševanjem XQuery z morebitnimi točkami ustavljanja, v

drugem lahko opazujemo vrednost spremenljivk, tretje okno nam prikazuje sklad klicev

(angl. call stack)2

2 Sklad, ki kaže na mesto, od koder je bila neka rutina poklicana in s tem zagotavlja informacijo, kam mora ta rutina predati izvajanje. Ta sklad se uporablja pri rekurzivnih klicih rutin ali v situaciji, ko rutina kliče drugo rutino.

. To tretje okno je možno prilagoditi, da prikazuje druge informacije,

zadnje, četrto okno, pa sproti izpisuje trenutni kontekst (rezultat) v obliki dokumenta

XML. To orodje je dodelano in nudi dober vpogled v proceduro – v primeru izvrševanja

povpraševanj XQuery razvijalec lahko celo vidi, do katerih delov dokumenta XML

procedura trenutno dostopa.

Page 32: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

21

Slika 3.1 prikazuje vmesnik pomočnika za odpravljanje napak v urejevalniku Altova

XMLSpy 2013:

Slika 3.1: Altova XMLSpy orodje za odpravljanje napak ("debugger"). XMLSpy je standardno in kvalitetno orodje za delo s tehnologijami XML, ki se je v

različici 2013 znebilo številnih napak preteklih različic, čeprav bi se tudi na tem področju

dalo narediti še več (med preizkusom se je program sesul brez očitnega vzroka).

3.2.2 <oXygen/> XML

Urejevalnik <oXygen/> XML podjetja SyncRO Soft je na voljo v treh različicah, pri

katerih že ime namiguje, čemu je katera namenjena [20]:

• <oXygen/> XML Editor – celovito orodje za razvijanje aplikacij XML in

urejanje dokumentov XML,

• <oXygen/ > XML Developer – specializirano orodje za razvijalce XML,

• <oXygen/> XML Author – poenostavljena različica Editor, osredotočena na

urejanje dokumentov XML.

Page 33: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

22

Vsaka od različic je na voljo v Professional in Enterprise verziji, različica Editor pa

prihaja tudi v različici Academic, namenjeni študentom in izobraževalnim ustanovam.

Preizkusili smo brezplačno 30-dnevno različico oXygen/> XML Editor Academic.

Poleg klasičnih funkcionalnosti, kot so barvno označevanje programske kode, številčenje

vrstic in samodejno zapiranje posameznih sklopov programske kode, je zelo uporabna

funkcionalnost okno, poimenovano Outline, ki v skrčenem in preglednem načinu prikazuje

dokument, ki ga urejamo, vključno z deklaracijami imenskih področij, spremenljivkami in

funkcijami. Za razliko od XMLSpy, kjer je večina funkcionalnosti dostopna prek številnih

tekstovnih menijev, se <oXygen/> XML ponaša z veliko bolj grafičnim vmesnikom, ki

sicer zahteva nekaj trenutkov privajanja, vendar pa razvijalcu ponuja veliko bolj intiutivno

izkušnjo ter omogoča veliko možnosti grafičnega urejanja dokumentov (npr. orodje Tree

editor, ki omogoča urejanje in izdelavo dokumentov XML prek zelo preglednega in

razumljivega grafičnega vmesnika). Validacija je z vsemi temi pripomočki sprotna in

trivialna. Pomočnik za odpravljanje napak, ki je tukaj neke vrste 'podprogram' in zahteva

zamenjavo uporabniškega pogleda, je morda šibkejša točka tega urejevalnika – omogoča

sicer točke ustavljanja in pristop korak-za-korakom, vendar je pri prikazu poteka procedure

manj natančen kot XMLSpy – ima pa na drugi strani določene uporabne funkcionalnosti,

ki jih XMLSpy ne omogoča. Naprimer s klikom vrstico v izhodnem dokumentu (ki ga je

generiralo povpraševanje XQuery) nam program prikaže vrstico v povpraševalni kodi, ki je

generirala izhodno vrstico. Na voljo je XQuery Profiler, ki je pri XMLSpy na voljo le v

Enterprise različici, ki omogoča razvijalcu, da identificira ozka grla in druge

problematične dele programske kode.

Naslednja Slika 3.2 prikazuje orodje Tree editor, Slika 3.3 pa prikazuje vmesnik orodja za

odpravljanje napak v urejevalniku <oXygen> XML Editor:

Page 34: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

23

Slika 3.2: <oXygen/> XML Editor - orodje Tree editor.

Slika 3.3: <oXygen/> XML Editor - vmesnik pomočnika za odpravljanje napak.

<oXygen/> XML je doraslo orodje, ki s kvalitetnim grafičnim vmesnikom ponuja dobro

uporabniško izkušnjo. Med preizkusno uporabo nismo opazili nobenih napak v delovanju,

Page 35: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

24

tako da je ta urejevalnik prav gotovo dober pripomoček za vsakega razvijalca XML in

XQuery.

3.2.3 Editix 2008

Odločili smo se poiskati brezplačen urejevalnik in preizkusili Editix 2008. Program je sicer

plačljiv v novejših različicah, nekaj let staro različico Editix 2008 z omejenimi določenimi

funkcionalnostmi pa je možno brezplačno prenesti z njihove spletne strani.

Razporejenost ukazne vrstice je zelo podobna kot pri XMLSpy, se pa takoj opazijo

nekatere manjkajoče funkcionalnosti – pri urejanju dokumentov XML ni številčenja vrstic,

ni možnosti samodejnega zapiranja posameznih sklopov programske kode, programska

koda pa je označena v tako neizrazitih barvah, da jih je med seboj težavno ločiti. Na spletni

strani proizvajalec navaja, da je v tej različici omogočeno urejanje povpraševanj XQuery,

vendar je ta možnost v programu zaklenjena, zato je ta program za naš kontekst

popolnoma neuporaben.

3.3 Podatkovne baze na osnovi XML in XQuery

Preden se lotimo opisovanja konkretnih implementacij podatkovnih baz na osnovi XML,

bomo najprej predstavili koncept podatkovni baz, osnovanih na XML.

Slika 3.4 prikazuje arhitekturo podatkovne baze, osnovane na XML:

Slika 3.4: Arhitektura podatkovne baze, osnovane na XML [12].

Page 36: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

25

Stolpci, ki jih vidimo v Sliki 3.4, so virtualni, niso fizično shranjeni in jih nakazujejo le

glave stolpcev. Glavna tabela vsebuje številčne ključe do indeksov oznak, URI (angl.

Uniform resource identifier; zaporedje znakov, ki identificira abstraktni ali fizični vir [4])

naslovi imenskih področij in imen atributov. Besedila (vključno s procesnimi

inštrukcijami, komentarji, in URI naslovi vozlišč) in vrednosti atributov so shranjeni v

ločenih tabelah, ki so referencirane v glavni tabeli. Tabela Directory vsebuje kazalce na

prvi identifikator vozlišča v vsaki glavni tabeli. Več podatkov je shranjenih kot Meta Data,

kot naprimer ime podatkovne baze, velikost, datum zadnje spremembe, globina drevesa in

podobno. Drevo zagotavlja dostop do imenskih področij.

3.3.1 BaseX

BaseX je prostodostopna, odprtokodna in platformsko neodvisna rešitev, katere osrednja

funkcionalnost je čistokrvna podatkovna baza, osnovana na XML. Programu je že

priložena podatkovna baza, poimenovana factbook.xml, ki novemu uporabniku omogoča,

da se seznani s funkcionalnostmi programa. Obširnih funkcionalnosti program ne omogoča

– grafični vmesnik omogoča vklapljanje in izklapljanje posameznih oken, od katerih je

osrednje okno Editor, ki omogoča urejanje dokumentov XML ali vpisovanje povpraševanj

XQuery in jih izpisuje v okno Text z možnostjo izpisa v realnem času. Ostala okna so

posvečena pregledu podatkov v podatkovni bazi in pregledu rezultatov povpraševanj.

Podatkovno bazo lahko pregledujemo v dveh različnih drevesnih načinih, prvi je

poimenovan Folder, drugi pa Tree. Podatke v tabelirani obliki nam zagotavlja okno Table,

okno Plot pa omogoča številne različne grafirane prikaze podatkov podatkovne baze. Okno

Map uporabniku ponuja tabelarni pogled, ki sledi arhitekturi podatkovne baze.

Uporabniške akcije v enem oknu (tudi hover3

3 Mouse hover je premik kazalca miške nad določenim delom uporabniškega vmesnika.

prek določenega podatka) sprožijo akcije

tudi v drugih oknih in sproti prikazujejo ustrezne podatke. Statistične in performančne

podatke o povpraševanju XQuery nam izpisuje okno Query info. Zanimivo pri tem

programu je, da ima poleg možnosti iskanja s pomočjo povpraševanj XQuery na voljo tudi

svoj lasten iskalnik za manj vešče uporabnike.

Page 37: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

26

Naslednja Slika 3.5 prikazuje grafični vmesnik podatkovne baze BaseX in razlaga

posamezne elemente grafičnega vmesnika:

Slika 3.5: Grafični vmesnik BaseX. V zgornji vrstici oken so od leve proti desni aktivirana okna:

Editor, Folder, Map in Plot. V spodnji vrstici oken so od leve proti desni aktivirana okna: Text,

Query info, Table in Tree.

Na spletni strani http://docs.basex.org/wiki/Main_Page je na voljo zelo razumljiv Wiki

dokument in uporabnik lahko hitro ugotovi, da gre za preprost in precej neposreden

program brez zapletenih funkcionalnosti in obsežnega vmesnika.

3.3.2 eXist-db 2.0

eXist-db je odprtokodna rešitev podatkovne baze, osnovane na jeziku XML, napisana v

Javi, ki je v paketu brez uporabniške podpore brezplačno snemljiva s spletne strani.

Grafični vmesnik aplikacije uporabljamo prek spletnega brskalnika prek lokalnega ali

oddaljenega strežnika. Osrednja točka grafičnega vmesnika je nadzorna plošča, ki

Page 38: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

27

omogoča izvajanje različnih nalog, kot so nalaganje podatkov v podatkovno bazo in

upravljanje uporabniških računov, vključuje pa tudi aplikacijo eXide za povpraševanje po

podatkih v bazi in ustvarjanje lastnih aplikacij XQuery [9].

eXist-db ni le podatkovna baza, saj omogoča razvoj modularnih aplikacij, ki so enostavno

prenosljive na katerokoli podatkovno bazo, ki uporablja enako standardizacijo formata

modularnih paketov [8].

Gre za ambiciozno orodje, ki z možnostjo modularnega dopolnjevanja ali izvažanja lastno

kreiranih modulov in z upravljanjem prek strežnika nudi napredno izkušnjo. Vmesnik je

uporabniku prijazen, tudi navodila za uporabo so dovolj razumljiva tudi za popolnoma

novega uporabnika, se pa občasno pojavljajo manjše napake, ki pa so bolj v obliki

nejasnega delovanja vmesnika, kot pa kakšnih kritičnih napak. Kot smo že v prejšnjem

odstavku navedli, ne gre samo za podatkovno bazo, saj aplikacija nudi številne primere

uporabe, na katerih se lahko učimo upravljati podatkovno bazo in uporabljati jezik

XQuery, na spletni strani http://exist-db.org/exist/apps/doc/learning-xquery.xml pa celo

navajajo, da aplikacija eXide omogoča tudi razvojno obliko korak za korakom pomoči pri

odpravljanju napak, vendar te funkcionalnosti med preizkusom ni bilo mogoče aktivirati.

Page 39: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

28

4 UPORABA PROCESORJA XQUERY SAXON

V tem poglavju bomo predstavili eno trenutno najbolj aktualnih orodji za delo z jezikom

XQuery v visokonivojskih jezikih Java in jezikih okolja .NET, to je procesor Saxon

podjetja Saxonica, namenjen procesiranju jezikov XQuery, XSLT in XPath. Saxon je v

letih svojega obstoja pridobil status hitrega in zanesljivega orodja, ki v veliki meri spoštuje

W3C specifikacije jezikov.

4.1 Osnovne funkcije procesorja XQuery

Procesorji XQuery so sistemi za efektivno pridobivanje in hranjenje podatkov XML,

pridobljenih z jezikom XQuery. Tipičen procesor XQuery vsebuje:

• Podatkovni model.

• Povpraševalni model, ki definira, kako se povpraševanja procesirajo.

• Optimizacijski modul, ki vsebujejo različne algoritme in indeksacijske

tehnike za izboljšanje zmogljivosti procesiranja povpraševanj [11].

XQuery je v osnovi predstavljen kot preprost niz znakov, zato so potrebne tehnike

prevajanja, da tak niz prevedemo v izvršljivo kodo. Pri procesiranju povpraševanj sta

bistveni dve fazi:

• Statična analiza, ki se lahko nadalje razdeli v:

o analiza,

o prevajanje.

• Dinamična evalvacija, ki se lahko nadalje razdeli v:

o evalvacija,

o serializacija [12].

Page 40: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

29

4.1.1 Analiza

Preden se povpraševanje lahko izvrši, mora biti vhodni niz interpretiran in trasformiran v

izvršljivo podatkovno obliko. Pri tem se uporablja leksikalna analiza, ki kot rezultat

generira leksikalne simbole [38]. V naslednjem koraku se skozi sintaktično analizo s

pomočjo gramatike generira drevo izrazov. XQuery in vsa ostala W3C priporočila

temeljijo na EBNF notaciji (angl. Extended Bacus-Naur form; metajezik za opisovanje

drugih jezikov [38]) in so lahko razpoznana z LL(1) razpoznavalnikom4

Razpoznavalnik izvede sledeče korake:

.

1. Ustvarjanje statičnega konteksta – vsebuje globalne informacije o

povpraševanju, kot recimo imenska področja, spremenljivke, funkcije ali statični

dokumenti.

2. Vhod je analiziran in pretvorjen v izraze, ki skupaj tvorijo drevo izrazov.

3. Sprožijo se razpoznavalne napake, če vhod ne ustreza LL(1) gramatiki ali

dodatnim gramatičnim omejitvam.

4. Ker lahko funkcija kliče drugo funkcijo, ki še ni bila definirana v povpraševanju,

se vse funkcije verificirajo po razpoznavanju celotnega povpraševanja.

4.1.2 Prevajanje

V XQuery 1.0 je definirana formalna semantika, vendar se zaradi komplesnosti jezika ta v

specifikaciji XQuery 3.0 opušča. Vse implementacije lahko izberejo svoje korake

prevajanja, v kolikor rezultati povpraševanja izpolnjujejo zahteve specifikacije.

Prevajanje vsebuje korake, ki poenostavljajo in optimizirajo drevo izrazov:

• Statične operacije so pred-ocenjene.

• Izrazi se prepišejo, če so njihovi argumenti vedno true ali false.

• Izrazi FLWOR in definicije poti se poenostavijo.

• Predikati se prepišejo za dostop do prostih struktur indeksacije.

4 LL(1) razpoznavalnik (angl. parser) je top-down razpoznavalnik, ki razpoznava vhod iz leve proti desni.

Page 41: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

30

• Neznane oznake ali atributi se odstranijo.

• Preverjanje statičnih tipov se izvede še preden je povpraševanje evalvirano.

4.1.3 Evalvacija

V koraku evalvacije se izračuna zaporedje rezultatov izraza. Za preprosta statična

povpraševanja se vsi potrebni računski koraki izračunajo pri prejšnjem koraku

optimizacije, vsa ostala kompleksnejša dinamična povpraševanja pa se izračunajo v tem

koraku.

4.1.4 Serializacija

Ko se izraz izračuna, je potreben še korak serializacije, ki rezultat transformira v breljiv

format. Ta proces je prav tako formaliziran v priporočilu W3C za specifikacijo XQuery

1.0, čeprav ta del ni obvezen za implementacijo XQuery. V takšnih primerih procesor

preda rezultat v objektni obliki, naprimer v izvajanje javanskemu navideznemu stroju

(angl. Java Virtual Machine).

.

4.2 Procesor Saxon

Saxon je implementacija procesorja XQuery, napisana v Javi. Podpira XQuery po

specifikaciji 1.0, aktualna različica Saxon 9.5 pa celo podpira XQuery po kandidatu za

priporočilo 3.0 [13] [25].

Saxon prav tako vsebuje implementacijo XSLT 2.0, XPath 2.0 in XML Schema 1.0 (verziji

PE in EE). Saxon je bil prvotno zamišljen kot procesor XSLT, kasneje pa so ga prilagodili

tako, da nudi podporo tudi XQuery. Implementacija je zasnovana tako, da se dve

sintaktično različni kodi (XSLT in XQuery) skozi prevajanje pretovorita v uniformirano

objektno kodo in na enoten navidezni stroj (angl. runtime engine). Tako iz objektne kode

niti ni možno razbrati, ali je bila prevedena iz enega ali drugega jezika.

Page 42: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

31

Trenutno aktualna različica je 9.5, ta pa obstaja še v štirih različnih izvedenkah [27]:

• Saxon-HE (Home Edition) – odprtokodna rešitev, ki zagotavlja podporo jezikom

XSLT 2.0, XQuery 1.0 in XPath 2.0. Zagotavlja osnovno izpolnjevanje z W3C

priporočili, razen podpore shemam. Ta različica ne podpira XQuery 3.0. Rešitev je

brezplačna in jo je možno prenesti s spleta.

• Saxon-PE (Professional Edition) – komercialna rešitev s podporo razširitvam

vključuje tudi delno podporo za XQuery 3.0, XPath 3.0 in dokumentne objektne

modele, kot so JDOM, XOM in DOM4J.

• Saxon-EE (Enterprise Edition) – polno-funkcionalna komercialna rešitev s polno

podporo za XQuery 3.0 in XPath 3.0 ter delno podporo za XSLT 3.0. Ta različica

podpira tudi sheme XML; vsebuje procesor XSD 1.0 in XSD 1.1 in omogoča

shemsko procesiranje jezikov XSLT in XQuery.

• Saxon-CE 1.1 (Client Edition) – je klient različica, ki ponuja izvajanje jezika XSLT

2.0 v brskalniku. Izvedenka bazira na izvorni kodi različice 9.3 in je prevedena v

jezik JavaScript.

Rešitev je v celoti napisana v Javi. Verzija za .NET je narejena s prevajanjem javanske

bajtne kode v Microsoftovo CIL (CIL je nizkonivojski berljiv jezik, ki ga uporablja

ogrodje .NET Framework). V svoji rešitvi smo uporabili različico, namenjeno ogrodju

.NET.

Glavne komponente orodja Saxon so [25]:

• Procesor XSLT 2.0; uporablja se ga prek ukazne vrstice ali iz aplikacije s pomočjo

vmesnika API.

• Procesor XPath 2.0; uporablja se ga iz aplikacije s pomočjo vmesnika API.

• Procesor XQuery 1.0; uporablja se ga lahko prek ukazne vrstice ali iz aplikacije s

pomočjo vmesnika API.

• Procesor XML Schema 1.0; lahko se ga uporablja za validacijo pravilnosti shem ali

pa za validacijo dokumenta glede na definicije v shemi. Uporablja se ga lahko tudi

v navezi s procesorjema XSLT in XQuery. Prav tako se ga lahko uporablja prek

ukazne vrstice ali iz aplikacije.

Page 43: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

32

• Za jezik Java je na voljo več vmesnikov API. Na voljo so JAXP, XQJ in s9api.

• Za okolje .NET je na voljo vmesnik API, ki omogoča tesno integracijo z ostalimi

storitvami v .NET, posebej z razredi v imenskem področju System.Xml.

Prednosti orodja Saxon pred podobnimi produkti so [13]:

• strogo sledenje priporočilom W3C– po navedbah virov [12] in [26] je Saxon v

celoti skladen s priporočilom W3C za XQuery 1.0,

• zanesljivost,

• uporabnost,

• zmogljivost.

4.3 Uporaba procesorja XQuery Saxon v .NET

Vsi razredi za uporabo procesorja Saxon v .NET se nahajajo v imenskem področju

Saxon.Api, ki se nahaja v knjižnici saxonapi.dll.

Prva stvar, ki jo moramo v aplikaciji narediti, je, da ustvarimo primerek razreda Processor.

Ta vsebuje konfiguracijske podatke o procesorju Saxon ter nekatere deljene vire. Po želji

lahko ustvarimo več primerkov. Nad primerkom razreda Processor nato kličemo metodo

NewXQueryCompiler, ki ustvari primerek razreda XQueryCompiler. Temu objektu lahko

nato nastavljamo določene lastnosti, ki določajo statični kontekst evalvacije. Nato kličemo

metodo Compile, ki kot argument prejme povpraševanje v obliki stringa ali v obliki

streama ter vrača primerek razreda XQueryExecutable.

Objekt razreda XQueryExecutable predstavlja prevedeno povpraševanje. Evalvacija

povpraševanja se lahko izvede večkrat, bodisi v isti niti bodisi v različnih. Pri evalvaciji se

nad objektom kliče metoda Load. Ta kot rezultat ustvari objekt razreda XQueryEvaluator.

Temu lahko nastavimo določene lastnosti, s čimer vzpostavimo dinamični kontekst

evalvacije. Za dokončanje evalvacije nato kličemo metodo Run, če kot rezultat želimo

novo ustvarjen dokument XML, oziroma Evaluate ali EvaluateSingle, če kot rezultat

želimo zaporedje.

Page 44: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

33

Vmesnik API vsebuje razrede, ki so osnovani na podlagi podatkovnega modela XDM.

Podatkovni razredi, ki jih uporablja Saxon, so:

• XdmValue – zaporedje bodisi vozlišč bodisi atomarnih vrednosti. XdmValue lahko

nastopa kot parameter povpraševanja ali kot rezultat evalvacije povpraševanja.

• XdmItem – je podtip (deduje od) XdmValue, pri katerem je vsak primerek

zaporedje dolžine 1. Nad objektom razreda XdmValue se lahko kliče metoda

GetEnumeration, ki omogoča iteracijo čez elemente zaporedja.

• XdmNode – vozlišče XDM. Omogoča dostop do večine lastnosti, ki so določena za

vozlišča v XDM.

• XdmAtomicValue – atomarna vrednost XDM. Lahko se ustvari direktno s pomočjo

integer, string, double itd. objektov ali pa se ustvari prek leksografsko določenega

stringa s pripadajočo definicijo tipa QName [24].

Page 45: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

34

5 OPIS STORITVE ISKALNIK AMISTV 1.5

5.1 Storitev AmisTV 1.5

Leta 2007 je Amis od Telekoma Slovenije odkupil njihovo rešitev IP televizije in jo začel

tržiti kot storitev Amis Televizija. Leta 2009 so se v podjetju odločili, da bodo ponudili

sodobnejšo rešitev, ki bo omogočala nekatere dodatne funkcionalnosti, kot so opomniki,

iskalnik, videoteka, snemalnik, napredne časovne storitve (funkciji Na začetek in Pavza)

idr. Storitev so na tržišče poslali jeseni 2009 in jo poimenovali AmisTV 2.0. Za uporabo

teh storitev uporabnik potrebuje Albisovo STB enoto (angl. Set-top box, tudi receiver;

naprava, ki omogoča sprejemanje in dekodiranje digitalnega televizijskega signala [23]) za

sprejem TV signala, uporaba na Sagemovih STB enotah, na katerih teče starejša storitev

Amis Televizija, pa ni mogoča. Ker je imel Amis veliko uporabnikov, ki so že bili

opremeljeni s Sagemovimi STB enotami, sodobnih funkcionalnosti pa bodisi niso

potrebovali bodisi zaradi tehničnih razlogov pri njih niso bile na voljo, so se odločili za

Sagemove STB enote razviti storitev AmisTV 1.5. To naj bi bila v bistvu tehnološka

evolucija Amis Televizije, ki bi ohranjala osnovno jedro nespremenjeno, a z enakim

videzom in uporabniško izkušnjo kot AmisTV 2.0. Postopoma pa bi se naj uvajale tudi

funkcionalnosti, ki so implementirane v AmisTV 2.0. Za uporabnike Sagemovih STB enot

bi se nadgradnja iz Amis Televizije na AmisTV 1.5 izvedla oddaljeno ob naslednjem

zagonu STB enote.

AmisTV 1.5 je prilagojen za delovanje na v Sagemovo STB enoto vgrajen spletni

brskalnik ANT Fresco, ta pa ima precej omejene specifikacije. Brskalnik ANT Fresco je

posebej razvit za digitalne televizije, elektronske naprave za domačo rabo, kot npr. set-top

boxi, integrirane televizije, DVD predvajalniki ipd. [1].Tako je odjemalčeva stran razvita v

programskih jezikih HTML 4.01, CSS 1.0 ter JavaScript 1.3, strežniška stran pa v

programskem jeziku C#. Podatki se shranjujejo v Microsoftovo podatkovno bazo MSSQL.

V času zaključka razvoja iskalnika po podatkih EPG so bile funkcionalnosti AmisTV 1.5

videti tako, kot jih prikazuje sledeči diagram primerov uporabe Diagram 5.1:

Page 46: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

35

Diagram 5.1: Diagram primerov uporabe za AmisTV 1.5.

5.2 Iskalnik AmisTV 1.5 v splošnem

Vpogled v programsko kodo rešitve AmisTV 2.0 ni bil mogoč, saj se je ta razvijal zunaj

podjetja in z uporabo popolnoma drugačnih pristopov (kot samostoječa aplikacija) kot

AmisTV 1.5 (kot aplikacija, ki teče v brskalniku z odjemalec-strežnik arhitekturo).

Iskalnik uporabniku omogoča, da prek uporabniškega vmesnika s pomočjo numeričnih tipk

na daljinskem upravljalcu ali prek smernih tipk ter virtualne tipkovnice brska po podatkih

EPG. Možen je vnos iskalnega niza ter dvonivojska izbira žanra (žanr – podžanr).

Specifikacije za razvoj iskalnika AmisTV 1.5 se je pridobivalo s podrobnim opazovanjem

delovanja iskalnika v rešitvi AmisTV 2.0.

Slika 5.1 in Slika 5.2, narejeni na grafičnem vmesniku iskalnika AmisTV 1.5:

Page 47: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

36

Slika 5.1: Prikaz vnosa iskanja v storitvi iskalnika AmisTV 1.5 - na levi strani lahko z virtualno

tipkovnico ali s črkami na daljinskem upravljalcu vnašamo iskalni niz, v sredinskem stolpcu pa

lahko rezultate omejimo z izbiro žanra ali podžanra.

Slika 5.2: Iskalnik AmisTV 1.5 nam rezultat prikaže v obliki večstranskega seznama zadetkov.

Page 48: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

37

Izbira (potrditev s tipko 'OK') vrstice rezultatov uporabniku omogoči vpogled v

podrobnosti najdene vsebine – naslov, čas predvajanja, žanr in podžanr ter opis. Uporabnik

ima na izbiro vračanje na seznam rezultatov ali odpiranje izbrane oddaje oziroma

dodajanje med opomnike, če se oddaja še ni pričela.

5.3 Iskalnik AmisTV 1.5 podrobneje

Amisov strežnik prejme podatke EPG s strani ponudnika v obliki stisnjene datoteke, v

kateri se nahajajo datoteke XML za vsak posamezni televizijski kanal. Vsaka datoteka

XML vsebuje podrobne podatke o vseh oddajah posebej za približno teden dni naprej:

• čas začetka,

• naslov oddaje,

• opcijski izvorni naslov oddaje (v izvornem jeziku),

• povzetek (opis),

• ključne besede,

• žanr,

• opcijske avdio-video atribute.

<ProgramInformation programId="crid://AMIS_EPG/1/00051/057/002912755@2009-09-28T22:00:00Z"> <BasicDescription>

<Title xml:lang="sl" type="main">Mladi veterinarji</Title> <Synopsis xml:lang="sl" length="long">Resničnostna dokumentarna serija vas popelje v svet mladih veterinarjev veterinarske bolnišnice Alamenda East v Denverju, kjer se le-ti srečujejo s težavami različnih živalskih vrst.</Synopsis> <Keyword type="secondary">dokumentarna serija</Keyword> <Genre href="urn:tva:metadata:cs:DVBgenre:2005:C:2:0:0" />

</BasicDescription> <AVAttributes> <AudioAttributes /> <VideoAttributes /> </AVAttributes> </ProgramInformation>

Vsako noč se zažene modul, imenovan EpgParser, ki iz strežnika FTP (angl. file transfer

protocol) sname stisnjeno datoteko, jo shrani na svoj strežniški prostor in to datoteko

razpakira. Iz relacijske podatkovne baze SQL pobriše obstoječe vnose, nato pa se začne

Page 49: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

38

parsanje podatkov v dokumentih XML in njihovo shranjevanje v relacijsko podatkovno

bazo MSSQL. Na tak način se v času najmanjše obremenitve v bazo naložijo najnovejši

podatki EPG.

Diagram 5.1 prikazuje entitetno-relacijski diagram podatkovne baze AmisTV 1.5:

Diagram 5.2: Entitetno-relacijski diagram podatkovne baze na AmisTV 1.5.

Ti v podatkovno bazo shranjeni podatki se nato uporabljajo za različne funkcionalnosti,

med drugim tudi za iskalnik.

Potrebno je izpostaviti, da se v tej nalogi posvečamo le enemu primeru uporabe sistema

AmisTV 1.5, in sicer iskalniku, prikazanem na Diagramu 5.3. Celotni sistem vsebuje

številne primere uporabe, ki pa za to nalogo niso pomembni.

Page 50: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

39

Diagram 5.3: Diagram primerov uporabe za produkcijsko rešitev z uporabo relacijske podatkovne

baze SQL. Za iskanje po podatkih EPG je najprej potrebno parsanje.

Naslednji Diagram 5.4 prikazuje, kako potekajo aktivnosti pri parsanju dokumentov XML

in njihovo prepisovanje v podatkovno bazo na produkcijski različici z uporabo relacijske

podatkovne baze.

Diagram 5.4: Diagram aktivnosti pri parsanju dokumentov XML na produkcijski različici.

Page 51: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

40

Pri razvoju parserja dokumentov XML je bila pomembna lastnost odpornost parserja na

napake in nekonsistentnosti v dokumentih XML. Dokumenti, ki jih je Amisu zagotavljal

ponudnik, so namreč pogosto vsebovali nesmiselne podatke, kot naprimer dve televizijski

oddaji, ki na istem programu tečeta ob istem času, ali pa televizijski čas, kjer v dokumentu

ni bilo navedene nobene oddaje ipd. V naslednjem poglavju je predstavljena rešitev, ki

korak parsanja podatkov v dokumentih XML in shranjevanja v podatkovno bazo izpusti in

prek povpraševanj XQuery dostopa neposredno do dokumentov XML.

Iskalnik po podatkih EPG na produkcijski različici je napisan kot spletna storitev z dvema

javnima spletnima metodama ter tremi zaščitenimi metodami:

• Public string getResult (string input, string category) – glavna rutina, ki izvede

povpraševanja v podatkovni bazi SQL, sestavi rezultat v ustrezni format, ki ga

zna prikazati odjemalec na uporabnikovi STB enoti in ga v tipu string vrne

klientu.

• Public string getCategoryName (string category) – pomožna metoda, ki služi

preprečevanju izgube podatkov o izbranem žanru med tem, ko uporabnik

preskakuje med meniji.

• Protected int vrniKategorijo (string input) – kot argument metoda prejme ime

žanra tipa string, ki jo je uporabnik izbral prek uporabniškega vmesnika, vrača

pa indeks številko te kategorije v podatkovni bazi.

• Protected string vrniKategorijo (int input) – zaradi različnih uporabniških

situacij (primerov uporabe) ima ta metoda obrnjeno funkcionalnost kot prejšnja.

Kot argument prejme indeks številko kategorije v podatkovni bazi, vrača pa ime

žanra tipa string.

• Protected string vrniParentKategorijo (int kategorija) – posamezna oddaja ima v

podatkovni bazi tuj ključ, ki določa podžanr. Iz podžanra je za pravilen prikaz v

uporabniškem vmesniku potrebno ugotoviti tudi žanr, kar stori ta metoda.

Sledeči diagram aktivnosti, Diagram 5.5, pa prikazuje delovanje produkcijske različice

iskalnika z uporabo relacijske podatkovne baze SQL:

Page 52: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

41

Diagram 5.5: Poenostavljen prikaz delovanja iskalnika po podatkih EPG na produkcijski različici.

Page 53: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

42

6 ISKALNIK AMISTV 1.5 Z UPORABO XQUERY

Glede na v prejšnjem poglavju opisano delovanje iskalnika na produkcijski različici z

uporabo relacijske podatkovne baze SQL se je porodila nekako logična ideja poskusa

branja podatkov EPG neposredno iz dokumentov XML, ki so na strežniku. S tem se vsaj

na primeru uporabe iskalnika izpusti potreba po zapisovanju podatkov v relacijske tabele, s

čimer bi v primeru, da bi vse storitve, ki jih ponuja AmisTV 1.5, prilagodili na uporabo

jezika XQuery, tudi znižali stroške delovanja digitalne televizije, saj bi nakup in

vzdrževanje relacijske podatkovne baze postala odvečna.

Diagram 6.1 prikazuje, kako smo se v različici iskalnika z uporabo XQuery izognili

parsanju dokumentov XML, ki je potrebno v različici rešitve, ki temelji na relacijski

podatkovni bazi SQL.

Diagram 6.1: Izpuščena je potreba po parsanju in zapisovanju podatkov v relacijske tabele.

Prva težava, ki jo lahko opazimo, je neprimerna struktura dokumentov XML.

Najpomembnejši podatki za delovanje uporabniškega vmesnika iskalnika so:

• ime programa,

• naslov oddaje,

• čas začetka oddaje,

• čas konca oddaje,

• opis (sinopsis) oddaje.

Manj bistveni, a v uporabniškem vmesniku potrebni podatki pa so še:

• žanr,

• podžanr,

• številka televizijskega programa.

Page 54: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

43

Dokument XML ne vsebuje imena programa, ampak je vsebovan v imenu datoteke

dokumenta skupaj z (za uporabniški vmesnik) nekoristnimi podatki o času izdelave

dokumenta. Torej je potrebno ime programa pridobiti iz imena datoteke. Naslov oddaje in

sinopsis sta uporabno shranjena v vrednosti elementov, zaplete pa se pri času začetka

oddaje. Začetek oddaje se namreč skriva v referenci CRID (angl. content reference

identificator; je shema, ki omogoča referenciranje trenutnih ali prihajajočih televizijskih ali

spletnih medijskih vsebin [7]), ki nima podpore za delo v .NET in tako je bilo potrebno čas

začetka oddaje pridobiti iz te reference. Ta referenca je videti tako:

"crid://AMIS_EPG/1/00051/047/002928339@2009-09-28T22:50:00Z"

Za znakom'@' se nahaja najprej datum oddaje, nato še ura začetka. Še večja težava pa

nastane s časom konca oddaje. Ta namreč ni eksplicitno naveden v dokumentu XML - v

produkcijski različici se v fazi parsanja in zapisovanja v relacijske tabele dejansko kot čas

konca oddaje privzame začetek naslednje oddaje na istem televizijskem programu. Vendar

je za pridobitev tega podatka potreben prehod čez vse podatke, kar stori parser, v naši

rešitvi pa bi bilo to nesprejemljivo zamudno.

Ker se podatki o žanrih in podžanrih ter zaporedje televizijskih programov načeloma ne

spreminjajo, smo jih statično shranil v dokumenta programs.xml in genres.xml. Ker iz

imena datoteke XML s podatki EPG pridobimo ime programa, lahko nato z dodatnim

povpraševanjem nad datoteko programs.xml pridobimo še številko tega televizijskega

programa. Žanr in podžanr se v dokumentih XML nahajata v nepoznanem formatu:

"urn:tva:metadata:cs:DVBgenre:2005:2:0:0:0"

Težavo smo rešili podobno, kot je bila rešena na produkcijski različici, namreč z

obrezovanjem niza. Številska vrednost, ki sledi znaku '2005:', določa žanr, naslednja

številska vrednost pa podžanr. Na Amisu je obstajala Excel razpredelnica s številkami teh

žanrov, referenciranimi na imena žanrov. Podatki iz te razpredelnice so za to rešitev

prenešeni v dokument genres.xml.

Iz Diagrama 6.2 je razvidno, kako smo se lotili delovanja iskalnika z uporabo XQuery.

Page 55: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

44

Diagram 6.2: Diagram sodelovanja za rešitev iskalnika EPG z uporabo XQuery.

Najprej se izvede aktivnost, ki gre čez celoten dokument XML, nato pa se izvedejo

primerjanja ustreznosti časovne značke (ali je oddaja že pretečena ali je še vedno aktualna)

in ustreznosti kategorije. Ta procedura se iterativno ponavlja za vsako datoteko XML. Ali

je ta način z vidika zmogljivosti najbolj ustrezen, bomo skušali ugotoviti v poglavju osem,

kjer se bomo posvetili izboljšavam. Kot je razvidno iz diagrama, se rezultati, ki so prestali

kriterije iskanja, shranjujejo v strukturo XDM, poimenovano rezultat. Ker se ta struktura

Page 56: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

45

polni iterativno za vsak televizijski program, je takoj jasno, da bi bila pri takšni rešitvi

potrebna majhna predelava uporabniškega vmesnika. Pri produkcijski različici je namreč

kriterij razporejanja rezultatov čas začetka oddaje, pri različici z uporabo XQuery pa

primarno televizijski program in šele nato čas začetka oddaje.

Podobno kot pri produkcijski različici je tudi različica z uporabo XQuery spletna storitev,

zamišljena kot storitev, ki na enostaven način nadomesti različico z uporabo relacijske

podatkovne baze SQL. Storitev ima štiri globalno deklarirane objekte, štiri javne metode in

eno zaščiteno metodo.

Objekti:

• Processor procesor,

• XQueryCompiler xCompiler,

• XQueryExecutable xExe,

• XQueryEvaluator xEval.

Metode:

• Public string getResult (string input, string kategorija) – glavna rutina, ki izvaja

povpraševanja XQuery, klice drugih metod, ob koncu pa rezultat sestavi v

format, ki ustreza formatu, ki ga vrača produkcijska različica in ki ga razume

odjemalec. Osrednja funkcionalnost te metode je povpraševanje XQuery, ki je

videti tako:

"for $x in doc('" + trenutna_datoteka + "')/ExtendedTVAMain/ProgramDescription/ProgramInformationTable/ProgramInformation/BasicDescription where contains(string($x), '" + iskalni_niz + "') or contains(string($x), '" + iskalni_niz_z_veliko_zacetnico + "') return <result program='" + ime_televizijskega_programa + "' order='" + številka_televizijskega_programa + "'>

<start>{$x/../@programId}</start> <title>{data($x/Title)}</title> <synopsis>{data($x/Synopsis)}</synopsis> <genre>{data($x/Genre/@href)}</genre>

</result>";

• Protected int isProgramskaShema (string ime_programa) – ni nujno, da vsi

dokumenti XML, ki jih imamo na strežniku, spadajo tudi v televizijsko

Page 57: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

46

programsko shemo. Teh dokumentov je več, zato je potrebno preveriti, ali

dokument sploh spada v programsko shemo. Metoda s pomočjo povpraševanja

XQuery pogleda v dokument programs.xml, kjer je zabeležena programska

shema – če najde zadetek, vrne številko televizijskega programa, če zadetka ni,

vrne -1:

"for $x in doc('" + programska_shema + "')/programs/program where $x/label = '" + ime_programa + "' return data($x/order_epg)";

• Public string vrniParentKategorijo (string kategorija) – metoda s

povpraševanjem XQuery pogleda v dokument genres.xml, kjer je shranjena

struktura žanrov, in za podžanr v argumentu vrne ime žanra:

"for $x in doc('" + seznam_žanrov + "')/genres/parent where $x/@id = '" + argument + "' return $x/@name";

• Public string vrniChildKategorijo (string parent_kategorija, string

child_kategorija) – kot argument metoda prejme številčne identifikatorje žanra

in podžanra v obliki niza. Povpraševanje XQuery iz dokumenta genres.xml

pridobi ime podžanra v obliki niza:

"for $x in doc('" + seznam_žanrov + "')/genres/parent/child where $x/../@id = '" + argument + "' and $x/@id = '" + child_kategorija + "' return $x";

• Public bool checkTimestamp (string time_extract) – časovno značko oddaje

primerja s trenutnim časom.

Page 58: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

47

7 TESTIRANJE ZMOGLJIVOSTI

»Zmogljivostno testiranje je proces določanja hitrosti ali učinkovitosti računalnika,

omrežja ali programske opreme.« [14].

Zmogljivostne teste lahko razdelimo na sledeče tipe:

• test zmogljivosti (angl. performance test),

• test obremenitve (angl. load test),

• stres test (angl. stress test),

• test kapacitete (angl. capacity test) [14].

Za namene te naloge smo obe različici iskalnika, torej produkcijsko različico z uporabo

relacijske podatkovne baze SQL in različico z uporabo XQuery, podvrgli testom

obremenitve. Za izvajanje teh testov smo uporabili namizni računalnik.

7.1 Testiranje obremenitve

V tem podpoglavju bomo definirali termin test obremenitve. »Test obremenitve je proces

izpostavljanja računalnika, periferne naprave, strežnika, omrežja ali aplikacije na nivo, ki

se približuje zgornji specificirani meji predvidene obremenitve. Testiranje obremenitve je

lahko izvedeno v kontroliranih laboratorijskih razmerah za statistično primerjavo

zmožnosti različnih sistemov ali za natančno merjenje zmožnosti posameznega sistema.

Testiranje obremenitve pa se lahko izvaja tudi terensko za namen pridobivanja

kvalitativnih predstav, kako sistem deluje v praksi.

Praktični primeri preprostih testov obremenitve so:

• nalaganje serije večjih datotek s spleta,

• hkratno poganjanje več aplikacij na računalniku ali strežniku,

• dodajanje več nalog tiskalniku,

• obremenitev strežnika z veliko količino e-mail prometa,

Page 59: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

48

• neprestano zapisovanje in branje s trdega diska.« [22].

V našem primeru je test obremenitve v obliki večjega števila zahtev po podatkih EPG, kar

je opisano v naslednjem podpoglavju.

7.2 Testno okolje

Kot strežnik za testiranje smo uporabili namizni računalnik:

• procesor: Intel Core 2 Duo E8200 2,66 GHz, jedri tečeta na 2,90GHz,

• pomnilnik: 4x 1GB DDR2-800 v dual channel načinu, teče na 181 MHz,

• trdi disk: 500 GB, 7200 obratov/min, 32 MB medpomnilnika,

• operacijski sistem: Microsoft Windows 7 SP1.

Testni kontekst smo ustvarili s pomočjo orodja Visual Studio 2012 Ultimate. Zagnali smo

dve instanci; v prvi smo zaganjali spletno storitev v načinu release, ki storitev požene

lokalno na strežniku Microsoft IIS, v drugi instanci pa smo izvajali teste. Prevajalnik pri

prevajanju v release načinu ne producira simboličnih debugging informacij. Velikost

izvršljive datoteke je tako manjša, izvajanje pa posledično hitrejše [19].

V vseh testih, ki jih bomo opisali v naslednjem poglavju, smo spletni storitvi izpostavili

enaki obremenitvi. Ta obremenitev ustreza skrajnemu scenariju množice 100 uporabnikov,

ki vsi pošiljajo zahteve storitvi:

• 2 začetna uporabnika,

• vsakih 15 sekund se število uporabnikov poveča za 5,

• vsak uporabnik potrebuje 6 sekund za 'razmislek', to je čas, preden sproži

naslednjo zahtevo,

• maksimalno število uporabnikov je 100,

• test se izvaja 10 minut.

Page 60: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

49

Določili smo tri različne scenarije:

Tabela 7.1: Scenarij 1. Ime parametra Vrednost parametra input »dexter« category »«

Tabela 7.2: Scenarij 2.

Ime parametra Vrednost parametra input »« category »komedija«

Tabela 7.3: Scenarij 3.

Ime parametra Vrednost parametra input »uničevalca mitov« category »dokumentarna serija«

7.3 Testiranje

7.3.1 Test 1 – scenarij 1 nad različico z uporabo relacijske podatkovne baze SQL

Tabela 7.4 in Graf 7.1 prikazujeta rezultate Testa 1:

Tabela 7.4: Rezultati Test 1.

Število izvedenih testov 3766 Povprečje odgovorov/sekunda 6,28 Povprečen čas za odgovor 5,86 s Minimalni čas odgovora 0,21 s Maksimalni čas odgovora 8,63 s

Page 61: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

50

Graf 7.1: Časi odgovorov za Test 1.

Iz rezultatov je razvidno, da storitev, ki uporablja relacijsko podatkovno bazo SQL, ob

majhnem številu uporabnikov še uspe zagotavljati odgovore v realnem času, z večanjem

števila uporabnikov pa se čas odgovora začne daljšati v linearno.

Upoštevati je treba, da testno okolje ni namenjeno opravljanju strežniških nalog. Ob

podobnih scenarijih je Amisov strežnik odgovarjal z maksimalnimi časi 0,60 s.

7.3.2 Test 2 – scenarij 2 nad različico z uporabo relacijske podatkovne baze SQL

Tabela 7.5 in Graf 7.2 prikazujeta rezultate Testa 2:

Tabela 7.5: Rezultati Testa 2.

Število izvedenih testov 7443 Povprečje odgovorov/sekunda 12,4 Povprečen čas za odgovor 0,067 s Minimalni čas odgovora 0,041 s Maksimalni čas odgovora 0,140 s

Graf 7.2: Časi odgovorov za Test 2.

Page 62: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

51

V tem scenariju se je storitev odzivala v realnem času in je brez težav zagotavljala odgovore.

7.3.3 Test 3 – scenarij 3 nad različico z uporabo relacijske podatkovne baze SQL

Tabela 7.6 in Graf 7.3 prikazujeta rezultate Testa 3:

Tabela 7.6: Rezultati Testa 3.

Število izvedenih testov 7444 Povprečje odgovorov/sekunda 12,4 Povprečen čas za odgovor 0,046 s Minimalni čas odgovora 0,038 s Maksimalni čas odgovora 0,130 s

Graf 7.3: Časi odgovorov za Test 3. Tudi v tem testu opazimo, da se je storitev uspela odzivati v realnem času, povprečni čas odgovora je celo krajši kot v Testu 2.

7.3.4 Test 4 – scenarij 1 nad različico z uporabo XQuery

Tabela 7. 7 in Graf 7.4 prikazujeta rezultate Testa 4:

Tabela 7.7: Rezultati za Test 4.

Število izvedenih testov 664 Povprečje odgovorov/sekunda 1,12 Povprečen čas za odgovor 55,7 s Minimalni čas odgovora 1,76 s Maksimalni čas odgovora 83,5 s

Page 63: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

52

Graf 7. 4: Časi odgovorov za Test 4. Pri tem scenariju se je storitev, ki uporablja XQuery, pri majhnem številu uporabnikov

odzivala v dokaj sprejemljivem časovnem okvirju (nekje do dveh sekund), z večanjem

števila zahtev pa se je čas odgovora relativno hitro linearno povečeval. Časi odgovorov so

se ustalili, ko je test dosegel maksimalno število uporabnikov (100).

7.3.5 Test 5 – scenarij 2 nad različico z uporabo XQuery

Tega testa ni bilo mogoče opraviti, saj se je storitev z uporabo XQuery odzivala prepočasi

in strežnik je vse zahteve po 300 sekundah zavrnil z request timeout napako. Napaka se

sproži, ko čas odgovora na zahtevo traja dlje, kot je strežnik pripravljen sprejeti [10].

7.3.6 Test 6 – scenarij 3 nad različico z uporabo XQuery

Tabela 7.8 in Graf 7.5 prikazujeta rezultate Testa 6:

Tabela 7.8: Rezultati za Test 6.

Število izvedenih testov 381 Povprečje odgovorov/sekunda 0,64 Povprečen čas za odgovor 93,5 s Minimalni čas odgovora 2,72 s Maksimalni čas odgovora 147 s

Page 64: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

53

Graf 7.5: Časi odgovorov za Test 6.

Storitev z uporabo XQuery je imela že pri majhnem številu uporabnikov težave s hitrostjo

odgovorov, z večanjem števila zahtev pa je čas odgovora hitro narastel na nesprejemljive

vrednosti.

7.4 Povzetek in analiza testov

Tabela 7.9 povzema rezultate vseh testov:

Tabela 7.9: Rezultati testov obremenitve.

Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Število izvedenih testov 3766 7443 7444 649 / 381

Povprečje odgovorov/sekunda 6,28 12,4 12,4 1,08 / 0,64

Povprečen čas za odgovor 5,86 s 0,067 s 0,046 s 57,1 s / 93,5 s

Minimalni čas odgovora 0,21 s 0,041 s 0,038 s 1,56 s / 2,72 s

Maksimalni čas odgovora 8,63 s 0,140 s 0,130 s 89,3 s / 147 s

Težko je jasno (s časovno enoto) definirati, kaj je še sprejemljiv čas odgovora storitve za

realno uporabno na produkciji. Sprejemljiv je še tisti čas, v katerem povprečen uporabnik

zahteve še ne bo preklical ali sprožil nove v prepričanju, da prva zahteva ni bila poslana.

Iz Tabele 7.9 je razvidno, da je imela storitev z uporabo relacijske podatkovne baze SQL

težave pri scenariju 1, to je iskanju le po iskalnem nizu brez žanra. Storitev z uporabo

XQuery se je na drugi strani po scenariju 1 v Testu 4 najbolje obnesla, čeprav je bilo

povprečje odgovorov na sekundo skoraj šestkrat manjše, kot pri storitvi z relacijsko

podatkovno bazo. Performanse ob obremenitvi v Testu 5 in Testu 6, v katerih je vključeno

Page 65: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

54

iskanje po žanru, so bile popolnoma nesprejemljive. Vendar lahko predpostavimo, da bi

storitev z uporabo XQuery po scenariju 1 v primernem okolju (na zmogljivejšem

strežniku) delovala povsem primerljivo storitvi z uporabo relacijske baze, bi bile pa za

sprejemljive zmogljivosti v scenariju 2 in scenariju 3 (oziroma za podobne scenarije)

potrebne določene izboljšave oziroma spremembe.

Page 66: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

55

8 IDEJE ZA IZBOLJŠAVO

8.1 Transformacija ali drugačna oblika dokumentov

Problem pri iskanju po žanru nastane, ker je ta nerodno shranjen v vrednosti enega od

elementov v dokumentih XML. Da iskalnik pride do podatka o žanru, se izvede preveč

korakov.

Prva rešitev te težave bi bila odprava dvojnega obhoda podatkov, kakor naša rešitev

trenutno deluje. Najprej se podatki s pomočjo povpraševanja XQuery prefiltrirajo glede na

iskalni niz, šele s pomočjo tega povpraševanja pridobimo informacijo o žanru, po katerem

podatke ponovno prefiltriramo. Glede na to, da ime žanra že prejmemo v zahtevi, ki jo

pošlje uporabnik in da so imena žanrov shranjena v datoteki genres.xml, bi se filtracija po

žanru lahko opravila že v prvem povpraševanju. Ampak to bi pomenilo improvizirano

rešitev s pomočjo obrezovanja nizov.

Druga rešitev bi bila transformacija s pomočjo jezika XSLT ali XQuery. Povpraševanje bi

bilo veliko hitrejše, če bi bil žanr preprosto zapisan kot vrednost elementa v dokumentu

XML. Tako bi bila zelo smiselna rešitev, da se za tem, ko se na strežnik naložijo nove

verzije dokumentov XML, izvede transformacija, ki bi ustvarila nove dokumente XML z

bolj uporabno zabeleženimi žanri.

Tretja in najboljša rešitev pa bi bila, da bi ponudnik podatkov EPG zagotovil drugačno

obliko dokumentov XML.

8.2 XML podatkovna baza

Ena od opcij izboljšav zmogljivosti storitve z uporabo XQuery bi bila organizacija

dokumentov XML v podatkovno bazo, osnovano na XML, kot je npr. BaseX, opisan v

poglavju 3.3.1. Obstajajo zmogljive brezplačne implementacije takšnih podatkovnih baz,

tako da bi pri tej rešitvi odpravili strošek nakupa same podatkovne baze, še vedno pa nam

ostaja strošek vzdrževanja podatkovne baze.

Page 67: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

56

Z ureditvijo podatkov v podatkovno bazo bi lahko izvajali povpraševanja nad celotnimi

podatki in se na tak način izognil iteraciji čez številne dokumente XML, za kar lahko

domnevamo, da bi opazno izboljšalo zmogljivosti rešitve.

8.3 Večnitnost

Ta ideja se nanaša na rešitev z uporabo večnitnosti. Večnitnost ali multithreading je

zmožnost operacijskega sistema, da istočasno izvaja različne dele programa, imenovane

niti [33]. Implementirati bi bilo treba nit za vsako datoteko XML. Takšna rešitev najbrž v

testnem okolju, v katerem smo v tej nalogi poganjali storitev, to je procesor z dvema

jedroma, ne bi dala občutno boljših rezultatov, medtem ko bi lahko bila razlika na

večjedrnem strežniku občutna.

Page 68: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

57

9 SKLEP

Izrazna moč jezika XQuery je na zelo visokem nivoju, kar omogočajo številne funkcije ter

možnost vgnezdenih in rekurzivnih klicev funkcij. W3C priporočilo za XQuery 1.0 iz leta

2007 je jeziku in celotni tehnologiji dalo zagon v takšni meri, da je na voljo veliko orodij,

ki omogočajo tudi zahtevnejše delo z jezikom.

Orodja za XML in XQuery so na takšnem nivoju, da omogočajo hitro vpeljavo in

kvalitetno delo tudi razvijalcu, ki se s tehnologijo šele spoznava. Izjemno pozitivna stran

teh orodij je tudi dejstvo, da so namenjene ne samo razvijalcem XML, ampak tudi

urednikom XML, torej uporabnikom, ki se ne spoznajo nujno na procese razvoja. To je

bistvena ideja za potrjevanje druge teze. Orodja za delo z relacijskimi podatkovnimi

bazami SQL so vseeno inženirsko naravnana, medtem ko so orodja za delo z XML in

XQuery namenjena tudi laikom in vsebujejo številne primere ter orodja, ki omogočajo

hitro vpeljavo v tehnologijo. Menimo, da je preprostost drevesne strukture, ki je bistvo

XML, bolj naravna od relacijskih struktur, zato je povpraševanje po takšnih strukturah bolj

razumljivo. Predhodno znanje jezika SQL je vsekakor koristno, ni pa nujno potrebno za

obvladovanje jezika XQuery. S tem lahko potrdimo drugo tezo naloge.

V začetku tega poglavja smo že omenili visoko izrazno moč jezika XQuery. Ta vidik ni

sporen in zato lahko popolnoma enakovredno nadomesti jezik SQL v kakršnem koli

kontekstu. Rahlo pa se zaplete pri performančnih zmožnostih jezika oziroma procesorjev,

ki jezik izvajajo. Na konkretnem primeru iskanja po podatkih EPG smo ugotovili, da bi se

z uporabo XQuery sicer lahko izognili relacijski podatkovni bazi, ampak bi celoten sistem

(celotna storitev AmisTV 1.5, ne samo iskalnik) potreboval nekaj predelav in prilagoditev,

ki bi omogočale, da bi se rešitev z uporabo XQuery v tem kontekstu zmogljivostno

približal rešitvi z uporabo relacijske podatkovne baze. V konkretnem kontekstu menimo,

da je težava v namenski izdelavi celotnega AmisTV 1.5 za uporabo z jezikom SQL in

relacijsko podatkovno bazo, zato je izločitev le te in nadomestitev s tehnologijo XQuery

terjala določeno stopnjo prilagajanja, ki je posledično privedla do manjše zmogljivosti

različice z uporabo XQuery. Torej lahko prvo tezo te naloge potrdimo le s pridržkom –

XQuery je izrazno dovolj močan, da opravi kakršno koli nalogo povpraševanja po

podatkih, vendar se dejanska zmogljivost te tehnologije lahko pokaže le v kontekstu

Page 69: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

58

aplikacij oziroma primerov uporabe, ki so bili načrtovani na temelju tehnologije XML in

povpraševalnega jezika XQuery.

Page 70: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

59

VIRI

[1] ANT Fresco Browser. Dostopno na: http://www.windriver.com/cgi-

bin/partnerships/directory/viewProd.cgi?id=1059 [20. 7. 2013].

[2] Apache Incubator. Apache VXQuery. 2012. Dostopno na:

http://incubator.apache.org/vxquery/index.html [22.7.2013].

[3] Berglund, A., Fernandez, M., Malhotra, A., Marsh, J., Nagy, M., Walsh, N. (ur.).

W3C Recommendation: XQuery 1.0 and XPath 2.0 Data Model (XDM) (Second

Edition). 2010. Dostopno na: http://www.w3.org/TR/2010/REC-xpath-datamodel-

20101214/ [20. 7. 2013].

[4] Berners-Lee, T., Fielding, R., Masinter, L. Uniform Resource Identifier (URI):

Generic Syntax. W3C/MIT, 2005. Dostopno na: http://www.ietf.org/rfc/rfc3986.txt

[20. 7. 2013].

[5] Boag, S., Chamberlin, D., Fernandez, M. F., Florescu, D., Robie, J., Simeon, J.

(ur.). W3C Recommendation: XQuery 1.0: An XML Query Language. 2007.

Dostopno na: http://www.w3.org/TR/2007/REC-xquery-20070123/ [20. 7. 2013].

[6] Boag, S., Chamberlin, D., Fernandez, M. F., Florescu, D., Robie, J., Simeon, J.

(ur.). W3C Recommendation: XQuery 1.0: An XML Query Language (Second

Edition). 2010. Dostopno na: http://www.w3.org/TR/xquery/ [31. 5. 2010].

[7] Ernshaw, N., Aoki, S., Ashley A., Kameyama, W. The TV-Anytime Content

Reference Identifier (CRID). GITS, Waseda University, 2005. Dostopno na:

http://tools.ietf.org/html/rfc4078 [20. 7. 2013].

[8] eXist-db. Getting Started with Web Application Development. 2013. Dostopno na:

http://exist-db.org/exist/apps/doc/development-starter.xml [14. 7. 2013].

[9] eXist-db. Quick Start. 2013. Dostopno na: http://exist-

db.org/exist/apps/doc/quickstart.xml [14. 7. 2013].

[10] Fisher, T. 408 Request Timeout Error Resolution: Steps to Resolve the 408

Request Timeout Error. Dostopno na:

http://pcsupport.about.com/od/findbyerrormessage/a/408error.htm [20. 7. 2013].

[11] Grust, T., Jagadish, H. V., Özcan, F., Yu, C. XQuery Processors. V: Liu, L.,

Özsu, T. M. (ur.), Encyclopedia of Database Systems. Springer US, 2009, 3671–

3676. Dostopno na: http://link.springer.com.nukweb.nuk.uni-

lj.si/referenceworkentry/10.1007/978-0-387-39940-9_800 [20. 7. 2013].

Page 71: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

60

[12] Grün, C. Storing and Querying Large XML Instances. Konstanz: Univerza

Konstanz, 2010. Dostopno na: http://kops.ub.uni-

konstanz.de/bitstream/handle/urn:nbn:de:bsz:352-opus-

127142/Dissertation_Gruen_2010.pdf?sequence=1 [20. 7. 2013].

[13] Kay, M. Ten Reasons Why Saxon XQuery is Fast. Reading, Berks, UK:

Saxonica Limited, 2008. Dostopno na:

http://sites.computer.org/debull/A08dec/saxonica.pdf [11. 7. 2013].

[14] Korelič, T. Testiranje funkcionalnosti in zmogljivosti informacijskih

sistemov. Maribor: Fakulteta za elektrotehniko, računalništvo in informatiko

Univerze v Mariboru, 2009. Dostopno na: http://dkum.uni-

mb.si/Dokument.php?id=9716 [11. 7. 2013].

[15] Križan, M. Primerjava jezika za transformacije in povpraševalnega jezika.

Maribor: Fakulteta za elektrotehniko, računalništvo in informatiko Univerze v

Mariboru, 2008. Dostopno na: http://dkum.uni-mb.si/Dokument.php?id=6524 [11.

7. 2013].

[16] Malhotra, A., Melton, J., Walsh, N., Kay, M. (ur.). XQuery 1.0 and XPath

2.0 Functions and Operators (Second Edition). 2010. Dostopno na:

http://www.w3.org/TR/xquery-operators/ [19.8.2013].

[17] Melton, J., Muralidhar, S. (ur.). W3C Recommendation: XML Syntax for

XQuery 1.0 (XQueryX) (Second Edition). 2010. Dostopno na:

http://www.w3.org/TR/xqueryx/ [20. 7. 2013].

[18] Msdn. Primary Expressions (XQuery). 2012. Dostopno na:

http://msdn.microsoft.com/en-us/library/ms190754.aspx [16. 6. 2010].

[19] Msdn. Release Builds. 2012. Dostopno na: http://msdn.microsoft.com/en-

us/library/73e0461e.aspx [18. 7. 2013].

[20] <oXygen/> XML Editor. Dostopno na:

http://www.oxygenxml.com/download.html [20. 7. 2013].

[21] Robie, J., Chamberlin, D., Dyck, M., Snelson, J. W3C Candidate

Recommendation: XQuery 3.0: An XML Query Language. 2013. Dostopno na:

http://www.w3.org/TR/xquery-30/#id-group-by [20. 7. 2013].

[22] Rouse, M. What is load testing? 2007. Dostopno na:

http://searchsoftwarequality.techtarget.com/definition/load-testing [18. 7. 2013].

Page 72: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

61

[23] Rouse, M. What is set-top box? 2005. Dostopno na:

http://searchnetworking.techtarget.com/definition/set-top-box [20. 7. 2013].

[24] Saxonica. Saxon Developer Guide: Saxon API for .NET. 2013. Dostopno

na: http://www.saxonica.com/documentation/index.html#!dotnet/dotnetapi [20. 7.

2013].

[25] Saxonica. Saxon Developer Guide: What is Saxon? 2013. Dostopno na:

http://www.saxonica.com/documentation/index.html#!about/whatis [20. 7. 2013].

[26] Saxonica. Saxon Developer Guide: XQuery 1.0 Conformance. 2013.

Dostopno na:

http://www.saxonica.com/documentation/index.html#!conformance/xquery [20. 7.

2013].

[27] Saxonica. The XSLT and XQuery Processor. 2013. Dostopno na:

http://saxon.sourceforge.net/ [20. 7. 2013].

[28] Saxonica. Why XSLT and XQuery? Dostopno na:

http://saxonica.com/html/introducing/introducing.html [20. 7. 2013].

[29] The Apache Software Foundation. Dostopno na: http://incubator.apache.org/

[12. 7. 2013].

[30] Thursby, A. Electronic Programming Guide. Dostopno na:

http://dvr.about.com/od/dvrbasics/g/Electronic-Programming-Guide.htm [20. 7.

2013].

[31] Tverskov, J. XQuery and XSLT compared. 2008. Dostopno na:

http://www.xmlplease.com/xquery-xslt [15. 7. 2013].

[32] W3C. Process Document: Technical Report Development Process.

Dostopno na: http://www.w3.org/2005/10/Process-20051014/tr.html#RecsCR [20.

7. 2013].

[33] Webopedia. Multithreading. Dostopno na:

http://www.webopedia.com/TERM/M/multithreading.html [20. 7. 2013].

[34] Wikibooks. XQuery/Benefits. 2011. Dostopno na:

http://en.wikibooks.org/wiki/XQuery/Benefits [8. 7. 2010].

[35] Wikipedia. Application programming interface. 2013. Dostopno na:

http://en.wikipedia.org/wiki/Application_programming_interface [12. 7. 2013].

Page 73: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

62

[36] Wikipedia. Xquery. 2013. Dostopno na:

http://en.wikipedia.org/wiki/XQuery [31. 5. 2010].

[37] Žatuchin, D. XML Seminar: XQuery. Wroclaw: University of Technology,

2006. Dostopno na: http://www.slideshare.net/dizhat/xquery-overview [8. 6. 2010].

[38] Žumer, V., Mernik, M. Principi programskih jezikov. Maribor: Fakulteta za

elektrotehniko, računalništvo in informatiko, Inštitut za računalništvo, 2001.

Page 74: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi

63

PRILOGE

Vsebina na priloženi zgoščenki:

• Diplomsko delo v obliki PDF

• Diplomsko delo v obliki DOC

• Rešitev iskalnika AmisTV z uporabo XQuery v obliki projekta Microsoft Visual

Studio 2008

Page 75: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi
Page 76: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi
Page 77: UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA … · XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi