Ir al contenido

Base de datos XML

De Wikipedia, la enciclopedia libre

Esta es una versión antigua de esta página, editada a las 00:38 16 mar 2013 por Juvalen (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

Una base de datos XML es un sistema software que da persistencia a datos almacenados en formato XML. Estos datos pueden ser interrogados, exportados y serializados. Las bases de datos XML están generalmente asociadas con las bases de datos documentales.

Existen dos grandes clases de bases de datos XML:[1]

  1. XML habilitado: éstas bien pueden mapear XML en estructuras tradicionales de bases de datos (como las relacionales[2]​), aceptando XML como entrada y formateando en XML la salida, o más recientemente soportando tipos XML nativos en la propia base de datos. Esto implica que la base de datos procesa el XML internamente (lo opuesto a soportarlo mediante middleware).
  2. XML nativo (NXD): el modelo interno de estas bases de datos usa documentos XML como la unidad elemental de almacenamiento, los cuales no han de almacenarse necesariamente en formato de texto.

Lógica del uso de XML en bases de datos

O'Connell da una razón para el uso de XML en bases de datos: el generalizado aumento del transporte de datos en formato XML, lo que significa que "los datos se extraen de bases de datos y convertidos a XML o viceversa"[3]​. Resultaría más eficiente (en términos de costes de conversión) y fácil almacenar los datos en formato XML directamente.

Bases de datos habilitadas XML

Típicamente ofrecen alguna de las siguientes aproximaciones para almacenar XML en la estructura relacional clásica:

  1. El XML se almacena en un campo CLOB (Character large object)
  2. El XML se desgaja en una serie de tablas según un esquema[4]
  3. El XML se almacena de forma nativa como tipo XML según define ISO[5]

Entre los SGBD que soportan ISO XML están:

  • IBM DB2 (XML puro[6]​)
  • Microsoft SQL Server [7]
  • Oracle Database [8]
  • PostgreSQL [9]

Típicamente una base de datos habilitada XML se adapta mejor allí donde la mayoría de los datos no están en XML, para aquellos datos en los que la mayoría están en XML, una base de datos nativa XML se adaptará mejor.

Ejemplo de interrogación XML en IBM DB2 SQL

select
   id, vol, xmlquery('$j/name', procesando revista "j") as name
from
   revistas
where 
   xmlexists('$j[publica="Elsevier"]', procesando revista "j")

Bases de datos nativas XML

El término "base de datos nativa XML" (NXD) puede llevar a confusión. Muchas NXDs no funcionan como bases de datos independientes, y no almacenan el texto nativo en XML.

La definición formal de la iniciativa XML:DB (que parece inactiva desde 2003[10]​) afirma que:

  • Define un modelo (lógico) para un documento XML —contrapuesto a los datos en ese documento— y almacena y recupera documentos según ese modelo. Como mínimo el modelo debe incluir elementos, atributos, CDATA y orden de los documentos. Ejemplos de estos modelos incluyen el modelo de datos XPath, XML Infoset y los que implica el DOM y los eventos en SAX 1.0.
  • Tiene un documento XML como su unidad (lógica) fundamental de almacenamiento, del mismo modo que una base de datos relacional lo tiene con la fila.
  • No necesita basarse en ningún modelo de almacenamiento físico particular. Por ejemplo las NXD puede usar estructuras relacionales, jerárquicas u orientadas a objetos, o usar un formato de almacenamiento propietario (como índices o ficheros comprimidos).

Además, muchas bases de datos XML databases proporcionan un modelo lógico de agrupar documentos, llamada "colecciones". Las bases de datos pueden estableder y gestionar muchas colecciones al mismo tiempo. En algunas implementaciones puede existir una jerarquía de colecciones, de modo análogo a la estructura de directorios de un sistema operativo.

Todas las bases de datos XML soportan al menos una sintaxis de interrogación. Al menos casi todas soportan XPath para realizar preguntas a documentos o colección de ellos. XPath provides a simple pathing system that allows users to identify nodes that match a particular set of criteria.

In addition to XPath, many XML databases support XSLT as a method of transforming documents or query-results retrieved from the database. XSLT provides a declarative language written using an XML grammar. It aims to define a set of XPath filters that can transform documents (in part or in whole) into other formats including plain text, XML, or HTML.

Many XML databases also support XQuery to perform querying. XQuery includes XPath as a node-selection method, but extends XPath to provide transformational capabilities. Users sometimes refer to its syntax as "FLWOR" (pronounced 'Flower') because the query may include the following clauses: 'for', 'let', 'where', 'order by' and 'return'. Traditional RDBMS vendors (who traditionally had SQL-only engines), are now shipping with hybrid SQL and XQuery engines. Hybrid SQL/XQuery engines help to query XML data alongside the relational data, in the same query expression. This approach helps in combining relational and XML data.

Most XML Databases support a common vendor neutral API called the XQuery API for Java (XQJ). The XQJ API was developed at the JCP as a standard interface to an XML/XQuery data source, enabling a Java developer to submit queries conforming to the World Wide Web Consortium (W3C) XQuery 1.0 specification and to process the results of such queries. Ultimately the XQJ API is to XML Databases and XQuery as the JDBC API is to Relational Databases and SQL.

Características del lenguaje

Denominación Licencia Lenguaje XQuery 3.0 XQuery Update XQuery Full Text Extensiones EXPath Extensions EXQuery XSLT 2.0
BaseX Licencia BSD Java Parcial Parcial Sí  Sí  Sí  Sí  Sí 
eXist Licencia LGPL Java Parcial Parcial Parcial Parcial Plantilla:Proprietary Sí  Sí  Sí 
MarkLogic Server Comercial C++ Parcial Parcial Plantilla:Proprietary Plantilla:Proprietary No No No No Sí 
Sedna Licencia Apache C++ No No Sí  Sí  No No No No No No
plataforma 28msec Motor: Licencia Apache, Almacenamiento: Comercial C++ Parcial Parcial[11] Sí  Sí  Sí  Sí  No No
MonetDB/XQuery Licencia MonetDB (tipo Mozilla) C ? ? ? ? ? ?

Referencias

  1. Bourret, Ronald (20 de junio de 2010). «XML Database Products». Consultado el 16 de diciembre de 2011. 
  2. Mustafa Atay and Shiyong Lu, “Storing and Querying XML: An Efficient Approach Using Relational Databases”, ISBN 3-639-11581-3, VDM Verlag, 2009.
  3. O'Connell, S. Advanced Databases Course Notes, Southampton, University of Southampton, 2005, 9.2
  4. Creating XMLType Tables and Columns Based on XML Schema
  5. ISO/IEC 9075-14:2011
  6. IBM DB2 pureXML overview -- DB2 as an XML database
  7. Using XML in SQL Server
  8. XMLType Operations
  9. PostgreSQL - Data Types - XML Type
  10. «Frequently Asked Questions About XML:DB». The XML:DB Initiative. Sourceforge. 2003. Consultado el 16 December 2011. 
  11. Zorba XQuery 3.0 support