Versiebeheer via <strong>Oracle</strong> XML-DBVersiebeheer via <strong>Oracle</strong> XML-DB<strong>Oracle</strong> XML-DB is de ‘no cost’ optie in een <strong>Oracle</strong> database die specifiek gericht isop XML. Al vanaf de eerste officieel ondersteunde <strong>Oracle</strong> XML-DB 9.2.0.3.0 versieheeft deze XML-functionaliteit in de database zich niet begrensd op alleen hetcreëren en de opslag van XML. <strong>Oracle</strong> heeft proberen te voldoen aan alle gesteldeeisen van een moderne XML-database. Zowel ‘native’ als ‘non-native’ opslagstructurenworden ondersteund in de laatste versies van de <strong>Oracle</strong> database.Door Marco GralikeDeze veelheid aan XML(Type) datatype opslagstructuren is toepasbaarin verschillende XML business cases. Daarbij ondersteunenze de meest nieuwe standaarden op het gebied van SQL/XML, XInclude, XLink, XPath, XSLT en XQuery. Zo is er vanaf hetbegin ook een XDB Repository voor opslag en de bijbehorendeuitgebreide XML-ondersteunende interfacemethodieken. Datakan direct in de database worden bewerkt of uitgevraagd via Web-DAV, FTP of HTTP(S).De beveiliging van deze interfaces is geïmplementeerd, via AccessControl Lists (ACL’s), door gebruik te maken van het VirtualPrivate Database (VPD)mechanisme dat al aanwezig was in dedatabase. Hier is geen extra licentie voor nodig, omdat dit doorde database zelf wordt gebruikt in het tot stand brengen van debenodigde interface, file of folderbeveiliging in de XML_DB omgeving.Vele functies of <strong>Oracle</strong> softwarepakketten maken in een<strong>Oracle</strong> 11 database gebruik van deze XML-DB functies, bijvoorbeeld<strong>Oracle</strong> Database Vault, waarvoor wel een extra licentieverplichtinggeldt.InzetbaarheidDeze interactie met andere software pakketten en PL/SQL ondersteuningheeft er voor gezorgd dat <strong>Oracle</strong> XML-DB vanaf <strong>Oracle</strong>11 een core onderdeel is van de hedendaagse <strong>Oracle</strong> database.Al deze extra functionaliteit maakt de XML-DB omgeving uitermategeschikt om bijvoorbeeld oudere proprietary relationeleomgevingen te ontsluiten door, bijvoorbeeld, gebruik te makenvan de Native Database Web Service (NDWS) functionaliteit.Deze biedt een oplossing door de database om te toveren tot eenSOA end point en hiermee volwaardig te integreren in een SOA/web- of andere hedendaagse architectuur. Hiervoor hoeft dusgeen nieuwe database omgeving opgezet te worden. Vanwege degrote hoeveelheden XML-data die tegenwoordig in een IT-omgevingvoorkomt is een XML-DB-omgeving ook uitermate interessantom meer met al die XML-data te doen.De XML-DB-functionaliteit kan worden ingezet als een ETLomgevingom van XML-data naar relationeel of van relationeledata naar XML te converteren. Steeds vaker worden er OLAPachtigeXML-DB omgevingen opgezet om zo meer te kunnen doenmet al deze data in XML. Door gebruik te maken van de in XML-DB aanwezige dictionary structuren zoals de XDB Repositoryen Binary XML opslag, is het mogelijk om honderden Gigabyteaan XML-data efficiënt te doorzoeken of relationeel beschikbaar temaken. De grootste huidige XML-DB implementatie in Amerikaomvat meer dan 10 Terabyte aan XML-data opgeslagen in eenenkele XMLType gepartitioneerde kolom. De XML-DB XBRLExtention in <strong>Oracle</strong> versie 11.2.0.2 biedt ondersteuning aan grotehoeveelheden eXtensible Business Reporting Language (XBRL)data, die gebruikt kan worden voor financiële rapportage en verantwoordingaan officiële instanties.14 OGh Visie
Versiebeheer via <strong>Oracle</strong> XML-DBDe XML-DB RepositoryEen belangrijk onderdeel van de XML-DB functionaliteit is deXDB Repository. Dit is de basis voor onder andere de volgendeimplementaties en ondersteuning:• Performance optimalisatie van XML-opslag en -generatie• XML Schema opslag en performance-optimalisatie• XML Schema Evolutie, ondersteuning bij wijzigingen inhet XML Schema• Configuratie en beveiliging van interfaces zoals WebDAV,HTTP(s), FTP, SOAP toegang• Configuratie en beveiliging van de zogenaamde ‘servlets’ zoalsde PL/SQL gateway waarvan APEX gebruikmaakt en bijvoorbeeldde al genoemde Native Database Web Service• Beveiliging via ACL’s van database, XML en XDB Repository(file/folder)structuren• XDB Repository Events, een ‘trigger’ mechanisme dat ingezetkan worden op veranderingen in de XDB Repository• Versiebeheer-implementatie.De benodigde (meta)data om al deze functionaliteit te ondersteunenis opgeslagen in tabellen van de database user XDB. Sommigevan deze tabellen zijn standaard relationele tabellen, anderezijn specifiek voor XML-opslag die zich conformeren aan XMLSchema’s. Dat wil zeggen dat de XML-data die in deze ‘XMLTypeTables’ is opgeslagen voldoet aan de structuren gedefinieerd ineen bijbehorend XML Schema.De belangrijkste XDB Repository tabel is de XDB$RESOURCEtabel waarin – bijna - alle data en metadata van XML-DB structuren,ook normale files die niet een XML-karakter hebben,wordt opgeslagen. De inhoud van deze XDB$RESOURCE XML-Type tabel moet voldoen aan de structuren zoals gedefinieerd inhet bijbehorende xdbresource.xsd XML Schema. Dit XML Schemadwingt af dat tijdens het opslaan in deze tabel van data, bijvoorbeeldeen normale file zoals een plaatje in JPG, PNG etc.,formaat, of XML file, automatisch extra data hieraan wordt toegevoegdin de XDB$RESOURCE tabel.De XMLType XDB$RESOURCE tabel is ook direct toegankelijkvia twee views met de namen:• PATH_VIEW - Bevat een rij voor elk mogelijk pad naareen resource• RESOURCE_VIEW - Bevat een rij voor elke resourceDit toevoegen van metadata wordt automatisch door de <strong>Oracle</strong>XML-DB omgeving gedaan of kan door een gebruiker wordengedefinieerd door de standaard functionaliteit hiervan uit te breiden.Een voorbeeld is de uitbreiding met EXIF functionaliteit dieextra metadata-opslag verzorgt bij foto’s, van fotocamera model,gebruikte belichting- en sluiterinformatie. Standaard slaat <strong>Oracle</strong>de volgende metadata op:• De naam van het object• De naam van de maker van het object• Creatie en modificatie datum van het object• Mime type van het object• Characterset van het object• Access Control List referentie informatiebehorende bij het object• Het eventueel aanwezige versienummer van het object• De grootte van het object.De inhoud van een file wordt in een securefile LOB kolomopgeslagen, die deel uitmaakt van de XDB$RESOURCE tabeluitgezonderd de ‘hiërarchisch’, XDB Repository afhankelijke, objecten.Het is mogelijk om, op basis van een XML Schema, eeneigen ‘XDB$RESOURCE’-achtige opslag tabel te maken. De inhoudvan deze objecten wordt dan opgeslagen in deze eigen gedefinieerdetabel maar de metadata zoals, creatiedatum etc. diebetrekking heeft op de inhoud van die tabel, wordt opgeslagen inde standaard XDB$RESOURCE tabel.Vanuit de database is het mogelijk om alle structuren in de XDBRepository te manipuleren. Dit betekent dat er via PL/SQL codefiles op en neer kunnen worden gestuurd, deze worden gefilterdof gemanipuleerd op inhoud, naar behoefte worden aangemaaktof de inhoud van deze objecten wordt gevuld met de data uit tabellen.Een van de weinige beperkingen ten aanzien van de XDBobjecten, of ook wel ‘resources’ genoemd naar analogie van deIETF WebDAV standaard, is dat deze in de XDB Repository eenmaximale grootte kunnen hebben van 4 Gigabytes.Deze hiërarchische resources worden automatisch beveiligd meteen default Access Control List file met de naam bootstrap_acl.xml. (zie code op de volgende pagina)Deze bootstrap_acl.xml file wordt door zichzelf beveiligd, dat wilzeggen via het Virtual Private Database beveiligingsmechanismewaarop de XML-DB ACL methodiek is geïmplementeerd. Doorje eigen specifieke ACL files te definiëren en te koppelen aan file,folder, structuren kan men de default beveiliging nog striktermaken. In het begin kan het dan ook bevreemdend zijn dat eenuser met DBA-rol rechten geen toegang kan hebben tot resourcesin de XDB Repository omgeving omdat deze zo zwaar beveiligdzijn. Ook kan het voorkomen dat men wel leesrechten heeft viaWebDAV maar hetzelfde object niet benaderd mag worden viaPL/SQL (via de database).Zoals verwacht mag worden in een XML-omgeving, is de inhoudvan een ACL in XML-formaat waarvan de structuur moet voldoenaan een XML Schema. In deze op de WebDAV gebaseerdebeveiligingsstructuur word de ‘resource’ (object, file, folder) gekoppeldaan rechten en hun eigenaar, de zogenaamde ‘principal’.Een principal kan een van de volgende waarden hebben:• Een database user of rol• Een user of groep die gedefinieerd is in een <strong>Oracle</strong> LDAP server• Een principal gedefinieerd als ‘trusted application’OGh Visie15