{ MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ} Grupo de Investigación Kybele, 2007 ©
XML y las Bases de Datos
Fundamentos de bases de datos, 4ª Edición
Silberschatz, Korth y Sudarshan Capitulo 10 Mc Graw-Hill
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Índice
1. Motivación: ¿Por qué XML?
2. Estructura de los Datos XML
2.1. DTDs 2.2. Esquemas XML
3. Almacenamiento de Datos XML
4. Consulta a Documentos XML
5. Aplicaciones
1. Motivación: ¿Por qué XML?
Orígenes:Gestión de documentos SGML (Standard Generalized Markup Language): 1986 SGML: Sistema para la organización y etiquetado de documentos. Reglas muy estrictas Extensiones de SGML: HTML y XML
•
• HTMLHTML(HyperText Markup Language): Lenguaje para marcado de hipertexto (1993)
•
• XMLXML(eXtensible Markup Language): Lenguaje para marcado extensible (1998)
XML:
Versión actual: 1.0 (tercera edición) 4 de febrero de 2004 Definido por el Consorcio WWW (W3C): http://www.w3.org/XML/ En sus orígenes proyectado como un lenguaje de marcas de documentos
•
• MarcaMarca: elemento de un documento que no formará parte de la salida impresa (p. ej.: notas de un escritor para una revista ”no romper párrafo”).
•
• Lenguaje de marcasLenguaje de marcas: descripción formal de qué parte del documento es contenido, qué
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
XML: Características:
Permite la representación de datos semi-estructurados (como HTML) El objetivo era (¿es?) sustituir a HTML como lenguaje para la
publicación de documentos en la Web XHTMLXHTML
Se pueden especificar etiquetas personalizadas metalenguaje extensible
Soporta UnicodeUnicode
Es ‘human-readable’ y ‘machine-readable’ simultáneamente Permite separar la especificación del contenido de la de su
visualización
Favorece el intercambio de datos: • Etiquetas autodocumentadas • Formato no rígido
• No contiene elementos para la visualización de los contenidos
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ} XML:Intercambio de datos:
La capacidad para especificar etiquetas nuevas, y para crear estructuras de etiquetas anidadas hace de XML una buena forma de intercambiar datosintercambiar datos, y no sólo documentos.
HTML se usa principalmente para el formato de documentosformato de documentos
El intercambio de datos es crítico en el mundo de Internet hoy en día
• Ejemplos:
– Banca: transferencias de fondos – Datos científicos:
» Química: ChemML (Lenguaje de marcas químicas) » Genética: BSML (Lenguaje de marcas de bio-secuencias)
• El flujo de documentos entre organizaciones se ha sustituido por el flujo electrónico de información
Cada área de aplicación tiene su propio conjunto de estándares para representar la información
Se considera la base de todos los formatos de intercambio de datos de nueva generación
1. Motivación: ¿Por qué XML?
XML: Estructura
Los documentos XML deben ser válidos y estar bien formados: • Bien formado:
– Tener una única raíz
– Todos los elementos llevan etiquetas de apertura y cierre – El anidamiento de elementos debe ser correcto
– Todos los valores de los atributos van entre comillas simples o dobles
• Válidos: Todo documento XML debe seguir un esquema determinado
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
XML: Ejemplo
1. Motivación: ¿Por qué XML?
<?xml version = "1.0" encoding = "UTF-8"?> <ejemplo número="1">
<profesor>
<nombre>Marcos</nombre> <apellidos>López Sanz</apellidos> <universidad>URJC</universidad> </profesor> </ejemplo> ejemplo profesor López Sanz apellidos universidad número 1 nombre Marcos URJC
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
1. Motivación: ¿Por qué XML?
Desventajas para el almacenamiento de los datos:
Poca eficiencia de la representación XML: las etiquetas se repiten por todo el documento problema de redundancia
Ventajas para el intercambio de datos:
Las etiquetas hacen que los datos estén autodocumentados: • No hay que leer el esquema para entender el significado del texto Formato no rígido:
• Si un remitente agrega información adicional, el receptor puede ignorarla • La facilidad de reconocer e ignorar etiquetas facilita la evolución • Permite evolucionar los datos sin invalidar las aplicaciones
Existe una amplia variedad de herramientas disponibles para analizar, rastrear y consultar los documentos/datos de XML:
• Incluidas herramientas de BD
Índice
1. Motivación: ¿Por qué XML?
2. Estructura de los Datos XML
2.1. DTDs2.2. Esquemas XML
3. Almacenamiento de Datos XML
4. Consulta a Documentos XML
5. Aplicaciones
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Etiqueta: marca de una sección de datos
MarcaMarca: elemento que no formará parte de la salida impresa Proporcionan el contexto de cada valor
Permiten especificar la semántica del valor
Elemento:
Constructor básico de un documento XML.
Sección de datos que comienza con <nombre-etiqueta> y termina con la coincidencia </nombre-etiqueta>
Contexto de un elementoContexto de un elemento: texto incluido entre la etiqueta de comienzo y la etiqueta de fin de dicho elemento
Reglas:
Los documentos XML deben ser válidos y estar bien formados: • Bien formado:
– Tener una única raíz
– Todos los elementos llevan etiquetas de apertura y cierre – El anidamiento de elementos debe ser correcto
– Todos los valores de los atributos van entre comillas simples o dobles • Válidos: Todo documento XML debe seguir un esquema determinado
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Se permite la combinación de texto con subelementos
Ejemplo:
Útil para marcar documentos, pero no recomendada para la representación de datos estructurados.
2. Estructura de los Datos XML
<forma>
Este elemento deberá ser borrado una vez se utilice <tipo>rectángulo</tipo> <dimensiones medida=“cm”> <x>34</x> <y>45</y> </dimensiones> <color codificación=“RGB”>35cb0c</color> </forma>
2. Estructura de los datos XML
Anidamiento de datos:
Útil en las aplicaciones de transferencia de datos: evitan la necesidad de joins. Ejemplo: los elementos que representan la cuenta (número-cuenta,
nombre-sucursal, saldo), anidados en cada cliente de la cuenta.
No se soporta la anidación en las BD relacionales:
Con varios clientes titulares de una cuenta, se almacenarían repetidamente los datos de la cuenta.
La normalizacinormalizacióónnsustituye las estructuras anidadas: en cada cliente se incluye una clave ajena a la tabla que almacena las datos de la cuenta.
Se soporta anidación en BD Objeto-Relacionales (‘Nested Tables’).
La anidación sólo es apropiada cuando setransfierentransfierendatos:
La aplicación externa no tiene acceso directo a los datos referenciados por una clave ajena.
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
Los elementos pueden tener atributosatributos. Los atributos son cadenas, no contienen marcas.
Se especifican por medio de pares nombre=nombre=““valorvalor””dentro de la etiqueta de inicio de un elemento:
<sensormodelo = “THK-3402”>
<posicionamiento> vertical </posicionamiento> <tipo> presión </tipo>
<t_inicio> 3:56-12/02/00 </t_inicio> </sensor>
Un elemento puede tener varios atributos, pero cada nombre de atributo sólo puede producirse una vez:
<dimensiones número = “3”notación=“std”>
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
Distinción entre subelemento y atributo
En elcontexto de los documentos:contexto de los documentos:
• Los atributos son texto que no aparecen en el documento impreso o visualizado (forman parte de las marcas y no del contenido). • Los subelementos son parte del contenido del documento. En elcontexto de la representacicontexto de la representacióón de datosn de datos(BD e intercambio de datos):
• La diferencia es menos relevante.
• La misma información se puede representar de dos maneras • La elección de utilizar una u otra es frecuentemente arbitraria En el caso de atributos multivaluados: siempre siempre subelementossubelementos
2. Estructura de los datos XML
Los elementos sin subelementos o contenido de texto se pueden abreviar finalizando la etiqueta de inicio con un /> y borrando la etiqueta final:
<número cuenta=“C-101” sucursal=“Navacerrada” saldo=“200 /> Los elementos abreviados pueden contener atributos.
Para almacenar datos de cadenasdatos de cadenasque pueden contener etiquetas, sin que dichas etiquetas se interpreten como subelementos, utilizar
CDATA
CDATA:
<![CDATA[<cuenta> … </cuenta>]]>
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Los datos XML se pueden que intercambiar entre organizaciones.
El mismo nombre de etiqueta puede tener diferentes significados en diferentes organizaciones.
Solución: especificar una cadena única como un nombre global de elementos:
Anteponer a cada etiqueta o atributo un identificador de recursos universal: espacio de nombres
nombre-único: nombre-elemento
Para evitar utilizar nombres únicos largos se definen abreviaturas en el espacio de nombres
espacio de nombres(namespace) estándar.
<banco Xmlns:FB=‘http://www.BancoPrincipal.com’>
<FB:sucursal>
<FB:nombresucursal>Centro</FB:nombresucursal> <FB:ciudadsucursal> Brooklyn</FB:ciudadsucursal> </FB:sucursal>…
</banco>
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
Los esquemas de las bases de datos restringen ququééinformaciinformacióónnse puede almacenar, y los tipos de datostipos de datosde los valores almacenados. Los documentos XML no precisan tener un esquema asociado. Sin embargo, los esquemas son muy importantes para el intercambio
de datos XML.
De lo contrario, un sitio no puede interpretar automáticamente los datos recibidos de otro sitio.
Dos mecanismosmecanismospara especificar el esquema XML
Document Type Definition (DTD)(Definición de Tipos de Documento) • Ampliamente utilizado, aunque en desuso
• Parte del estándar XML Esquema XML
• Más novedoso y en auge
• Soluciona parte de los problemas de las DTDs
2. Estructura de los datos XML
El tipo de un documento XML se puede especificar utilizando una DTD la DTD es opcionalopcional
DTD restringe la estructura de los datos de XML
Qué elementos pueden producirse Qué atributos puede/debe tener un elemento
Qué subelementos pueden/deben producirse dentro de cada elemento, y cuántas veces.
DTD nonorestringe los tipos de datos
Todos los valores se representan como cadenas de XML
Sintaxis de DTD
<!ELEMENT elemento (especificación-subelementos) > <!ATTLIST elemento (atributos) > orden irrelevante
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
Los subelementossubelementospueden especificarse como:Nombres de elementos, o
#PCDATA (datos de caracteres analizados): cadenas de caracteres
EMPTY (sin subelementos) o ANY (cualquiera, no hay restricción sobre los subelementos del elemento)
• Ejemplo:
<! ELEMENT impositor (nombre-cliente número-cuenta)> <! ELEMENT nombre-cliente(#PCDATA)> <! ELEMENT número-cuenta (#PCDATA)>
La especificación de subelementos puede tener expresiones regulares
<!ELEMENT banco ( ( cuenta | cliente | impositor)+)> • Notación:
– | - alternativas – + - 1 ó más casos – * - 0 ó más casos – ? - 0 ó 1 caso
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
<!DOCTYPE banco [<!ELEMENT banco ( ( cuenta | cliente | impositor)+)> <!ELEMENT cuenta (número-cuenta, nombre-sucursal, saldo)>
<! ELEMENT cliente (nombre-cliente, calle-cliente, ciudad-cliente)>
<! ELEMENT impositor (nombre-cliente, número-cuenta)> <! ELEMENT número-cuenta (#PCDATA)> <! ELEMENT nombre-sucursal (#PCDATA)> <! ELEMENT saldo (#PCDATA)> <! ELEMENT nombre-cliente (#PCDATA)> <! ELEMENT calle-cliente (#PCDATA)> <! ELEMENT ciudad-cliente (#PCDATA)>]> <banco>
<cuenta> <número-cuenta> C-101</número-cuenta> <nombre-sucursal>Centro </nombre-sucursal> <saldo>500</saldo> </cuenta> <impositor> <nombre-cliente>González</nombre-cliente> <número-cuenta>C-101</número-cuenta> </impositor> </banco>
2. Estructura de los datos XML
Especificación de atributosatributos: <!ATTLIST elemento lista_atributos>Para cada atributo: Nombre Tipo de atributo
• CDATA datos de tipo carácter
• ID (identificador) o IDREF (referencia a ID) o IDREFS (múltiples IDREF) Si
• es obligatorio (#REQUIRED), • tiene un valor por defecto (valor),
• no se ha especificado ningún valor predeterminado (#IMPLIED)
Ejemplos
<!ATTLIST cuenta tipo-cuenta CDATA “cuenta corriente”> <!ATTLIST cliente
cliente-id ID #REQUIRED
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Un elemento puede tener a lo sumo un atributo de tipo ID. El valor del atributo ID de cada elemento de un documento XML debe
ser distinto.
Así el valor del atributo ID es un identificador del objeto.
Un atributo de tipo IDREF debe contener el valor ID de un elemento en el mismo documento.
Un atributo de tipo IDREFS contiene un conjunto de (0 o más) valores ID separados por espacios. Cada valor ID debe contener el valor ID de un elemento del mismo documento.
IDs e IDREFs Similares a los mecanismos de referencia de las BDOO y BDOR (OIDs y REFs)
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
<!DOCTYPE banco-2[<!ELEMENT cuenta (sucursal, saldo)> <!ATTLIST cuenta
número-cuenta ID # REQUIRED
titulares IDREFS # REQUIRED>
<!ELEMENT cliente (nombre-cliente, calle-cliente, ciudad-cliente)> <!ATTLIST cliente
cliente-id ID # REQUIRED
cuentas IDREFS # REQUIRED>
…etc…
]> <banco-2>
<cuentanúmero-cuenta=“C-401”titulares=“C100 C102”>
<sucursal> Centro </sucursal> <saldo>500 </saldo> </cuenta>
<clientecliente-id=“C100”cuentas=“C-401”>
<nombre-cliente>Juncal</nombre-cliente> <calle-cliente>Mártires</calle-cliente> <ciudad-cliente>Melilla</ciudad-cliente> </cliente>
<clientecliente-id=“C102”cuentas=“C-401 C-402”>
<nombre-cliente>María</nombre-cliente> <calle-cliente>Etreros</calle-cliente> <ciudad-cliente>Alicante</ciudad-cliente> </cliente >
</banco-2>
2. Estructura de los datos XML
Limitaciones de las DTDs:
No se pueden declarar el tipotipode elementos y atributos de texto individuales: • Todos los valores son cadenas, no son enteros, son números reales, etc. Es difícil especificar conjuntos desordenados conjuntos desordenados de subelementos
• El orden es normalmente irrelevante en las aplicaciones de intercambio de datos (y de BD); es relevante en el diseño de documentos
• (A | B)* permite la especificación de conjuntos desordenados, pero es mucho más difícil asegurar que cada uno de los elementos de A y B se produzca una sola vez
Hay una falta de tipos en ID e IDREF
• El atributo titularesde una cuenta puede contener una referencia, por ejemplo, de otra cuenta (en vez de un cliente), que no tiene sentido. • El atributo titularesidealmente debería restringirse para hacer referencia
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
Esquema XML:Lenguaje de esquema más sofisticado. Soluciona alguno de los inconvenientes de las DTD. Soporta:
• Declaración de tipos de valores – Enteros, cadenas, etc.
– Restricciones de valores mínimos/máximos • Tipos definidos por el usuario
• Tipos específicos mediante la restricción de otros tipos • Extensión de tipos complejos mediante una especie de “herencia” Restricciones de unicidad y claves ajenas
Es un superconjunto de DTDs
XML Schema se especifica en términos de XML
Está integrado por espacios de nombres: diferentes partes de un documento pueden adaptarse a esquemas diferentes
Es significativamente más complicado que las DTDs
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
2. Estructura de los datos XML
Ejemplo:<xsd:schemaxmlns:xsd=http://www.w3.org/2001/XMLSchema> <xsd:element name=“banco” type=“TipoBanco”/> <xsd:element name=“cuenta”>
<xsd:complexType> <xsd:sequence>
<xsd:element name=“número-cuenta” type=“xsd:string”/> <xsd:element name=“nombre-sucursal” type=“xsd:string”/> <xsd:element name=“saldo” type=“xsd:decimal”/> </xsd:sequence>
</xsd:complexType> </xsd:element>
….. definiciones de cliente y titular ….
<xsd:complexType name=“TipoBanco”> <xsd:squence>
<xsd:element ref=“cuenta” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“cliente” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“impositor” minOccurs=“0” maxOccurs=“unbounded”/>
</xsd:sequence> </xsd:complexType> </xsd:schema> name baseType minOccurs: Number = 1 maxOccurs: Number = 1 name baseType use complexType simpleType ALL CHOICE SEQUENCE Type name Restriction type Facet Enumeration set_values ELEMENT attribute * {complete,disjoint} * 1..* Group 1..* 1..* {disj oint} Compositor {complete,disjoint}
{ordered} {choice} {unordered} 1..* 1..* is_based_on0..1 1 satisfies 1..* 1..* Pattern
expression Lengthvalue minLengthlength {incomplete,overlapping} uses 0..* * complexContent is_redefined_by0..* 1 simpleContent redefines 0..* 1 name baseType minOccurs: Number = 1 maxOccurs: Number = 1 name baseType use complexType simpleType ALL CHOICE SEQUENCE Type name Restriction type Facet Enumeration set_values ELEMENT attribute * {complete,disjoint} * 1..* Group 1..* 1..* {disj oint} Compositor {complete,disjoint}
{ordered} {choice} {unordered} 1..* 1..* is_based_on0..1 1 satisfies 1..* 1..* Pattern
expression Lengthvalue minLengthlength {incomplete,overlapping} uses 0..* * complexContent is_redefined_by0..* 1 simpleContent redefines 0..* 1 Metamodelo
2. Estructura de los datos XML
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
1. Motivación: ¿Por qué XML?
2. Estructura de los Datos XML
2.1. DTDs 2.2. Esquemas XML
3. Almacenamiento de Datos XML
4. Consulta a Documentos XML
5. Aplicaciones
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
3. Almacenamiento de datos XML
Bases de datos relacionales
Ventajas:
• Sistemas de BD maduros y ampliamente usados. • Posibilidad de utilización desde aplicaciones existentes. Desventajas:
• Se deben transformar los datos al modelo relacional
• La conversión es sencilla si los datos se generan a partir de un esquema relacional y si se usa XML como formato de intercambio de datos. • Si XML no se genera a partir de un esquema relacional, la transformación
no es tan sencilla. Se producen problemas en la conversión, especialmente: » Elementos anidados
» Elementos que se repiten (atributos multivaluados) • Hay diferentes alternativas para solucionarlo:
– Almacenamiento como cadenas de caracteres – Representación en árbol
– Asignación a relaciones
3. Almacenamiento de datos XML
Bases de datos relacionales: Almacenamiento como cadenas de Almacenamiento como cadenas de caracteres
caracteres Dos opciones:
• Almacenar cada elemento hijo del elemento de nivel superior como un campo de tipo cadena en una tupla separada en la BD.
– Utilizar una única relación (ELEMENTOS) con un atributo (datos) para almacenar todos los elementos (por ejemplo, cada tupla almacena un elemento XML en forma de cadena: cuenta, cliente o impositor)
• Almacenar cada elemento de nivel superior como una relación separada (por ejemplo: Tres relaciones: cuenta, cliente, impositor)
Beneficios:
• Es posible almacenar cualquier dato XML, incluso sin DTD. Inconvenientes:
• El SGBD NO conoce el esquema de los datos almacenados; por tanto, no es posible consultar los datos directamente.
• Necesidad de analizar las cadenas para acceder a los valores dentro de los elementos.
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
3. Almacenamiento de datos XML
Bases de datos relacionales: RepresentaciRepresentacióón en n en áárbol: rbol:Los datos XML se modelan como un árbol y se almacenan en las relaciones: • nodos(id, tipo, etiqueta, valor) hijo(id-hijo, id-padre)) A cada elemento y atributo se le proporciona un identificador único.
Se inserta una tupla en la relación nodos para cada elemento y atributo, con los campos: • Id: identificador del elemento o atributo
• Tipo: especifica si se trata de un atributo o elemento • Etiqueta: especifica el nombre del elemento o del atributo • Valor: es el valor literal del elemento o atributo
La relación hijo almacena el elemento padre de cada elemento y atributo.
• Se puede añadir un atributo más (posición) a hijo, que guarda el orden de los hijos. Beneficios:
• Puede almacenar cualquier dato XML, incluso sin DTD. • Se pueden traducir las consultas a consultas relacionales. Inconvenientes:
• Los datos se dividen en demasiadas piezas y las consultas simples requieren una gran cantidad de combinaciones (joins).
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
3. Almacenamiento de datos XML
Bases de datos relacionales: AsignaciAsignacióón a relacionesn a relacionesLos elementos XML cuyo esquema es conocido, se asignan a relaciones y atributos. Los elementos cuyo esquema es desconocido se almacenen como cadenas o árboles. Se crea una relación para cada tipo de elemento cuyo esquema es conocido:
• Un atributo id para almacenar una id única para cada elemento. • Todos los atributos de elemento se convierten en atributos de relación. • Todos los subelementos que se producen una sola vez se convierten en atributos:
– Si el valor del subelementos es texto, el atributo almacena el texto como valor. – Para subelementos complejos, se almacena la id del subelemento.
• Si el subelemento pueden parecer varias veces en el elemento, se representado en una tabla separada:
– Similar a la conversión de atributos multivaluados del E/R en tablas. Beneficios:
• Almacenamiento eficiente.
• Pueden transmitir consultas XML dentro de SQL, ejecutarlas eficientemente, y después trasladar los resultados de SQL de vuelta a XML.
Inconvenientes:
• Se necesita conocer DTD o esquema XML. • Las sobrecargas por transformación continúan presentes.
3. Almacenamiento de datos XML
Almacenamiento de datos no relacionales
Archivos planos
• Dado que XML es un formato de archivo, es natural almacenar datos XML como un archivo plano.
• Amplia disponibilidad de herramientas para el acceso y consulta a ficheros XML.
• Presentan los problemas asociados a la gestión de ficheros: falta de concurrencia, comprobaciones de integridad, atomicidad, recuperación, seguridad …
Base de datos XML: BD construidas específicamente para almacenar datos XML:
• Modelo de almacenamiento XML puro.
• Construidas como una capa de DOM (Document Object Model) implementada sobre una BDOO + un lenguaje de consulta XML para proporcionar consultas declarativas.
• Construidas como una capa sobre BDOR: – Ventajas de las BD relacionales.
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
1. Motivación: ¿Por qué XML?
2. Estructura de los Datos XML
2.1. DTDs 2.2. Esquemas XML
3. Almacenamiento de Datos XML
4. Consulta a Documentos XML
5. Aplicaciones
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
4. Consulta de datos XML
El resultado de una consulta a un documento XML es otro documento XML. Por tanto, un mismo lenguaje puede combinar:
Transformación de información de un esquema XML a otro Consulta de datos XML
Lenguajes de consulta/transformación de XML:
XPath: consta de expresiones de rutas de acceso.
XSLT: diseñado para la transformación de XML a XML y HTML. XQuery: lenguaje estándar de consulta de XML, con un conjunto completo de
características.
Se ha propuesto una variedad amplia de lenguajes, y algunos han servido como base para el estestáándar de ndar de XQueryXQuery
XML-QL, Quilt, XQL, …
4. Consulta de datos XML
Ejemplo de
XQuery
XQuery
:
:
Lista de todos los pares título-autor cada uno de ellos dentro de un elemento <result>:
• Consulta:
<results> { for $b in doc("/XQuery/docs/XMP/bib.xml")/bib/book, $t in $b/title, $a in $b/author return <result> { $t } { $a } </result> } </results>Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
4. Consulta de datos XML
Ejemplo de
XQuery
XQuery
:
:
<results> <result> <title>TCP/IP Illustrated</title> <author> <last>Stevens</last> <first>W.</first> </author> </result> <result><title>Data on the Web</title> <author> <last>Abiteboul</last> <first>Serge</first> </author> </result> <results> <?xml version="1.0"?>
<!DOCTYPE bib PUBLIC "-//X-HIVE/Generated Public ID 10//EN" "dtd/bib.dtd"> <bib> <book year="1994"> <title>TCP/IP Illustrated</title> <author> <last>Stevens</last> <first>W.</first> </author> <publisher>Addison-Wesley</publisher> <price>65.95</price> </book> <book year="2000">
<title>Data on the Web</title> <author> <last>Abiteboul</last> <first>Serge</first> </author> <author> <last>Buneman</last> <first>Peter</first> </author>
<publisher>Morgan Kaufmann Publishers</publisher> <price>39.95</price> </book>
Original
Original
Resultado
Resultado
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
4. Consulta de datos XML
El Modelo de árbol de datos XML
Los lenguajes de consulta y transformación se basan en un modelo de árbolde datos XML.
Un documento XML se modela como un árbol con nodos que corresponde a elementos y atributos:
• Los nodos elemento tienen (o no) nodos hijo, que pueden ser atributos o subelementos.
• El texto de un elemento se modela como un nodo de texto, hijo del elemento. • Los hijos de un nodo se ordenan de acuerdo a su orden en el documento
XML.
• Los nodos de elementos y atributos (excepto los nodos raíz) tienen un padre único, que es un nodo elemento.
• El nodo raíz tiene un único hijo, que es el elemento raíz del documento.
4. Consulta de datos XML
Interfaces de acceso a documentos XML (APIs de procesamiento)
DOMDOM(Document Object Model):
• Interfaz de acceso (API) estándar a los elementos de un documento XML • Genera en memoria una representación jerárquica del documento XML • Los objetos del árbol representan elementos, atributos, contenido, etc. • Los datos XML se representan mediante una estructura de árbol, donde cada
elemento se representa con un nodo (DOMNode). Los programas pueden acceder a partes del documento navegando desde la raíz.
• Se proporcionan variedad en las funciones para navegar a través del árbol DOM. Por ejemplo, el API DOM de Java proporciona una interfaz Node (interfaces hijas Element y Attribute) con métodos:
getParentNode( ), getFirstChild( ), getNextSibling( ), getAttribute( )… • También proporciona funciones para actualizar árboles DOM. • DOM se puede usar para acceder a datos XML almacenados en BD; se
puede construir una BD XML usando DOM como interfaz de acceso y actualización de datos.
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Interfaces de acceso a documentos XML (APIs de
procesamiento)
SAXSAX(Simple API for XML):
• Interfaz de acceso (API) secuencial a elementos XML • Modelo de eventos: Acceso por medio de eventos (inicio/fin de
etiqueta/atributo/contenido)
• Se basa en la noción de manejadores de eventos: funciones especificadas por el usuario asociadas con eventos de análisis.
• No genera árbol en memoria
menos recursos = más rápido• SAX no es adecuado para aplicaciones de base de datos.
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
Índice
1. Motivación: ¿Por qué XML?
2. Estructura de los Datos XML
2.1. DTDs 2.2. Esquemas XML
3. Almacenamiento de Datos XML
4. Consulta a Documentos XML
5. Aplicaciones
5. Aplicaciones
Intercambio de datosEstándares para representación XML de datos de aplicaciones especializadas: química, transporte (registros de envíos, …), B2B (catálogos, …), etc. El modelo relacional, para aplicaciones de datos tan complejas, genera un gran
número de relaciones complicadas de gestionar.
En XML, la representación explícita de nombres de atributos y sus valores, ayuda a evitar confusiones entre atributos.
La representación de elementos anidados permite reducir el número de relaciones a representar; también reduce el número de combinaciones en las consultas.
Operaciones:
Los datos XML suelen proceder de BD relacionales que hay que convertirlos a formato XML.
Los datos de entrada hay que convertirlos de XML a un formato normalizado para almacenarlo en una BD relacional.
• BD con capacidades XML conversión automática del modelo relacional a XML
Grupo de Investigación Kybele, 2007 © { MARCOS L
{ MARCOS LÓÓPEZ SANZ}PEZ SANZ}
5. Aplicaciones
Mediación de datos
Ejemplos:
• Aplicaciones de comparación de precios de compra
• Gestión centralizada de cuentas de un cliente en distintas instituciones, etc.
Si la información no está en XML: software envolvente
Genera datos XML a partir de páginas HTML.
Estas aplicaciones necesitan un mantenimiento constante, ya que dependen de los detalles de formato de las páginas Web.
Una vez que se tiene la información de las distintas fuentes: aplicación mediadora
Se combina la información de las distintas fuentes en un único esquema. El mediador debe proporcionar código para transformar los datos entre diferentes