Bases de datos nativas XML



Introducción 

Es conocido por todos, que las bases de datos son una parte fundamental de todas las organizaciones, pues en ellas se almacenan información crucial para el buen desempeño de las mismas. Además de ello sabemos que XML es el presente y futuro de la administración de datos, pues este lenguaje ha permitido romper barreras y crear una manera estándar de procesar la información. 

Pues bien, XML está provocando la aparición de nuevas tecnologías, entre ellas, la aparición de una nueva generación de bases de datos, que si bien se encuentran en una fase de investigación y desarrollo, en un futuro pueden ser una buena alternativa a las ya conocidas bases de datos relacionales. Estos son aquellos basados netamente en XML o "native XML database". 

Este tipo de bases de datos son completamente distintas a las relacionales, las cuales en la actualidad tienen soporte para XML, pero aún siguen almacenando toda la información de manera relacional, es decir en forma tabular (tablas, registros y columnas) o caso contrario almacenan todo el documento en formato Binary Large Object (BLOB), pero la principal característica que brindan estas bases de datos es la capacidad de obtener los resultados de las consultas en formato XML; es por ello que dichas bases de datos pertenecen a la categoría de "XML-enabled database"

¿En que consisten las Bases de Datos nativas en XML? 
Las bases de datos nativas definen un modelo lógico para el documento XML (a diferencia de dicho modelo), además, almacena y recupera documentos de la misma manera que los XML. Por lo menos este modelo debe incluir atributos como PCDATA, y documentos en orden. Ejemplos de estos modelos son XPath, XML Infoset y modelos que implican DOM y SAX 1.0.

Base de datos centrada en documentos 
Todas las bases de datos relacionales son centradas en los Datos, pues lo que ellos almacenan en sus campos son datos simples más conocidos como datos atómicos. Una base de datos nativa en XML, no posee campos, ni almacena datos atómicos, lo que ella almacena son documentos XML, por lo tanto a este tipo de bases de datos se les denomina bases de datos centradas en documentos.

Características 
Diversos productos brindan diferentes características para las bases de datos nativas en XML, pero generalmente tienen las siguientes características:

Procesamiento de datos 
El procesamiento de datos en este tipo de bases de datos parecería ser algo muy beneficioso, pero realmente no es así, debido al formato jerárquico en el que está almacenada la información. Muchas bases de datos necesitan que el usuario recupere todo el documento XML, lo actualice con el XML API de su preferencia y posteriormente vuelva a almacenar el documento en el repositorio. Esto se debe a que aún no existe un lenguaje estándar que permita la actualización, inserción o eliminación de elementos de un documento XML. Existe un lenguaje que permite realizar actualizaciones en un documento XML pero aún no es un estándar y muchos gestores de este tipo de bases de datos no lo soportan, este lenguaje es Xupdate.

Almacenamiento 
Por deducción lógica, una base de datos nativa en XML almacena la información en formato XML, pero esto es solamente una deducción lógica, pues este tipo de bases de datos tienen repositorios con un formato "tipo XML", como puede ser DOM o Infoset. En este mismo "repositorio" (paquete de archivos) se almacenan los índices que se generan por cada documento XML almacenado.

Búsquedas 
Este tipo de bases de datos no utiliza SQL como lenguaje de consulta. En lugar de ello utilizan Xpath. Algunas bases de datos permiten seleccionar los elementos que deberán tener índices mientras que otras bases de datos indexan todo el contenido del documento. El problema que tienen las búsquedas en este tipo de bases de datos es que no permiten realizar búsquedas muy complicadas, como por ejemplo ordenamiento y cross join, debido a que Xpath no fue creada realmente para búsquedas en bases de datos, sino simplemente para búsquedas en un solo documento.

Muchas bases de datos permiten realizar búsquedas utilizando la tecnología Full-Text Search, de esta manera se puede agilizar la búsqueda de datos en los documentos XML.

Áreas de aplicación 
Solo existe un requisito para cualquier aplicación donde se requiera usar NXD: la aplicación debe usar XML. Después de esto no existe ninguna restricción o regla para no utilizar NXD en una aplicación. En general, cualquier NXD es una excelente herramienta para almacenar documentos orientados a datos (Ej. XHTML o DocBook), la información que tiene una compleja estructuración anidada profundamente y la información que esta semi-estructurada en la naturaleza. Básicamente, si la información es representada por XML un NXD probablemente seria una buena solución. Un NXD puede almacenar cualquier tipo de información XML, pero probablemente no seria la mejor herramienta para algo como un sistema de la contabilidad donde los datos son muy bien definidos y rígidos.

Algunas áreas potenciales de aplicación podrían ser:
Portales de información corporativa
Información de catálogos
BD en partes de manufactura
Información medica
BD personalizadas

Ejemplos 
Una gran parte de usos necesita encontrar documentos enteros. Por ejemplo, un portal Web podría permitir a usuarios buscar todos los documentos sobre una empresa particular y un sistema de dirección podría permitir a usuarios encontrar todos los documentos que se relacionen con una cierta parte.

El modo menos complejo de buscar documentos es con búsquedas texto completas. En bases de datos natales XML, estos son XML-aware. Es decir esto distingue entre el contenido (que es buscado) y el margen (que no es).

Búsquedas más complejas estructuralmente, que pueden preguntar el margen, el texto, o ambos. (XPath y XQuery son los ejemplos en lenguajes de búsquedas estructuradas; bases de datos natales XML apoyan un número de lenguajes propietarios también.). Por ejemplo, considere las preguntas siguientes:

Encuentre el libro que Maria Lopez escribió.

      for $b in collection("books")
      where $b//Author="Maria Lopez"
      return $b

Encuentre todos los artículos escritos después del 1 de junio de 2004 con las palabras "presidential election" en el título:

      for $a in collection("articles")
      where $a//Date > 2004-06-01 and
      fn:contains($a//Title, "presidential election")  
      return $a

Encuentre todos los procedimientos con más de siete pasos:

      for $p in collection("procedures")
      let $s := $p//Step
      where fn:count($s) > 7
      return $p

Sin embargo estas búsquedas son relativamente simples, ninguno puede estar satisfecho por una búsqueda de texto completa: las dos primeras preguntas restringen la búsqueda a las ciertas secciones del documento y la tercera no pregunta el texto. Es también interesante notar que estas búsquedas no requieren que todos los documentos usen el mismo esquema; ellos sólo requieren que los documentos contengan ciertos elementos comunes que tienen aproximadamente el mismo significado.

Conclusión 
En estos momentos, este tipo de base de datos es perfecta para las organizaciones que mantienen su información en diferentes formatos, debido a que les permitiría rápidamente pasar su información a un formato XML, utilizando la aplicación de su preferencia, y de esta manera almacenarla en una de estas bases de datos y evitarse el proceso de conversión de un formato a otro. Además, teniendo en cuenta que por ahora aún no existe un lenguaje estándar para el procesamiento de los datos, estas bases de datos son adecuadas para realizar búsquedas sobre los documentos almacenados. 

Conforme todas las carencias que tienen estas bases de datos sean superadas, podrán ser una muy buena alternativa para el almacenamiento de la información no solo porque la información estará almacenada en un formato estándar, XML, sino porque facilitará el desarrollo de aplicaciones basadas en XML, como por ejemplo los Web Services.

Enlaces externos 
 (en inglés)  XML and Databases, Ronald Bourret, Septiembre 2005

XML
Modelos de bases de datos
HTML
Bases de datos

en:XML_database#Native_XML_databases
fr:Base XML native