You are on page 1of 19

Universidad Cenfotec

Maestra en Base de datos

Curso:
Programacin avanzada de base de datos

Profesor:
Mario Chacn
Investigacin

XML en Base de datos

Alumno

Lpez Portillo, Jos Ahias

Abril del 2013

Contenido
Introduccin .................................................................................................................................................. 3 XML en base de datos ................................................................................................................................... 3 Ventajas del XML ...................................................................................................................................... 3 Estructura de un documento XML ............................................................................................................ 3 Documentos XML bien formados y control de errores ............................................................................ 5 Partes de un documento XML................................................................................................................... 5 Prlogo .................................................................................................................................................. 5 Cuerpo ................................................................................................................................................... 5 Elementos ............................................................................................................................................. 6 Atributos ............................................................................................................................................... 6 Entidades predefinidas ......................................................................................................................... 6 Secciones CDATA................................................................................................................................... 7 Comentarios .......................................................................................................................................... 7 Qu es SQL/XML?.................................................................................................................................... 7 XQuery ...................................................................................................................................................... 7 XPath ......................................................................................................................................................... 8 Base de datos XML .................................................................................................................................... 8 Gestores XML Enable ............................................................................................................................ 8 Gestores XML nativo ............................................................................................................................. 8 XML en DB2 ............................................................................................................................................... 9 Funciones XML en DB2........................................................................................................................ 10 Conclusin ................................................................................................................................................... 17 Recomendacin .......................................................................................................................................... 17 Anexos......................................................................................................................................................... 18 Bibliografa .................................................................................................................................................. 19

Introduccin
El presente documento, contiene una introduccin a conceptos de XML y su manejo en base de datos. Luego de la definicin de conceptos bsicos de XML, el desarrollo de este documento se centra en su aplicacin en DB2 y funciones de sistema para la manipulacin de XML.

XML en base de datos


(Wikipedia, 2013) XML, siglas en ingls de eXtensible Markup Language ('lenguaje de marcas extensible'), es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C). Deriva del lenguaje SGML y permite definir la gramtica de lenguajes especficos (de la misma manera que HTML es a su vez un lenguaje definido por SGML) para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo til cuando varias aplicaciones se deben comunicar entre s o integrar informacin. (Bases de datos Silberschatz).

Ventajas del XML


Es extensible: Despus de diseado y puesto en produccin, es posible extender XML con la adicin de nuevas etiquetas, de modo que se pueda continuar utilizando sin complicacin alguna. El analizador es un componente estndar, no es necesario crear un analizador especfico para cada versin de lenguaje XML. Esto posibilita el empleo de cualquiera de los analizadores disponibles. De esta manera se evitan bugs y se acelera el desarrollo de aplicaciones. Si un tercero decide usar un documento creado en XML, es sencillo entender su estructura y procesarla. Mejora la compatibilidad entre aplicaciones. Podemos comunicar aplicaciones de distintas plataformas, sin que importe el origen de los datos, es decir, podramos tener una aplicacin en Linux con una base de datos Postgres y comunicarla con otra aplicacin en Windows y Base de Datos MS-SQL Server. Transformamos datos en informacin, pues se le aade un significado concreto y los asociamos a un contexto, con lo cual tenemos flexibilidad para estructurar documentos.

Estructura de un documento XML


(cicei, 2013)Un documento XML tiene dos estructuras, una lgica y otra fsica. Fsicamente, el documento est compuesto por unidades llamadas entidades. Una entidad puede hacer referencia a otra entidad, causando que esta se incluya en el documento. Cada documento comienza con una entidad documento, tambin llamada raz. Lgicamente, el documento est compuesto de declaraciones, elementos, comentarios, referencias a caracteres e instrucciones de procesamiento, todos los cuales estn indicados por una marca explcita. Las estructuras lgica y fsica deben encajar de manera adecuada:

Los documentos XML se dividen en dos grupos, documentos bien formados y documentos vlidos.

Bien formados: Son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintcticas sin estar sujetos a unos elementos fijados en un DTD. De hecho los documentos XML

deben tener una estructura jerrquica muy estricta y los documentos bien formados deben cumplirla. Vlidos: Adems de estar bien formados, siguen una estructura y una semntica determinada por un DTD: sus elementos y sobre todo la estructura jerrquica que define el DTD, adems de los atributos, deben ajustarse a lo que el DTD dicte.

