Open source XML-database

Exist er en tysk Java-baseret XML-database, som kan give udvikleren et indtryk af mulighederne ved at kombinere databaser med XML. Sproget til forespøgsler hedder XPath, og databasen kan benyttes via en række forskellige grænseflader.

Hvorfor XML-databaser

Når XML-datasættene hober sig op, melder der sig et behov for at gemme dem på en fornuftig måde. Men relationsdatabaser er ikke det oplagte valg til at lagre XML-data. Det er især normalisering, som er problemet i forbindelse med XML. Enten kan man normalisere sine data til element-niveau, hvorved man mister XML-strukturen, eller man kan vælge blot at putte hele datasættet ned i en celle, og så er der ikke megen fidus i at anvende en relationsdatabase i modsætning til for eksempel flade filer.

Derfor er der et behov for egentlige XML-databaser, der klarer de problemer, som databaser er sat i verden for at løse: Strukturering af store datasæt, hurtig adgang til data og mulighed for at søge. XML-databaser vil hyppigt basere sig på XPath som søgesprog i modsætning til relationsdatabasernes SQL. XPath formulerer et sprog, som benyttes til at navigere rundt i et XML-dokument på grundlag af dokumentets struktur.

Det tyske firma Software AG er den ledende kommercielle producent af XML-databaser, men der findes også open source alternativer, som kan benyttes til eksperimenter, før man kaster sig ud i større investeringer.

Wolfgang M. Meier fra Darmstadts tekniske universitet i Tyskland har udviklet en open source database, med navnet Exist, som bygger på Java i lighed med mange andre XML-implementeringer.

Test selv

Arkitekturen i Exist.

 

Indtil den seneste version af Exist har databasen bygget oven på en relationsdatabase, men i version 0.6 kan databasen benytte sit eget interne lager. Softwaren kan give en fornemmelse for mulighederne i XML-databaser og gøre udvikleren bekendt med de spørgsmål, som opstår omkring implementeringen. XML-databaser ligger nemlig langt fra den begrebsverden, som kendes fra relationsdatabaser. XPath er ikke en slags SQL, og data indsættes i basen ved at scanne elementerne i et XML-dokument - ikke ved at indsætte primitive værdier i celler.

Test selv
Man behøver ikke engang at downloade Exist for at lege lidt med XPath-udtryk og mulighederne i databasen. På Exists hjemmeside kan man teste virkningen af forskellige XPath-udtryk på eksempeldatabasen, der ganske fornemt består af et udvalg af Shakespeares stykker i XML.

Det er ikke hele XPath-specifikationen, som er implementeret i Exits 0.6, og sproget er udvidet på en række punkter. Et eksempel på en XPath-forespørgsel, hentet fra hjemmesiden, ser således ud:

document(*)//SPEECH[starts-with(SPEAKER, 'LORD')]

De to vigtigste udvidelser til XPath er funktionerne document() og collection(), som henholdsvis benyttes til at pege på et bestemt dokument eller alle dokumenter, angivet ved en asterisk som i eksemplet herover. collection() udpeger en samling af dokumenter.

Det ovenstående eksempel udpeger således alle dokumenter, som indeholder elementet SPEECH, hvor det første indlejrede element, som følger efter, er SPEAKER, og dette element skal indeholde strengen "LORD" i sin tekst-node. Det matcher for eksempel følgende datasæt:

<SPEECH exist:id ="19727" exist:source ="/shakespeare/plays/hamlet.xml" >
<SPEAKER > LORD POLONIUS </ SPEAKER >
<LINE > He hath, my lord, wrung from me my slow leave </ LINE >
<LINE > By laboursome petition, and at last </ LINE >
<LINE > Upon his will I seal'd my hard consent: </ LINE >
<LINE > I do beseech you, give him leave to go. </ LINE >
</ SPEECH >

Nemt at komme i gang

