XQuery: XML's SQL

Denne artikel stammer fra det trykte Computerworlds arkiv. Artiklen blev publiceret den CTO d. 6. maj 2005.


Forespørgselssproget XQuery anvendes til at søge i XML-dokumenter, men kan også anvendes til at hente information fra relationelle databaser.

Der er noget i gære på databasefronten. XQuery dukker op i flere og flere produktbeskrivelser. Oracle har annonceret, at den kommende release 2 af databasen Oracle 10g vil have XQuery, og senest har Microsoft meddelt, at SQL Server 2005 også vil indeholde XQuery. Men hvad er XQuery?
Som SQL er et forespørgselssprog mod relationelle data, er XQuery et forespørgselssprog mod XML-data. XQuery er en standard som er under udarbejdelse af World Wide Web-konsortiet (W3C), der er ansvarlig for blandt andet XML.
Den opmærksomme læser vil bide mærke i, at standarden er under udarbejdelse. Det afholder dog ikke leverandørerne fra at implementere den foreløbige standard i deres produkter.
Ifølge årets første nummer af det kvartårlige DB2-magazine er en lille gruppe DB2-kunder igang med at afprøve en hybrid DB2, hvor man kan anvende både SQL og XQuery som forespørgselsprog.
Ifølge DB2 Magazine vil der komme en generel betaversion af DB2-hybriden i løbet af i år.
Som Microsofts SQLServer 2005 vil DB2-hybriden håndtere XML-data i rent format; det vil sige, at XML-strukturen ikke kunstigt splittes op i en række tabeller eller gemmes i Character Large Object (CLOB), som mange relationelle databaser gør det i dag. Anvendes CLOB, vil XML-dokumentet blot gemmes som en stor enhed i databasen, uden de store søgemuligheder. Hvis XML-dokumentet splittes op i en række tabeller, vil man kunne søge ved hjælp af SQL, men XML-dokumentets hierarkiske struktur vil være gået tabt.

I dag anvender mange databaseløsninger opsplitningen af XML til tabeller. Det tvinger udviklerne til at skrive meget kode for at kunne foretage mapningen mellem XML og relationelle data. Ofte anvendes JDBC og ODBC til at foretage SQL-forespørgsler mod en relationel database. Når data returneres, anvendes DOM eller SAX til at opbygge en XML-struktur og XSLT til at vise de fundne data i en HTML-side.
Udviklerne vil få det nemmere, når databaserne begynder at opbevare data i rent XML-format og tilbyder XQuery som standard. Med annonceringerne fra Oracle, Microsoft og IBM om at gemme XML-dokumenter i rent format, følger de tre store databasefirmaer efter XML-pioneren Software AG, der i over fem år år har anvendt rent XML-format som lagringsformat i databasen Tamino.

XQuery er altså klar til rendyrket XML, men XQuery er ikke kun begrænset til at søge i XML-data.
Xquery kan også lave forspørgsler mod data, der ikke er i XML-format, hvis der er etableret et XML-view på de underliggende data. Det er eksempelvis hvad BEA gør med deres Liquid Data for Weblogic, som de introducerede i november 2002. Her skabes et XML-view på data, der ikke er i XML-format - eksempelvis relationelle data, flade files og så videre - og XQuery anvendes til at lave fore-spørgsler på tværs af XML- og ikke-XML-data. Det er samme strategi, som IBM følger med deres WebSphere Information Integrator. Ifølge Nelson Mattos, Vicepresident of Information Integration hos IBM, har XQuery større udtryksmuligheder end SQL, der er begrænset til den relationelle struktur.
Så XQuery kan altså både anvendes til at forespørge på rene XML-data og kan sammen med middleware, der giver et XML-view på ikke XML-data, forespørge mod ikke-XML-data.
Det er derfor ikke overraskende, at udviklere tilsyneladende har taget XQuery til sig. I en nylig undersøgelse af XQuery-teknologiens udbredelse blev 550 softwareudviklere spurgt om de brugte teknologien. Over halvdelen var allerede igang med at lave XML-forespørgsler med XQuery, mens godt en trediedel regnede med at tage XQuery i anvendelse i år. Undersøgelsen var foretaget af Data Direct, der blandt andet udvikler XQuery-produkter. Med de forbehold som man bør have over for en leverandør-sponseret undersøgelse, viser det dog en stor interesse for XQuery. En anden interessant ting man kan læse ud af DataDirects undersøgelse er, at omkring en fjerdedel anvender XQuery i forbindelse med forespørgsler mod forskellige datakilder.

Boks:
XQuerys blomster
XQuerys FLWR-konstruktion (For, Let, Where, Return) kan sammenlignes med SQL's Select-konstruktion.

FOR-clause giver mulighed for loop-konstruktion.
Binder en eller flere værdier til en variabel: for $x in (1, 2, 3)

LET-clause binder resultatet af et udtryk til en midlertidig variabel: let $x := (1, 2, 3)

WHERE-clause kan sammenlignes med SQL's WHERE-clause: where $x eq $y

RETURN-clause specificerer forespørgslens ønskede XML-output. Kan i store træk sammenlignes med SQL's SELECT, men der er større udtryksmuligheder i XQuery end i SQL: return {$x}

Nedenstående er et eksempel på en simpel XQuery samt resultatet.

Forespørgsel