Figura 01: Ejemplo de XML Fuente (Creacin Propia) Lo primero que tenemos que observar es la primera lnea. Con ella deben empezar todos los documentos XML, ya que es la que indica que lo que la sigue es XML. Aunque es opcional, es recomendable incluirla. Puede tener varios atributos, algunos obligatorios y otros no:

version: Indica la versin de XML usada en el documento. Es obligatorio ponerlo, a no ser que sea un documento externo a otro que ya lo inclua. encoding: La forma en que se ha codificado el documento. Se puede poner cualquiera, y depende del parser el entender o no la codificacin. Por defecto es UTF-8, aunque podran ponerse otras, como UTF-16, US-ASCII, ISO-8859-1, etc. No es obligatorio salvo que sea un documento externo a otro principal. standalone: Indica si el documento va acompaado de un DTD ("no"), o no lo necesita ("yes"); en principio no hay porqu ponerlo, porque luego se indica el DTD si se necesita.

La "declaracin de tipo de documento" define qu tipo de documento estamos creando para ser procesado correctamente. Es decir, definimos que declaracin de tipo de documento (DTD) valida y define los datos que contiene nuestro documento XML.

Documentos XML bien formados y control de errores


Los documentos denominados como bien formados (del ingls well formed) son aquellos que cumplen con todas las definiciones bsicas de formato y pueden, por lo tanto, analizarse correctamente por cualquier analizador sintctico (parser) que cumpla con la norma. Se separa esto del concepto de validez que se explica ms adelante. Los documentos han de seguir una estructura estrictamente jerrquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra, es decir, las etiquetas deben estar correctamente anidadas. Los elementos con contenido deben estar correctamente cerrados. Los documentos XML slo permiten un elemento raz del que todos los dems sean parte, es decir, solo pueden tener un elemento inicial. Los valores atributos en XML siempre deben estar encerrados entre comillas simples o dobles.

Partes de un documento XML


Un documento XML est formado por el prlogo y por el cuerpo del documento as como texto de etiquetas que contiene una gran variedad de efectos positivos o negativos en la referencia opcional a la que se refiere el documento, hay que tener mucho cuidado de esa parte de la gramtica lxica para que se componga de manera uniforme.

Prlogo
Aunque no es obligatorio, los documentos XML pueden empezar con unas lneas que describen la versin XML, el tipo de documento y otras cosas. El prlogo de un documento XML contiene: Una declaracin XML. Es la sentencia que declara al documento como un documento XML. Una declaracin de tipo de documento. Enlaza el documento con su DTD (definicin de tipo de documento), o el DTD puede estar incluido en la propia declaracin o ambas cosas al mismo tiempo. Uno o ms comentarios e instrucciones de procesamiento.

Figura 02: Ejemplo Prologo Fuente: (Creacin Propia)

Cuerpo
A diferencia del prlogo, el cuerpo no es opcional en un documento XML, el cuerpo debe contener solo un elemento raz, caracterstica indispensable tambin para que el documento est bien formado. Sin embargo es necesaria la adquisicin de datos para su buen funcionamiento.

El XML es sensible a maysculas y minsculas. Existe un conjunto de caracteres llamados espacios en blanco (espacios, tabuladores, retornos de carro, saltos de lnea) que los procesadores XML tratan de forma diferente en el marcado XML. Es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos particulares, etc. En XML los nombres tienen alguna caracterstica en comn. Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan marcas; son partes del documento que el procesador XML espera entender. El resto del documento entre marcas son los datos entendibles por las personas.

Figura 03: Ejemplo Cuerpo Fuente: (Creacin Propia)

Elementos
Los elementos XML pueden tener contenido (ms elementos, caracteres o ambos), o bien ser elementos vacos.

Atributos
Los elementos pueden tener atributos, que son una manera de incorporar caractersticas o propiedades a los elementos de un documento. Deben ir entre comillas.

Figura 04: Ejemplo Atributo Fuente: (Creacin Propia)

Entidades predefinidas
En XML 1.0, se definen cinco entidades para representar caracteres especiales y que no se interpreten como marcado por el procesador XML. Es decir, que as podemos usar el carcter "<" sin que se interprete como el comienzo de una etiqueta XML, por ejemplo. Entidad Carcter &amp; & &lt; < &gt; > &apos; ' &quot; " Tabla 1: Entidades predefinidas en XML Fuente (asptutor, 2013)

Secciones CDATA
Existe otra construccin en XML que permite especificar datos, utilizando cualquier carcter, especial o no, sin que se interprete como marcado XML. La razn de esta construccin llamada CDATA (Character Data) es que a veces es necesario para los autores de documentos XML, poder leerlo fcilmente sin tener que descifrar los cdigos de entidades. Especialmente cuando son muchas.