Exist kan downloades fra projektets hjemmeside, og det er ganske nemt at komme i gang med. Softwaren kræver Java Development Kit 1.3 (JDK1.3 )eller 1.4, og den er testet under Windows 2000 og nyere Linux-distributioner samt Solaris.

Softwaren kommer som en zip-fil, der pakkes ud. Softwaren kræver at JAVA_HOME-miljøvariablen er sat, og under Windows gøres det ved at åbne et DOS-vindue, og taste

set JAVA_HOME=C:\JDK1.3.1_01

hvor den sidste del skal udskiftes med stien til mappen, hvor JDK'et ligger.

Derefter køres scriptet build.bat (og der er også et tilsvarende shell-script til Unix-folket), og så er Exist parat til brug. Til at starte med kan man via et kommandolinieprogram, exist.bat (exist.sh til Unix), prøve de eksempler til henholdsvis indeksering og forespørgsler, som medfølger i dokumentationen. Kommandolinieprogrammet befinder sig i mappen bin.

Derudover kan Exist integreres på forskellige måder. En måde er grænsefladen XML:DB API til integrering i Java-applikationer, og det er udmærket dokumenteret med eksempler i den medfølgende Developer's Guide. Derudover kan man benytte XML-RPC, som er en udbredt XML-protokol, der er understøttet i mange programmeringssprog, så man er altså ikke bundet til Java. HTTP-metoderne POST og GET kan også benyttes. En sidste spændende mulighed er at benytte Exist via Cocoon, et XML-baseret webscriptingsprog, som vi tidligere har skrevet om.

Læses lige nu

    Annonceindlæg fra SoftwareOne

    Glem hypen: Her er tre steder hvor AI allerede leverer

    Ifølge SoftwareOne ligger de reelle AI-gevinster gemt i områder af central betydning for forretningen.

    Navnenyt fra it-Danmark

    Idura har pr. 1. januar 2026 ansat Joshua Pratt, 32 år,  som software engineer. Han skal især beskæftige sig med at bruge sin tekniske knowhow og erfaring i teamet for extensions og integrationer. Han kommer fra en stilling som Tech Director hos NoA Ignite Denmark. Han har tidligere beskæftiget sig med komplekse webprojekter, senest udviklingen af det nye website og e-commerce-platform for tivoli.dk. Nyt job

    Joshua Pratt

    Idura

    Forte Advice har pr. 5. januar 2026 ansat Claes Frederiksen som Commercial Director. Claes skal især beskæftige sig med at løfte den kommercielle modenhed i teknologiprojekter og sikre, at teknologi bliver brugt som strategisk løftestang. Claes kommer fra en stilling som Senior Client Partnership Director, Nordics hos Valtech. Claes har tidligere beskæftiget sig med teknologivalg og platformstrategi til teknologidrevet forretningsudvikling og marketing initiativer. Nyt job

    Claes Frederiksen

    Forte Advice

    Idura har pr. 5. januar 2026 ansat Arjuna Enait, 34 år,  som software engineer. Han skal især beskæftige sig med videreudvikling af Verify-systemet samt arbejde på implementeringen af CIBA i Norsk BankID. Han kommer fra en stilling som software engineer hos Lasso X. Han er uddannet civilingeniør med speciale i geoteknik. Han har tidligere beskæftiget sig med at bygge microservices til dataindsamling og -processering, samt opdatere legacy-systemer. Nyt job

    Arjuna Enait

    Idura

    Idura har pr. 1. januar 2026 ansat Lars Mørch, 54 år,  som VP of Sales. Han skal især beskæftige sig med Iduras salgsorganisation, implementere en ny go-to-market-model og sikre udviklingen af virksomhedens identitetsplatform. Han kommer fra en stilling som Regional Vice President hos Avallone. Han er uddannet på CBS og har en BA i Organization & Innovation. Han har tidligere beskæftiget sig med internationalt SaaS-salg og forretningsudvikling fra både scale-ups og globale teknologivirksomheder. Nyt job

    Lars Mørch

    Idura