Resum
L’XML és un llenguatge que permet tenir informació estructurada, ja sigui per a intercanvi entre plataformes o simplement per facilitar un ràpid accés a continguts. La seva àmplia acceptació ha portat a la necessitat d’idear mecanismes per poder emmagatzemar, de manera fàcil i àgil, grans volums de documents XML.
A l’hora de cercar estratègies d’emmagatzematge cal tenir clar que els documents XML a emmagatzemar els podem classificar en:
- Documents centrats en dades (data centric), pensats per a l’intercanvi entre plataformes. Solen ser documents amb estructures regulars i ben definides. Les dades que transmeten són partícules atòmiques ben definides. En moltes ocasions les dades són actualitzables. Acostumen a tenir com a origen una base de dades i, en conseqüència, no és gaire important la seva persistència com a document XML. Exemples: dades de clients, proveïdors, empleats, comandes, albarans, factures…
- Documents centrats en el document (document centric), amb una estructura irregular. L’origen i el destí acostuma a estar en les persones i solen estar fets a mà. N’hi ha que poden arribar a tenir un cert format, però no és estricte ni definit i en tal cas parlem de dades semiestructurades. Exemples: llibres, correus electrònics, anuncis, informes mèdics…
Tècnicament hi ha tres possibles estratègies per emmagatzemar els documents XML:
- Enregistrament directe en el sistema d’arxius del sistema operatiu. Opció descartada per a grans volums d’informació en què ens interessa disposar de facilitats de recerca i actualització.
- Enregistrament en un dels tipus de bases de dades tradicional: relacional, jeràrquic o orientat a objectes. Opció vàlida, però que obliga a una costosa transformació del document XML cap al model del’SGBD.
- Enregistrament en una base de dades XML nativa. Opció que permet enregistrar directament el document XML a la BD sense cap tipus de transformació.
Per SGBD-XML natives entenem aquells SGBD que han estat ideats per emmagatzemar documentació XML i que disposen dels mecanismes adients per facilitar-ne la gestió.
Per SGBD-XML habilitades entenem els SGBD predecessors (SGBDJ, SGBDR i SGBDOO) que han incorporat estratègies d’emmagatzematge per a documentació XML.
La comparació dels SGBD-XML natives envers els SGBD tradicionals (SGBDJ, SGBDR i SGBDOO) només té sentit en parlar de l’emmagatzematge XML utilitzant les tècniques natives dels SGBD tradicionals, és a dir, sense que aquests introdueixin cap nova funcionalitat específica per a XML, ja que en cas d’introduir-ne ja estaríem parlant d’SGBD-XML habilitades.
Establir, en aquests moments, avantatges i inconvenients d’utilitzar SGBD-XML habilitades és difícil, ja que els SGBD que desenvolupen extensions XML han evolucionat tant aquestes extensions que es fa difícil distingir-los dels SGBD-XML natives. De fet, els principals SGBD tradicionals existents documenten les seves extensions XML com a BD-XML natives.
Els diversos SGBD-XML natives faciliten biblioteques per permetre l’accés al’SGBD des dels llenguatges més populars (Java, C++, .NET, Perl, PHP…), però no tots els SGBD faciliten les biblioteques per a tots els llenguatges. Així doncs, per saber quines biblioteques facilita cada SGBD, caldrà analitzar la seva documentació. D’altra banda, tenint en compte que Java és un dels llenguatges més utilitzats actualment, és força normal que la majoria d’SGBD facilitin biblioteques Java per poder desenvolupar aplicacions en Java que accedeixin a les BD-XML natives.
Les BD-XML natives són relativament modernes i els darrers anys, des del 2000, hi ha hagut diversos intents de generar un estàndard de connexió Java per als SGBD-XML natives. La utilització d’aquests estàndards facilita la reutilització de les aplicacions per a diferents SGBD, però constitueixen una capa més de programari, ja que normalment els SGBD faciliten una biblioteca pròpia per accedir a l’SGBD i les API estàndard són una capa intermèdia entre la biblioteca pròpia de l’SGBD i l’aplicació que utilitzen les API estàndard. Si només s’ha de desenvolupar programes per a un SGBD concret, és millor utilitzar l’API específica facilitada per l’SGBD.
Les diverses API (específiques o estàndards) faciliten mecanismes per executar instruccions de consulta i actualització sobre les BD-XML.
Pel que fa a instruccions de consulta, la majoria de SGBD-XML natives acostumen a permetre la utilització dels llenguatges de consulta XPath i XQuery.
Pel que fa a instruccions d’actualització, hi ha diverses possibilitats:
- L’extensió Update promoguda per Patrick Lehti, implementada en els SGBD eXist-db i Sedna.
- L’extensió XQUF promoguda per W3C, utilitzada en el SGBD BaseX.
Els SGBD que implementen l’extensió Update poden incorporar control transaccional (amb instruccions de validació -commit- i refús -rollback-). Els SGBD que no incorporen control transaccional treballen en mode autocommit. Sedna l’incorpora i, per contra, eXist-db no l’incorpora.
L’extensió XQUF no facilita instruccions específiques per gestionar transaccions i s’entén que cada execució d’una instrucció XQUF és una transacció. En cas que vulguem executar en una transacció diverses instruccions, cal posar-les en seqüència, separades per una coma.
XQuery API for Java (XQJ) és una interfície de programació d’aplicacions Java pensada per utilitzar el llenguatge XQuery per obtenir informació de BD-XML natives, de forma semblant a com JDBC és una API pensada per utilitzar el llenguatge SQL per accedir a BDR.
XQJ va néixer el 2003 i la seva versió definitiva ha estat publicada el 2009. També és coneguda com a JSR 225, ja que ha estat dissenyada com un projecte JCP (Java Community Process). De moment (versió 1.7 de Java), no forma part de la biblioteca estàndard de classes Java.
Nombrosos SGBD-XML natives faciliten la connectivitat des de Java mitjançant aquesta XQJ, de manera que podem desenvolupar aplicacions que accedeixin a SGBD-XML natives via XQJ amb l’única particularitat d’haver d’utilitzar la implementació de l’API que facilita cada SGBD.
XQJ facilita mètodes per executar sentències de consulta (llenguatges XQuery i XPath), recuperar el conjunt de resultats i mètodes per executar sentències i ordres que no retornen cap resultat. Pel que fa a les sentències d’actualització:
- Cal utilitzar els mètodes per executar sentències de consulta, quan l’SGBD facilita l’extensió XQUF com a llenguatge d’actualització.
- Cal utilitzar els mètodes per executar sentències i ordres que no retornen cap resultat, quan l’SGBD incorpora l’extensió Update promoguda per Patrick Lehti.
XML:DB, també anomenada XAPI, és una API ideada pel grup XML:DB, iniciativa apareguda l’any 2000 per intentar aconseguir un mecanisme estàndard d’accés a les BD-XML natives, de manera similar al mecanisme JDBC per a les BDR, davant els mecanismes propietaris que cada SGBD-XML natives es veia obligat a dissenyar. El grup està inactiu des del 2003, la qual cosa ens permet considerar obsoleta aquesta API.
L’any 2003, precisament l’any en què va cessar l’activitat del grup XML:DB, va néixer l’API XQJ, dissenyada com un projecte JCP (Java Community Process), de la qual l’any 2009 se n’ha publicat la versió definitiva.



