2.4 Problemen en onderzoeksgebieden
Semistructured data zijn zelfbeschrijvend. Dit wil zeggen dat het schema uit de data te halen is en niet perse een van tevoren vaststaande structuur heeft. Het voordeel hiervan is dat er grote flexibiliteit zit in het verwerken van de data. Een ander voordeel wordt duidelijk als de structuur van de data verandert. Dit levert geen problemen op omdat het schema rechtstreeks uit de data gehaald wordt.
Er zijn echter ook nadelen aan verbonden.10 Op de eerste plaats is de data niet efficiënt op te slaan omdat het schema met ieder data item opnieuw moet worden opgeslagen. Als je dit niet zou doen, zou de samenhang van de verschillende data items verdwijnen en daardoor zou de data niet meer bruikbaar zijn. Een ander nadeel is dat de queries moeilijk te evalueren zijn. In het slechtste geval moet zelfs voor een simpele query de hele boomstructuur doorgewandeld worden. Het laatste en misschien wel grootste nadeel is dat queries moeilijk op te stellen zijn. Omdat er nauwelijks informatie is over de structuur is het voor de gebruiker lastig om relevante queries op te stellen.
In het gebruik van semistructured data valt vaak op dat er toch een redelijk regelmatige structuur te vinden is. Dit gegeven kan goed gebruikt worden om eerdergenoemde problemen het hoofd te bieden. Zonder van tevoren een vast schema op te stellen is het toch mogelijk om iets van een schema te maken. Er zijn twee categorieën:11
- Flexible schema formalisms: dit zijn flexibele schema's die vooraf geschreven worden. Ze kunnen in mindere of meerdere mate specifiek zijn. Een extreem voorbeeld zou een leeg schema zijn, een schema dat totaal geen structuur oplegt.
- Inferred schema: dit zijn schema's die aan de hand van de data gegenereerd worden. Mocht de data veranderen dan wordt het schema opnieuw berekend of geüpdate. Het voordeel is dat zo'n schema de structuur van de data nauwkeurig beschrijft.
Met de opkomst van XML zijn er een aantal zaken rond semistructured data die nader bestudeerd zouden moeten worden. Dit komt zowel voort uit zaken die voortkomen uit het vergelijken van XML en semistructured data als uit mogelijkheden die XML applicaties zouden moeten krijgen:12
- Order: Querytalen moeten nu ook rekening houden met hoe de input en output geordend kan worden. Daarnaast is het ook belangrijk dat een nieuw object op de juiste plaats ingevoegd kan worden. Hoewel dit bij semistructured data nog een bijzaak was, wordt het met XML een hoofdzaak.
- XML data translation: Data met dezelfde strekking (bijvoorbeeld bibliotheek gegevens) kunnen verschillende DTD's gebruiken. Hoe kunnen data dan toch goed uitgewisseld worden tussen verschillende systemen? Hierbij zijn twee problemen. Allereerst conflicten in het datatype. Is het datatype van het ene object wel hetzelfde als van het andere object. Het andere probleem is hoe het proces van uitwisselen ge(semi-)automatiseerd kan worden.
- Type checking: Dit is ook erg belangrijk bij data uitwisseling (zie vorige punt), maar kan ook een rol spelen bij het feedback geven na een query. Zo kan het handig zijn dat de query engine kennis heeft van de DTD. Op deze manier kan de gebruiker feedback krijgen over de fout die hij heeft gemaakt in plaats van een leeg resultaat.
- Optimization: Hoe kunnen queries zo efficiënt mogelijk worden uitgevoerd. Hierbij valt te denken aan het omzetten van een query in query executions plans welke makkelijker zijn te optimaliseren. Een andere benaderingswijze is door gebruik te maken van de DTD. Hierin is de structuur van het document omschreven en dit kan behulpzaam zijn bij een efficiëntere query afhandeling. Ook kan gebruik gemaakt worden van path equations. Diep geneste structuren kunnen zo gelijk gesteld worden aan kortere structuren waardoor de queries makkelijker en sneller uit te voeren zijn.
- Distributed evaluation: Omdat XML hyperlinks kent, is het mogelijk dat bij een query data nodig zijn die 'ergens anders staan'. In een ander document of zelfs op een andere server. Hier kan op verschillende manieren mee worden omgegaan. Een mogelijkheid is om alle benodigde data te downloaden naar een server en daar vervolgens de query uit te voeren. Het is echter logischer al op de host computer met de query te beginnen en deze door te geven naar een andere server als dat nodig mocht zijn. Dit werkt efficiënter, maar heeft als nadeel dat de andere server wel bereikbaar moet zijn en dezelfde query taal moet 'spreken'. De technieken die op dit moment ontwikkeld zijn voor het oplossen van deze problemen gaan allemaal uit van semistructured data. Als XML gebruikt wordt, ligt vaak in de DTD al vast waar welke data te vinden zijn. Door deze informatie te gebruiken kunnen queries efficiënter opgezet worden.
- Efficient storage: Semistructured data zijn niet efficiënt op te slaan omdat bij ieder data item ook het schema opgeslagen moet worden. In XML kan dit, door de aanwezigheid van een DTD, effectiever. Een manier is door de XML data in een objectgeoriënteerde database onder te brengen. De elementen in de DTD worden dan gekoppeld aan de objecten in de database: ieder element wordt een object. Een andere manier is om het op te slaan in een relationele database. Met behulp van data-mining technieken is het mogelijk om een goede representatie te maken van de XML data die opgeslagen kan worden in een relationele database.
10) 'Semistructured Data & XML', Dan Suciu, blz. 6.
11) 'Semistructured Data & XML', Dan Suciu, blz. 6.
12) 'Semistructured Data & XML', Dan Suciu, blz. 7-10.