{
for $x in (1, 2, 3), $y in (2, 3, 4)
where $x eq $y
return
{$x}
}

Resultat

2
3

Figurtekst - DataDirects XQueryprodukt
DataDirect tilbyder et XQuerylag, så man kan anvende XQuery som forespørgselssprog mod både relationelle databaser og XML-datakilder.
Ved hjælp af Java API'et XQJ kan udviklere anvende XQuery i java-applikationer
Ved hjælp af Mediator og SQL Adaptere oversættes XQuery til SQL for eksempelvisDB2.

Boks:
Pionererne inden for XML-forespørgsler
Hos Interresearch, der laver online markedsundersøgelser, har man i 5 år anvendt Software AG's XML-database Tamino og har således stor erfaring med XML-forespørgsler. Hos Interresearch startede man i år 2000 med at anvende X-Query, en forløber for XQuery.
- X-Query er noget primitiv. Hvis man ønsker at opdatere et enkelt element i et XML-dokument er det nødvendigt at hive XML-dokumentet ud af databasen, opdatere og loade XML-dokumentet ind i databasen igen, fortæller teknisk direktør hos Interresearch, Ole Engele Nielsen. Han er derfor glad for at Interresearch for et års tid siden begyndte at anvende XQuery.
- Da vi skiftede fra X-Query til XQuery var det som at gå fra en Skoda til en Mercedes, siger Ole Engele Nielsen og fortsætter:
- Nu har vi den samme funktionalitet som man kender fra relationelle databaser. Nu kan vi opdatere attributterne eller et enkelt element ad gangen, uden have fat i hele XML-dokumentet.
Relationelle databaseleverandører stiller gerne spørgsmålstegn ved XML-databasernes performance.
Det har dog ikke været noget problem i Interresearchs tilfælde.
- Performance har ikke været et problem. Vi har over 10 millioner respondenters besvarelser i databasen. Vi var nervøse for, om performance ville være god nok, da vi startede, men der har ikke været nogen problemer, fortæller Ole Engele Nielsen.
Han har ikke nogen tal for antal samtidige brugere, men oplyser at store virksomheder som regel sender 15.000 spørgeskemaer ud. Online-spørgeskemaer og formularer udfyldes og gemmes i databasen døgnet rundt, mens kunden har adgang til at trække rapporter fra databasen. Det hele er baseret på Interresearchs Defgo.net-løsning, der kører 24 timer i døgnet.
Da Interresearch gik igang med at udvikle Defgo.net-løsningen, troede de, at XML hurtigt ville slå an som dataudvekslingsformat, men det er først sket for nyligt.
- Selvom XML-udvekslingen af data ikke slog så hurtigt an, har vi ikke fortrudt, at vi baserede udviklingen på XML, siger Ole Engele Nielsen. Ifølge Ole Engele Nielsen har det ikke været noget stort problem, at Xquery endnu ikke er færdigspecificeret.
- Software AG implementerer ofte standarderne inden de er helt færdige og kommer så med opdateringer, når standarderne er helt klar, oplyser Ole Engele Nielsen.

Billedtekst:
XQuery-forespørgsel mod relationelle og XML-data
Java DataDirect XQuery giver Javaudviklere mulighed for at anvende XQuery mod XML- og relationelle data.




IT-JOB
Brancheguiden
Brancheguide logo
Opdateres dagligt:
Den største og
mest komplette
oversigt
over danske
it-virksomheder
Hvad kan de? Hvor store er de? Hvor bor de?
EG Danmark A/S
Udvikling, salg, implementering og support af software og it-løsninger til ERP, CRM, BA, BI, e-handel og portaler. Infrastrukturløsninger og hardware. Fokus på brancheløsninger.

Nøgletal og mere info om virksomheden
Skal din virksomhed med i Guiden? Klik her

Kommende events
Industry 4.0 – sådan udnytter du AI og digitalisering til optimering af din produktion.

På denne konference fokuserer på en digitaliseret optimering af processer i produktions- og procesorienterede virksomheder. Herved bliver du f.eks. i stand til at kombinere maskiner med sales forecasting og derved planlægge anvendelsen af produktionsapparat og medarbejderallokering effektivt – samt begrænse materialespild og nedetid ved at optimere produktionsplanlægning og omstilling af produktionsmateriel.

04. september 2024 | Læs mere


Roundtable for sikkerhedsansvarlige: Hvordan opnår man en robust sikkerhedsposition?

For mange virksomheder har Zero Trust og dets principper transformeret traditionelle tilgange til netværkssikkerhed, hvilket har gjort det muligt for organisationer at opnå hidtil usete niveauer af detaljeret kontrol over deres brugere, enheder og netværk - men hvordan implementerer man bedst Zero Trust-arkitekturer i et enterprise set up? Og hvordan muliggør Zero Trust-arkitekturen, at organisationer opnår produktivitetsfordele med AI-værktøjer samtidig med, at de forbliver sikre i lyset af fremvoksende trusler?

18. september 2024 | Læs mere


Nye forretningsmæssige gevinster med Microsoft Dynamics 365

Eksperter fra CGI stiller skarpt på hvordan, du lærer også hvorfor det er vigtigt at have fokus på både processer, teknologi og mennesker - og hvordan du kommer i gang med løbende optimering af forretningsudvikling.

25. september 2024 | Læs mere