R20/Consultancy B.V. - The website of Rick F. van der Lans

R20/Consultancy B.V.

The website of Rick F. van der Lans

Home page
Up

XML niet ideaal voor gegevensopslag

Auteur: Rick F. van der Lans
Geschreven: maart 2001
Gepubliceerd in: CM Corporate.Net, nummer 166

Het is u waarschijnlijk niet ontgaan dat XML een populariteitsniveau heeft waar elke popster jaloers op kan zijn. En terecht, want als taal voor gegevensuitwisseling is het uitstekend. Maar zoals zo vaak geschiedt, gaan de aanhangers ook hier te ver. XML wordt ingezet voor de meest oneigenlijke toepassingen. Vaak gaat het om een datamodel voor gegevensopslag en in feite is dat een stap terug in de tijd.

Data en metadata in één XML-document combineren, is een simpel en elegant principe. Het is voor gegevensuitwisseling beter dan het werken met bestanden met alleen data en geen metadata. Kennis over het opslagformaat moet dan in de applicaties geïmplementeerd worden. Denk maar aan bestanden waarin waarden door komma’s worden gescheiden. De versturende en ontvangende applicaties moeten dan weten welke de eerste waarde is, welke de tweede, welke de derde enzovoorts.

Voor gegevensuitwisseling hebben we dus niet veel op XML aan te merken. Maar we willen de data van XML-documenten in onze databases opslaan. Omdat op de markt van databaseservers het relationele datamodel overheerst, is het logisch dat de leveranciers mogelijkheden bieden om XML-documenten te registreren. Bekende producten, zoals DB2, Oracle en SQL Server, bieden twee alternatieve opslagmethoden: in records of als bytestrings - ook wel Blobs genoemd -, elk met hun eigen voor- en nadelen. 

Slaan we een hiërarchisch XML-document op als aparte records in verschillende tabellen, dan moet er een soort vertaalslag plaatsvinden. Dat kost tijd en vertraagt de snelheid van het opslaan. Bij het ophalen van de documenten krijgen we een tegenovergestelde vertaalslag. Als we het hele document ongewijzigd als bytestring opslaan, hebben we dat probleem niet. Zonder tijdrovende vertaalslag wordt het hele document met één simpele instructie naar de database geschreven. Als aparte records opgeslagen gegevens zijn anderzijds wél toegankelijk voor andere tools die met SQL de database kunnen benaderen. We kunnen op elk willekeurig deel zoeken en de gegevens er in elke vorm weer uithalen. Bij bytestrings geldt dat niet. Aleen producten die met XML weten om te gaan, kunnen die data manipuleren, en dit is bij de meeste tools niet het geval. Daarvoor moeten we eerst het volledig document ophalen en het met talen als XPath of XSL bewerken. Traag!

Enkele leveranciers zijn zich maar al te goed bewust van de beperkingen van relationele databaseservers. Tamino van Software AG en eXcelon van eXcelon Corporation ondersteunen niet het bekende relationele datamodel, maar gebruiken het XML-datamodel. Software AG was ooit de leverancier van de hierarchische databaseserver Adabas en eXcelon heette ooit ObjectDesign, de leverancier van ObjectStore. Voor eXcelon en Tamino is er geen vertaalslag nodig om XML-documenten op te slaan en weer op te halen én kunnen ze elk willekeurig deel uit een document halen. 

Tot zover klinkt alles goed. Maar toch zijn er ook hier problemen. Gaat u maar eens terug in de geschiedenis. Relationele databaseservers danken hun succes aan de beperkingen van de voorafgaande generatie - de databaseservers met een hiërarchisch datamodel. Hiërarchisch opslaan van gegevens leidt tot duplicatie en geeft altijd problemen als we de gegevens niet volgens de vastliggende, hiërarchische indeling benaderen. Na jarenlang debatteren in de academische en ook de commerciële wereld heeft uiteindelijk niet-hiërarchisch overwonnen. Zijn we na al die jaren de nadelen vergeten? Het lijkt er helaas wel op. En dan ‘vergeten’ we even dat data opgeslagen in XML-databaseservers niet zomaar benaderbaar zijn voor querytools, OLAP-tools, 4GLs enzovoorts. 

Natuurlijk hebben we nu problemen met de combinatie van relationeel en XML, maar die waren er ook al met de koppeling van relationeel en object-oriëntatie en met relationeel en OLAP. Toch kwam de relationele markt in beide gevallen met een passende oplossing. Aangezien het soms jaren duurde om het nieuwe soort workload te kunnen afhandelen, konden in de tussentijd specialistische databaseservers een markt voor zichzelf te creëren. 

Maar laten we niet vergeten dat het steeds om een tijdelijke oplossing ging. En dat zal voor de specialistische XML-gebaseerde databaseservers het geval zijn. Een hiërarchische opslagstructuur is niet pefect, ook niet als die opslagstructuur XML heet. Uitzonderingen daargelaten is XML prima voor gegevensuitwisseling, maar niet voor gegevensopslag.

 

If you have any questions or remarks concerning this website, please send us an email: info@r20.nl.
Copyright © 2009 R20/Consultancy B.V.