Comentarios
A veces es conveniente insertar comentarios en el documento XML, que sean ignorados por el procesado de la informacin y las reproducciones del documento. Los comentarios tienen el mismo formato que los comentarios de HTML. Es decir, comienzan por la cadena "<!--" y terminan con "-->".

Figura 05: Ejemplo de Comentario Fuente: (Creacin Propia) Se pueden introducir comentarios en cualquier lugar de la instancia o del prlogo, pero nunca dentro de las declaraciones, etiquetas, u otros comentarios.

Qu es SQL/XML?
SQL/XML es un estandard ANSI, ISO que incorpora XML dentro del lenguaje SQL de bases de datos objeto-relacionales. SQL: 2003 es el estndar para acceder y manejar datos de bases de datos objetorelacionales. Las empresas y los usuarios necesitan integrar sus datos XML en sus bases de datos objetorelacionales, aprovechando las ventajosas facilidades de SQL. SQL/XML permite almacenar sus documentos XML en sus bases de datos objetorelacionales, para consultar dichos documentos mediante Xpath y Xquery y para publicar sus datos SQL en un formato de documentos XML.

XQuery
XQuery usa la estructura arbrea de XML para expresar consultas a todas estas fuentes de datos, bien estn fsicamente almacenados en XML o bien sean vistos como XML va un middleware. XQuery 1.1 describe un lenguaje consultivo aplicado a un amplio espectro de tipos de fuentes de datos XML muy diversos.

XQuery es un lenguaje estndar para combinar documentos, bases de datos, pginas Web y otras formas de representacin de informacin. XQuery cuenta con una amplia implementacin, es potente y ms fcil de aprender y mantener que otros lenguajes alternativos

XPath
XQuery (soportado mediante XPath) es un lenguaje consultivo para que XML pueda extraer datos, al estilo de SQL en XORDB, o como SPARQL en la Web Semntica.

Base de datos XML


(wikipedia, 2013)Una base de datos XML constituye 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 estn generalmente asociadas con las bases de datos documentales. Existen dos grandes clases de bases de datos XML: XML Enable: Estas base de datos pueden mapear XML en estructuras tradicionales de bases de datos (como las relacionales ), aceptando XML como entrada y formateando en XML la salida, o ms 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). 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.

Gestores XML Enable


SGBD XML-Enabled (Sistemas de administracin de base de datos XML) desglosan un documento XML en su correspondiente modelo relacional. Algunos de los principales Motores en el mercado: IBM DB2 (XML pure) Microsoft Sql Server Oracle PostgreSQL

Gestores XML nativo


(Ortiz, 2013)Las bases de datos XML nativas son diseadas para trabajar con XQL (eXtensible Query Language), el cul sirve un propsito similar a SQL en una base de datos relacional. XQL est diseado para trabajar con documentos XML jerrquicamente estructurados y puede proveer caractersticas de consulta como filtros y joins. Los esquemas XML son implementados en bases de datos XML nativas para registrar reglas de almacenamiento e indexacin de datos y para proveer y obtener informacin de almacenamiento a los mecanismos de bases de datos XML nativas. Adicionalmente, todos los objetos en

una base de datos XML nativa son tpicamente accesibles directamente mediante un URL. El trabajo con bases de datos XML nativas involucra dos pasos bsicos: Describir los datos mediante Definiciones de Tipos de Datos (Document TypeDefinitions, DTD) o esquemas XML Definir un nuevo esquema de base de datos XML nativa XML o Mapa de Datos a usar para almacenamiento y obtencin de datos.

Algunos de los principales Motores en el mercado: TotalXML OpenLink Tamino XML Server Berkeley DB de Oracle

XML en DB2
(IBM, 2013)El DB2 proporciona los tipos de datos XML para almacenar documentos XML bien formados. Los valores en las columnas XML son almacenados en una representacin interna diferente a los tipos de datos de cadena de caracteres. Para almacenar datos XML en una columna de tipo de datos XML, los datos deben ser transformados usando la funcin XMLPARSE. Un valor de datos de tipo XML puede transformarse en un valor de cadena de caracteres serializada, representante del documento XML que usa la funcin XMLSERIALIZE. DB2 proporciona muchas otras funciones integradas para manipular tipos de datos XML. Desde la versin 9 DB2 incorpora una nueva Tecnologa llamada XML pure, cuyas caractersticas son: XML es un tipo de dato. XML se gestiona y almacena en un contenedor separado. XML se valida con schemas en la base de datos. Incluye funciones para transformar XML en SQL y viceversa. Incorpora procedimientos para generar documentos XML en tablas. XML se indexa para agilizar bsquedas y recuperacin de datos.

