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

    Annonce

    Computerworld Events

    Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

    Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
    Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
    Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
    Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

    Digital transformation | Frederiksberg

    Roundtable: AI i drift – fra eksperimenter til ansvar, værdi og kontrol

    AI-initiativerne breder sig hurtigt, men skaleringen halter. Kun hver fjerde virksomhed har flyttet en større del af sine AI-eksperimenter i produktion. Computerworld samler en udvalgt kreds af CIO’er og digitale beslutningstagere til et...

    Sikkerhed | Online

    Det du glemmer i Azure - men aldrig on-prem: Sådan genfinder du kontrollen

    Undgå dyre fejl i Azure. Få styr på udfasede services, skjulte omkostninger og governance. Lær, hvordan Reserved Instances, Azure Hybrid Benefit og de rette styringsmekanismer giver mere værdi, lavere omkostninger og en mere robust Azure-platform....

    Se alle vores events inden for it

    Navnenyt fra it-Danmark

    Stine Willemoes Kondrup, Senior Project Manager hos Ascom, har pr. 22. juni 2026 fuldført uddannelsen Master i it, linjen i organisation på Aalborg Universitet via It-vest-samarbejdet. Færdiggjort uddannelse
    Norriq Danmark A/S har pr. 2. marts 2026 ansat Sarah Strøyer Hove som Consultant ERP. Hun skal især beskæftige sig med de nyeste teknologiske muligheder sammen med forretningsprocesserne. Hun kommer fra en stilling som Business Controller hos NGI A/S. Hun er uddannet hos Professionshøjskolen UCN som markedsføringsøkonom og International Handel og Markedsføring. Hun har tidligere beskæftiget sig med lager og logistik. Nyt job

    Sarah Strøyer Hove

    Norriq Danmark A/S

    Norriq Danmark A/S har pr. 2. februar 2026 ansat Vlad-Andrei Fagarasan som Solution Architect. Han skal især beskæftige sig med moderne dataplatforme og arkitekturer hvilket er med til at sikre at vi fortsat tilbyder vores kunder skræddersyede løsninger. Han har tidligere beskæftiget sig med BI- og dataprojekter i både privat og offentlig regi. Nyt job

    Vlad-Andrei Fagarasan

    Norriq Danmark A/S

    Elbek & Vejrup A/S har pr. 15. august 2026 ansat Anne-Sofie Andreasen som Project Manager i Projekt & Service. Hun skal især beskæftige sig med ledelse og koordinering af projekter og serviceopgaver. Hun kommer fra en stilling som konsulent med fokus på digitale løsninger hos XFLow. Hun er uddannet cand.it. i IT, Kommunikation og Organisation. Hun har tidligere beskæftiget sig med analyse, udvikling, test og implementering af løsninger samt udarbejdelse af brugervejledninger. Nyt job

    Anne-Sofie Andreasen

    Elbek & Vejrup A/S