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.

Annonceindlæg fra Conscia

Få en hurtigere, billigere og mere sikker AI-rejse

Slip for uforudsigelige omkostninger i skyen og opnå fuld datakontrol med en AI-pod, der samler al nødvendig infrastruktur i dit eget datacenter.

Navnenyt fra it-Danmark

Norriq Danmark A/S har pr. 1. september 2025 ansat Birthe Kamstrup som Data & AI Consultant. Hun skal især beskæftige sig med at optimere datadrevne beslutningsprocesser til glæde for Norriq's kunder. Hun kommer fra en stilling som Teamlead/Senior Insight Specialist hos CompanYoung. Hun er uddannet i sociologi og har en bachelor i erhvervsøkonomi på Aarhus universitet. Nyt job

Birthe Kamstrup

Norriq Danmark A/S

Sentia har pr. 1. oktober 2025 ansat Morten Jørgensen som Chief Commercial Officer. Han skal især beskæftige sig med udbygning af Sentias markedsposition og forretningsområder med det overordnede ansvar for den kommercielle organisation. Han kommer fra en stilling som Forretningsdirektør hos Emagine. Nyt job
Netip A/S har pr. 19. august 2025 ansat Jacob Vildbæk Jensen som Datateknikerelev ved afd. Herning og afd. Rødekro. Han har tidligere beskæftiget sig med tjenerfaget,. Nyt job