Figura 06: Arquitectura de XML PURE Fuente: (Snchez, 2006)

Funciones XML en DB2


Consultas SQL/XML Como lo indica su nombre, SQL/XML sirve como puente entre los mundos SQL y XML. Evolucion como parte del estndar SQL y ahora incluye especificaciones para incrustar expresiones XQuery o XPath dentro de instrucciones SQL. XPath es un lenguaje que permite navegar por un documento XML para buscar diferentes elementos y atributos. XQuery es compatible con XPath. Es importante destacar que las expresiones XQuery (y XPath) distinguen maysculas de minsculas. Por ejemplo, una expresin XQuery que hacer referencia al elemento XML "zip" no se aplicar a los elementos XML denominados "ZIP" o "Zip". A veces, esta distincin entre maysculas y minsculas es pasada por alto por los programadores SQL, ya que la sintaxis de consulta SQL les permite usar "zip", "ZIP" y "Zip" para referirse al mismo nombre de columna. DB2 9 tiene ms de 15 funciones SQL/XML que permiten buscar datos especficos dentro de los documentos XML, convertir datos relacionales en XML, convertir datos XML en relacionales y realizar otras tareas tiles. Algunas de las funciones de sistema que provee DB2 son: XMLATTRIBUTES La funcin XMLATTRIBUTES construye los atributos XML a partir de los argumentos. Esta funcin slo se puede utilizar como argumento de la funcin XMLELEMENT. El resultado es una secuencia XML que contiene un nodo de atributo XQuery para cada valor de entrada que no sea nulo.

Figura 07: Ejemplo de XMLATTRIBUTES Fuente: (IBM, 2013) XMLCOMMENT La funcin XMLCOMMENT devuelve un valor XML con un nico nodo de comentario XQuery con el argumento de entrada como contenido. XMLCONCAT La funcin XMLCONCAT devuelve una secuencia que contiene la concatenacin de un nmero variable de argumentos de entrada de XML.

Figura 08: Ejemplo de XMLCONCAT Fuente: (IBM, 2013) XMLDOCUMENT La funcin XMLDOCUMENT devuelve un valor XML con un nico nodo de documento XQuery con ninguno o varios nodos hijo.

Figura 09: Ejemplo de XMLDOCUMENT Fuente: (IBM, 2013) XMLELEMENT La funcin XMLELEMENT devuelve un valor XML que es un nodo de elemento XQuery.

Figura 10: Ejemplo de XMLELEMENT Fuente: (IBM, 2013) XMLFOREST La funcin XMLFOREST devuelve un valor XML que es una secuencia de nodos de elemento XQuery. Esta funcin toma un conjunto opcional de declaraciones de espacios de nombres y uno o varios argumentos que forman el contenido de nombre y elemento para uno o varios nodos de elemento. El resultado es una secuencia XML que contiene una secuencia de nodos de elemento XQuery o el valor nulo. El tipo de datos del resultado es XML. Si cualquiera de los argumentos expresin-contenidoelemento puede ser nulo, el resultado puede ser nulo; si todos los valores del argumento expresincontenido-elemento son nulos y la opcin NULL ON NULL est en vigor, el resultado es el valor nulo. La funcin XMLFOREST se puede expresar mediante XMLCONCAT y XMLELEMENT.

Figura 11: Ejemplo de XMLFOREST Fuente: (IBM, 2013) XMLNAMESPACES La declaracin XMLNAMESPACES construye las declaraciones de espacios de nombres a partir de los argumentos. Esta declaracin nicamente puede emplearse como argumento de funciones especficas como XMLELEMENT, XMLFOREST y XMLTABLE. El resultado es una o varias declaraciones de espacios de nombres XML que contienen espacios de nombres con mbito para cada uno de los valores de entrada no nulos.

Figura 11: Ejemplo de XMLFOREST Fuente: (IBM, 2013)

XMLPARSE La funcin XMLPARSE analiza el argumento como un documento XML y devuelve un valor XML.

Figura 12: Ejemplo de XMLPARSE Fuente: (IBM, 2013) XMLPI La funcin XMLPI devuelve un valor XML con un nodo de instruccin de proceso XQuery.

