XML-databaseservers
Auteur: Rick F. van der Lans
Geschreven: januari 2000
Gepubliceerd in: CM Corporate.Net, nummer 143

Nee, XML-databaseservers zijn niet de volgende generatie database servers, maar wel een klasse databaseservers met zeer veel potentie. Deze databaseservers zijn speciaal ontwikkeld om snel en elegant XML-documenten op te slaan en er queries op los te laten. Voorbeelden van dit soort producten zijn Excelon van Object Design en Tamino van Software AG.
Laten we bij het begin beginnen. XML (Extensible Markup Language) is een taal waarmee de inhoud van documenten beschreven kan worden. Dit geschiedt op een wijze die te vergelijken is met die van SGML en HTML. Zijn bij HTML echter inhoud en lay-out met elkaar geïntegreerd, bij XML zijn deze gescheiden. De lay-out van een XML-document staat apart in een stylesheet gespecificeerd (eigenlijk kan een XML-document meerdere stylesheets hebben). Daarnaast kan voor een XML-document een DTD (Document Type Definition) gedefinieerd worden. Hierin staan de regels voor het XML-document gedefinieerd. Indien u een databaseachtergrond heeft: in de DTD staan de integriteitsregels beschreven waaraan de inhoud van een XML-document behoort te voldoen. Dus als we bijvoorbeeld gegevens over auto's in een XML-document willen vastleggen en we vinden dat er minimaal iets over benzineverbruik in moet staan, dan kunnen we dat in de DTD aangeven.
XML en HTML kennen twee essentiële verschillen. Ten eerste, HTML = inhoud + lay-out en XML = inhoud + lay-out + regels. Ten tweede, HTML is geschikt voor document publishing, terwijl XML geschikt is voor document publishing én data publishing. Met data publishing bedoel ik dat XML ook zeer geschikt is voor het publiceren van gegevensbestanden. XML kan ook gebruikt worden als formaat voor elektronische boodschappen (messages); iets waar HTML niet geschikt voor is.
Indien organisaties inderdaad aan data publishing willen doen, dan dient XML zeer zeker overwogen te worden. Maar hoe toon je je gegevens, bijvoorbeeld opgeslagen in een SQL-database of gewoon in indexsequentiële bestanden, als XML-documenten? Momenteel, zijn hiervoor diverse oplossingen voor beschikbaar.
Een leverancier van een 'gewone' SQL-databaseserver kan besluiten een laag software te creëren die databasegegevens toont als XML-documenten. Bij het invoeren en ophalen van gegevens vindt dan wel elke keer een vertaalslag plaats. Deze laag software moet dan binnenkomende XML-documenten omtoveren tot records die vervolgens in SQL-tabellen opgeslagen kunnen worden. Bij het ophalen van een XML-document moeten vele records tot één document worden samengesmeden. Het probleem bij beide zaken is dat één XML-document kan leiden tot vele records in vele tabellen. Met andere woorden, het opbreken en ophalen van een XML-document is een complex proces en is slecht voor performance. Maar omdat de gegevens wel in SQL-tabellen liggen opgeslagen, zijn ze wel benaderbaar met zeer veel tools. De meeste leveranciers van SQL-databaseservers volgen momenteel deze strategie.
Een andere oplossing is door producten, die reeds geschikt zijn voor het opslaan van bijvoorbeeld SGML-documenten, geschikt te maken voor XML. Hierbij moeten we aan specialistische producten denken als Astoria van Chrystal Software en Poet CMS. De kracht van dit soort producten zit voornamelijk in het beheer van de documenten: wanneer is voor het laatst een document gewijzigd en wie heeft dat gedaan, bijhouden van verschillende versies van een document. In feite zijn deze producten beter geschikt voor een gestructureerde vorm van document publishing.
De derde oplossing wordt geboden door databaseservers te ontwikkelen die een speciaal opslagformaat voor XML-documenten kennen. Hierdoor hoeft een XML-document niet vertaald te worden naar vele records. Dit is de werkwijze van Tamino. Excelon volgt bijna dezelfde aanpak, behalve dat hier de gegevens als objecten worden geregistreerd (Excelon is namelijk gebouwd met ObjectStore, een pure OO-database). Maar omdat een object net zo complex kan zijn als een XML-document is de vertaalslag gering. We kunnen dan uiteraard de gegevens niet meer met SQL benaderen (dus niet meer met veel tools), maar hebben daar een specifieke querytaal voor nodig. Hiervoor wordt XQL (XML Query language) gebruikt. XQL is een querytaal die, behalve de letters QL in de naam, niets gemeenschappelijk heeft met de bekende databasetaal SQL.
Omdat deze producten geen vertaalslag kennen, is de performance zeer goed. Ook al hebben informele benchmarks uitgewezen dat er tussen de huidige producten grote performance-verschillen bestaan, ze hebben nu al een performance die ze geschikt maakt voor het ontwikkelen van grote systemen.
Omdat XML zeer populair aan het worden is, zullen er op korte termijn meer XML-databaseservers op de markt verschijnen waarmee we XML-documenten kunnen registreren. We staan tenslotte nog maar aan het begin van deze markt (Excelon en Tamino zijn beide in de tweede helft van vorig jaar geïntroduceerd). Maar dat deze producten potentie hebben, dat staat vast. Indien u met XML werkt, is een XML-editor, zoals XMetal of Adept, niet voldoende. U doet uzelf tekort als u niet naar XML-databaseservers kijkt.