Zoeken in XML-data kan prima op de ‘oude’ manier
Andere aanpak Omdat meer en meer gegevens in XML-vorm worden opgeslagen, is behoefte ontstaan aan databasesystemen die goed met XML overweg kunnen. Een bedrijf als Software AG heeft daarvoor bijvoorbeeld - van de grond af - Tamino ontwikkeld. "Maar dat soort systemen kan nog steeds niet efficiënt overweg met grote hoeveelheden data en grote bestanden", stelt Stefan Manegold van het CWI. Hij zegt dat nu is aangetoond dat met relatief beperkte inspanningen een andere aanpak mogelijk is. Bestaande relationele-databasetechnologie - in dit geval het bij CWI ontwikkelde open source-RDBMS MonetDB - biedt een hoeveelheid uitgewerkte kennis waarmee je je voordeel kunt doen. De op XML-gegevens toegespitste vraagtaal XQuery, die als W3C-standaard vrijwel geaccepteerd is, is nu door de onderzoekers geïmplementeerd op MonetDB. Tot dusver was de aanpak van het doorzoeken van XML-bestanden wat ‘naïef’, betoogt Manegold. "De gangbare benadering is het maken van een XQuery-processor als een losstaand program dat de XQuery-vragen kan loslaten op één enkel XML-bestand. Maar je wilt in de praktijk honderden bestanden snel doorzoeken en nog steeds efficiënt kunnen werken als je meer data hebt dan het werkgeheugen van de computer." In MonetDB/XQuery worden XML-documenten, die een soort boomstructuur hebben, niet op een XML-specifieke manier opgeslagen, maar uit elkaar gehaald en op een bepaalde manier in relationele tabellen opgeslagen (‘shredding’), zodanig dat de werking heel efficiënt is. Door XQuery-taal te vertalen naar relationele algebra, danwel SQL, zijn die documenten vervolgens snel te doorzoeken. De waarde van XQuery boven het gangbare SQL is daarbij significant; je doorzoekt niet alleen de inhoud van documenten, maar ook de structuur. De CWI-onderzoekers hebben dat al vergeleken met het doorzoeken van een bibliotheek: je kunt een catalogus met boektitels doorspitten, maar je kunt ook op de planken zoeken naar ‘dat grote in leer gebonden boek, dat er uitziet als een bijbel’. "We hebben dus XQuery geïmplementeerd op een relationele back-end en hebben daarmee aangetoond dat het kan en dat het snél kan. De meeste bestaande losse programmaatjes en de database-oplossingen als XHive en Tamino zijn misschien snel met kleine documenten, maar worden al trager met grotere en documenten boven een gigabyte kunnen ze vaak helemaal niet meer aan. Wij kunnen met onze oplossing bestanden van 11 gigabyte aan." Relationele algebra Manegold ziet voor het CWI geen directe rol weggelegd in het beschikbaar maken van de voltooide XQuery-technologie voor grote commerciële RDBMS’en als Oracle en DB2 (IBM). "Maar de Pathfinder-technologie uit deze samenwerking waarop MonetDB /XQuery is gebaseerd is wel opgezet op een zodanige manier dat we relationele algebra kunnen genereren. De mensen in Konstanz hebben het met wat uitbreidingen bovenop de PostgreSQL-database [een andere open sourcedatabase - red.] geïmplementeerd, alleen om aan te tonen dat het kan." De grote databaseleveranciers zitten overigens niet stil als het om XML-ondersteuning gaat. Zowel IBM als Oracle en Microsoft bieden met hun relationele databases al een zekere mate van XML-ondersteuning, maar daarbij gaat het vooral om een oplossing die ‘goed genoeg voor de meeste toepassingen’ is. Het bovengenoemde ‘shredding’ en de ongedeelde opslag als ‘binary large object’ (BLOB) zijn daarin gemeengoed, maar de brug tussen gestructureerde en - vanuit RDBMS-oogpunt - ongestructureerde XML-data is niet echt geslagen, omdat de XML-data als relationele data wordt behandeld. Verandering De volgende versie van DB2, voorlopig Viper genoemd, zal daar verandering in brengen, beloofde Janet Perna van IBM onlangs. Viper zal volgens haar het ‘persen’ van ongestrucureerde (XML-)data in het relationele rijen-en-kolommenmodel overbodig maken. Perna, die IBM’s databasedivisie leidt, zal beide gegevensvormen ‘native’ ondersteunen, waarbij zowel SQL als XQuery als vraagtaal gebruikt kunnen worden. XML blijft op die manier altijd opgeslagen en getransporteerd als XML. Viper bevindt zich inmiddels in het begin van het bètastadium; de database zal pas ‘in 2006’ officieel beschikbaar komen.