Figura 13: Ejemplo de XMLPI Fuente: (IBM, 2013) XMLQUERY La funcin XMLQUERY devuelve un valor XML a partir de la evaluacin de una expresin XQuery utilizando posiblemente los argumentos de entrada especificados como variables XQuery. Restricciones de uso de XMLQUERY: La funcin XMLQUERY no puede formar parte de los elementos siguientes: o Parte de la clusula ON asociada a un operador JOIN o una sentencia MERGE (SQLSTATE 42972)

Parte de la clusula GENERATE KEY USING o RANGE THROUGH de la sentencia CREATE INDEX EXTENSION (SQLSTATE 428E3) o Parte de la clusula FILTER USING de la sentencia CREATE FUNCTION (escalar externa) o la clusula FILTER USING de la sentencia CREATE INDEX EXTENSION (SQLSTATE 428E4) o Parte de una restriccin de comprobacin o de una expresin de generacin de columnas (SQLSTATE 42621) o Una clusula-group-by (SQLSTATE 42822) o Un argumento de una funcin-columna (SQLSTATE 42607) XMLQUERY como subconsulta: Una expresin XMLQUERY que acta como subconsulta puede estar limitada por sentencias que restringen las subconsultas.

XMLROW La funcin XMLROW devuelve un valor XML con un nico nodo de documento XQuery que contiene un nodo de elemento de nivel superior.

Figura 14: Ejemplo de XMLPI Fuente: (IBM, 2013) XMLSERIALIZE La funcin XMLSERIALIZE devuelve un valor XML serializado de los tipos de datos especificados, generados a partir del argumento expresin-XML. XMLTEXT La funcin XMLTEXT devuelve un valor XML con un nico nodo de texto XQuery cuyo contenido es el argumento de entrada.

Figura 15: Ejemplo de XMLTEXT Fuente: (IBM, 2013)

XMLVALIDATE La funcin XMLVALIDATE devuelve una copia del valor de entrada XML aumentado con la informacin obtenida a partir de la validacin de esquema XML, incluidos los valores por omisin.

Figura 16: Ejemplo de XMLTEXT Fuente: (IBM, 2013)

Conclusin
Los gestores de base de datos modernos ofrecen funcionalidades nativas para el manejo de XML, el utilizar correctamente esas funcionalidades a nivel empresariales pueden ayudar a mejorar los procesos relacionados al manejo de XML y la complejidad que estos significaban en el pasado.

Recomendacin
Los analista de base de datos, deben analizar las necesidades relacionadas con el manejo de datos de tipo XML y analizar que gestor de base de datos, es el motor adecuado para sus requerimientos, aunque XML no es un tema nuevo, muchos administradores de base de datos, carecen del conocimiento del soporte nativo de muchos gestores y optan por manejar datos XML en forma de Texto o en forma de archivos fsico, esto no es ptimo y en muchos casos implican altos costos en el desarrollo de aplicaciones que desean manejar informacin de este tipo.

Anexos

Figura Anexo 1: Estndar SQL 9075 Fuente: (Costilla, 2011)

Bibliografa
asptutor. (04 de 2013). http://www.asptutor.com/xml/index1.asp. Obtenido de http://www.asptutor.com/xml/index1.asp cicei. (04 de 2013). http://www.cicei.com/ocon/gsi/tutorial_xml/Estructura.html. Obtenido de http://www.cicei.com/ocon/gsi/tutorial_xml/Estructura.html Costilla, C. (2011). Introduccion A SQL/XML: SQL y XML funcionan conjuntamente. En C. Costilla. MAdrid: SINBAD-UPM Research Group. guillesql. (21 de Abril de 2013). guillesql. Obtenido de www.guillesql.es: http://www.guillesql.es/Articulos/XML_SQL_Server.aspx IBM. (04 de 2013). http://www.ibm.com/developerworks/ssa/data/tutorials/db2cert7305/section2.html. Obtenido de http://www.ibm.com/developerworks/ssa/data/tutorials/db2-cert7305/section2.html IBM. (04 de 2013). IBM. Obtenido de http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.ref.d oc%2Fdoc%2Fr0022197.html&lang%3Des Ortiz, M. N. (4 de 2013). http://es.scribd.com. Obtenido de http://es.scribd.com/doc/64763902/Basesde-Datos-Nativas-XML Snchez, L. A. (2006). IBM DB2 9 pureXML, base de datos hbrida XML Relacional. Chile: IBM. wikipedia. (04 de 2013). http://es.wikipedia.org/wiki/Base_de_datos_XML. Obtenido de http://es.wikipedia.org/wiki/Base_de_datos_XML