XML y Bases de Datos
Ana Beln Martnez Prieto
Universidad de Oviedo
Contenidos
Introduccin XML y Bases de Datos Relacionales XML y Bases de Datos Orientadas a Objetos XML y Bases de Datos Nativas XQuery
XML Introduccin
Estndar para el intercambio de datos entre aplicaciones en Internet independiente del formato de almacenamiento de los mismos
BD Relacionales
XML
Documento XML
BDOO
Es lgico que las consultas entre aplicaciones se expresen como consultas contra los datos en formato XML
XQuery
XML Introduccin (II)
Muchas aplicaciones requieren el almacenamiento de datos XML Existen diferentes alternativas:
XML
BD Relacionales
BD Nativas
BDOO
Contenidos
Introduccin XML y Bases de Datos Relacionales XML y Bases de Datos Orientadas a Objetos XML y Bases de Datos Nativas XQuery
Bases de Datos Relacionales
Se basan en las relaciones (tablas bidimensionales) como nico medio para representar los datos del mundo real Lenguaje estndar SQL
Relacin Alumnos
DNI
10345678 76987654 09875432
Atributos->Dominio
Relacin Asignaturas
Direccin
Ura 27, 2A Begoa 34, 1B Av. Galicia 12, 6B
Nombre
Juan Gonzlez Surez Sonia Garca Martnez Mara Prez Prez
FNac
19-06-1980 16-05-1983 18-04-1983
Cdigo
01 02 03
Nombre
Bases de Datos Programacin lgebra
Crditos
9 9 6
Curso
3 1 1
Tipo
Obligatoria Troncal Obligatoria
Relacin AlumAsig
DNI
10345678 10345678 09875432
CodigoAsig
Nota
4 3 7
01 02 01
Tupla
Bases de Datos Relacionales (II)
Se han creado complejas teoras y patrones para encajar objetos o estructuras jerarquizadas en bases de datos relacionales
Existen numerosos middlewares encargados de la transferencia de informacin entre estructuras XML y bases de datos relacionales
Nombre ADO Allora ASP2XML Data Junction DBX InterAccess JaxMe XML-DBMS Fabricante Microsoft HiT Software Stonebroom Data Junction Inc. Swift Inc. XML Soft. Corporation Jochen Wiedmann Ronald Bourret Licencia Comercial Comercial Comercial Open Source Comercial Comercial Open Source Open Source XML->BD X X X X X X X X BD->XML X X X X X X X X
Bases de Datos Relacionales
Transformacin a XML
Veamos un ejemplo de transformacin de una tabla a un documento XML
Tabla Libros
DTD
Reglas de transformacin
Documento XML
Bases de Datos Relacionales
Transformacin a XML - Tabla Libros
nombre
apellido
email
nombre
resultado comentario
isbn
ttulo
autores editorial precio
ao
revisores
nombre oficina homepage
Bases de Datos Relacionales
Reglas de Transformacin Relacional - DTD
Regla 1
Para cada tabla en el esquema de la base de datos hay que crear un elemento
con el mismo nombre de la tabla y la cardinalidad apropiada.
<!DOCTYPE libros [ <!ELEMENT libros (libro)*> ]>
Bases de Datos Relacionales
Reglas de Transformacin Relacional - DTD
Regla 2
Las columnas de la tabla son incluidas en otro elemento (sub-elemento del
elemento creado en la regla anterior), que representa un registro en la tabla
<!ELEMENT libro (isbn, titulo, autores, editor, precio, ao, revisores)>
Bases de Datos Relacionales
Reglas de Transformacin Relacional - DTD
Regla 3
Para cada columna en la tabla cuyo tipo de dato es simple (char, integer, etc.)
crear un elemento, sub-elemento del elemento creado en el paso anterior, de tipo #PCDATA con el mismo nombre de la columna.
<!ELEMENT isbn (#PCDATA)> <!ELEMENT titulo (#PCDATA)>
Bases de Datos Relacionales
Reglas de Transformacin Relacional - DTD
Regla 4
Para cada columna en la tabla cuyo tipo de dato es complejo (tipo objeto), crear
un elemento complejo, sub-elemento del elemento creado en el paso 2, con el mismo nombre de la columna. Para cada propiedad del tipo objeto crear un elemento con el mismo nombre de la propiedad.
<!ELEMENT autores (autor)+> <!ELEMENT autor (nombre, apellidos, email)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT apellidos (#PCDATA)> <!ELEMENT email (#PCDATA)>
Bases de Datos Relacionales
Reglas de Transformacin Relacional - DTD
Regla 5
Para cada columna en la tabla que es una tabla anidada, crear un elemento con el
mismo nombre de esa columna y la cardinalidad apropiada. Repetir todos los pasos desde el 2.
Bases de Datos Relacionales
DTD Resultante
<!DOCTYPE libros [ <!ELEMENT libros (libro)*> <!ELEMENT libro (isbn, titulo, autores, editor, precio, ao, revisores)> <!ELEMENT isbn (#PCDATA)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT autores (autor)+> <!ELEMENT autor (nombre, apellidos, email)> <!ELEMENT editor (nombre,oficina,homepage) > <!ELEMENT nombre (#PCDATA)> <!ELEMENT apellidos (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT oficina (#PCDATA)> <!ELEMENT homepage (#PCDATA)> <!ELEMENT precio (#PCDATA)> <!ELEMENT ao (#PCDATA)> <!ELEMENT revisores (revisor)*> <!ELEMENT revisor (nombre,resultado,comentarios)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT resultado (#PCDATA)> <!ELEMENT comentario (#PCDATA)>]>
Bases de Datos Relacionales
Posible Documento XML Resultante
<?xml version=1.0>
<libros> <libro> <isbn> 1-55655-767-6 </isbn> <titulo> Fundamentos de Bases de Datos </titulo> <autores> <autor> <nombre> Abraham</nombre> <apellido> Silberschatz</apellido> <email> silbers@[Link] </email> </autor> <autor> <nombre> Henry </nombre> <apellido> Korth </apellido> <email> korth@ [Link] </email> </autor> </autores> <editor> <nombre> McGraw-Hill </nombre> <oficina> Av. Santander s/n </oficina> <homepage> [Link] </homepage> </editor> <precio> 40 </precio> <ao> 2003 </ao> <revisores> <revisor> <nombre> James Smith </nombre> <resultado> 8 </resultado> <comentario> Es un libro de texto bsico ...</comentario> </revisor> </revisores> </libro> </libros>
Resumen Transformacin
Esquema Relacional - DTD
<!DOCTYPE tabla [ <!ELEMENT tabla (registro)*> <!ELEMENT registro (columna1, columna2,..., columnaN)> <!ELEMENT columna1 (#PCDATA)> <!ELEMENT columna2 (propiedad1, propiedad2,..., propiedadN) > ... <!ELEMENT columnaN (#PCDATA)> <!ELEMENT propiedad1 (#PCDATA)> <!ELEMENT propiedad2 (#PCDATA)> ... <!ELEMENT propiedadN (#PCDATA)> ]>
Resumen - Transformacin
Esquema Relacional - XML SCHEMA
<xsd:schema xmlns:xsd=[Link] <xsd:element name=tabla> <xsd:complexType> <xsd:sequence> <xsd:element name=registro minOccurs=0 maxOccurs=unbounded> <xsd:complexType> <xsd:sequence > <xsd:element name=columna1 type=xsd:positiveInteger/> <xsd:element name=columna2/> <xsd:complexType> <xsd:sequence > <xsd:element name=propiedad1 type=xsd:string/> <xsd:element name=propiedad2 type=xsd:boolean/> .... <xsd:element name=propiedadn type=xsd:positiveInteger/> </xsd:sequence> </xsd:complexType> </xsd:element > <xsd:element name=columnaN type=xsd:string/> </xsd:sequence > </xsd:complexType> </xsd:element > </xsd:sequence > </xsd:complexType> </xsd:element > </xsd:schema>
Bases de Datos Relacionales Suponen una posibilidad para el almacenamiento de datos XML Sin embargo, no estn bien preparadas para almacenar estructuras de tipo jerrquico como son los documentos XML:
BD relacionales tienen una estructura regular frente al carcter heterogneo de los documentos XML Documentos XML suelen contener muchos niveles de anidamiento mientras que los datos relacionales son planos Documentos XML tienen un orden intrnseco mientras que los datos relacionales son no ordenados Datos relacionales son generalmente densos (cada columna tiene un valor) mientras que los datos XML son dispersos pueden representar la carencia de informacin mediante la ausencia del elemento
Contenidos
Introduccin XML y Bases de Datos Relacionales XML y Bases de Datos Orientadas a Objetos XML y Bases de Datos Nativas XQuery
Bases de Datos Orientadas a Objetos
Introduccin
Los Sistemas de Bases de Datos Orientadas a Objetos soportan un modelo de objetos puro, en la medida de que no estn basados en extensiones de otros modelos ms clsicos como el relacional:
Estn fuertemente influenciados por los lenguajes de programacin orientados a objetos Pueden verse como un intento de aadir la funcionalidad de un SGBD a un lenguaje de programacin
Ejemplos de SGBDOO son Poet ([Link] Jasmine ([Link] ObjectStore ([Link] GemStone ([Link] Representan una alternativa viable para el almacenamiento y gestin de documentos XML
Bases de Datos Orientadas a Objetos
Estructura de Referencia
Extienden el lenguaje de programacin y su implementacin (compilador, preprocesador, ...) para incorporar funcionalidad de base de datos Se pretende conseguir un lenguaje con una sintaxis simple, con un modelo y sistema de tipos unificado
P ro g ram a F u en te en C + + , Ja v a, etc
E n to rn o 4 G L /R A D
P ro c e s a d o r d e c o n s u lta s a d h o c
U tilid a d e s
P re p ro c e s a d o r C o m p ila d o r
P ro g ram a F u en te en 4 G L/R A D
P ro c e s a m ie n to d e tra n s a c c io n e s , g e s ti n d e e rro re s , re c u p e ra c i n , a u to riza c i n , s e g u rid a d
M d u lo s C d ig o O b jeto
L in ke r
P ro g ram a E jec u ta ble
P ro c e s a m ie n to y o p tim iza c i n d e c o n s u lta s
R e c u rs o s d e B a s e d e D a to s
L ib re ra s d e clas e s , m d ulos e jec tu a ble s d e le n g u a jes d e p ro g ra m ac i n
L ib re ra s d e c las e s , m d ulos e jec u ta ble s d e SGBDOO
D a to s /o b jeto s V is tas R e g la s
In d ic e s
C a t lo g o s
Bases de Datos Orientadas a Objetos
Caractersticas: Persistencia Cualidad de algunos objetos de mantener su identidad y relaciones con otros objetos con independencia del sistema o proceso que los cre.
Persona DNI Nombre Direccin
Objetos Transitorios
Persona 4 Persona 4 Persona 3 Persona 3 Persona1 Persona 2 Persona1 Persona 2
Objetos Persistentes
Persona 9 Persona 9 Persona 7 Persona 7 Persona6 Persona 2 Persona6 Persona 2
Extensin de la Clase
Inconveniente:
El nombrado objeto nivel Bases de Datos Orientadas a Objetos de cada prcticoapara individual no resulta
Caractersticas: Persistencia por nombramiento Por llamada explcita - nombramiento
una base de datos de tamao considerable
Implica dar un nombre nico al objeto persistente por el que podr ser recuperado por otros programas Los nombres han de ser nicos en cada base de datos
Punto de Entrada: PersonaJuan
Ejemplo
Persona p1 = new Persona(11111111,Juan,Uria); [Link](PersonaJuan,p1);
Programa createRoot (PersonaJuan,p1)
Juan Juan Garca Garca Ura Ura
getRoot (PersonaJuan)
Bases de Datos Orientadas a Objetos
Caractersticas: Persistencia por alcance Por referencia o alcance
Un objeto se convierte en persistente si es alcanzado desde otro objeto persistente Persiste por referencia un objeto de la clase Persona
Persona
DNI Nombre Direccin
2
Ejemplo Persona p = new Persona (1100000,Juan, Uria);
Coche
Matrcula Marca Modelo Propietario
Coche c1 = new Coche(4130 XXC,Renault,Megane, p);
IDO
[Link](CocheJuan,c1);
1
Persiste el objeto coche c1 Punto de Entrada: CocheJuan
Bases de Datos Orientadas a Objetos
Caractersticas: Persistencia por alcance + nombramiento
TodasPersonas = new OSTreeSet(); [Link](TodasPersonas,TodasPersonas); ..... Persona p = new Persona(44444444,Pedro,Avils); [Link](p); .....
Es el mecanismo ms utilizado: Nombramiento y Alcance combinados
Crear un objeto persistente (con nombre) que representa un conjunto o lista de objetos de una determinada clase
Objeto TodasPersonas
Objetos Persona
...
Extensin de la Clase
[Link] Bases de Datos Orientadas a Objetos
ODMG 93 - Primera Versin ODMG 2.0 - Segunda Versin ODMG 3.0 - Versin actual
Estndar ODMG
ODMG (Object Data Management Group) representa el estndar para los SGBDOO confeccionado por un conjunto de vendedores de dichos sistemas Componentes del Estndar:
Modelo de Objetos
Est concebido para proporcionar un modelo de objetos estndar para las bases de datos orientadas a objetos Es el modelo en el que se basan el lenguaje de definicin de objetos (ODL) y el lenguaje de consultas (OQL Lenguaje de Definicin de Objetos (ODL, Object Definition Language) Conocido como OQL (Object Query Language) Lenguaje declarativo estilo SQL Definen un lenguaje de manipulacin de objetos (OML, Object Manipulation Language) que extiende el lenguaje de programacin para soportar objetos persistentes. Adems incluye soporte para OQL, navegacin y transacciones
Lenguajes de Especificacin de Objetos
Lenguaje de Consulta
Bindings para C++, Java y Smalltalk
Bases de Datos Orientadas a Objetos
Estndar ODMG- Modelo de Objetos Basado en el modelo de objetos de OMG Principales caractersticas
Atributos y relaciones como propiedades de los objetos Operaciones de los objetos y excepciones Herencia mltiple Extensiones y claves Nombrado de objetos, tiempos de vida e identidad Tipos atmicos, estructurados y literales coleccin Clases coleccin list, set, bag y array Control de concurrencia y bloqueo de objetos Operaciones de base de datos
Bases de Datos Orientadas a Objetos
Estndar ODMG-Object Definition Language (ODL)
Est diseado para soportar constructores semnticos del modelo de objetos ODMG No es un lenguaje de programacin completo
Notacin Grfica
Relaciones:
1:1 1:N
Clase Persona
Interfaz Persona-IF
Herencia
M:N
de interfaz
de clase
Bases de Datos Orientadas a Objetos
Clase Profesor
class Profesor extends Persona (extent profesores) { attribute string categoria; attribute float salario; relationship set <Alumno> asesora_a inverse Alumno::asesor; void dar_aumento(in float aumento); void promocionar (int string nueva_categoria); } Profesor
asesora-a
Estndar ODMG-Object Definition Language (ODL)-Ejemplo
Persona
asesor
Alumno
Clase Alumno
class Alumno extends Persona (extent alumnos key n-matricula) { Attribute string n-matricula; attribute string clase; relationship Profesor asesor inverse Profesor::asesora_a; .... }
Bases de Datos Orientadas a Objetos
Estndar ODMG-Object Query Language (OQL)
La sintaxis es similar a la de SQL con caractersticas adicionales para conceptos ODMG como:
identidad de objetos objetos complejos operaciones herencia polimorfismo y relaciones
Mantiene la integridad de los datos empleando las operaciones definidas sobre el objeto, en vez de sus propios operadores de actualizacin
Bases de Datos Orientadas a Objetos
Expresiones de Camino
Estndar ODMG-Object Query Language (OQL)- Ejemplos
Select e From personas p Where [Link]=Oviedo
Invocacin de Mtodos
Select [Link] From personas p Where p.vive_en(Oviedo)
Bases de Datos Orientadas a Objetos
Especfica
Posibilidades ofrecidas para la gestin de XML: Especfica
Emplea una nueva clase para cada nuevo tipo de informacin. Se modelan los datos en el documento XML como un rbol de objetos pero que son especficos para los datos en el documento Esta opcin es especialmente apropiada para documentos XML vlidos y para aplicaciones centradas en los datos Existen muchos productos que implementan esta asociacin de documentos XML a objetos (XML Data Binding) . Ej. JAXB
Bases de Datos Orientadas a Objetos
Traducir
Posibilidades ofrecidas para la gestin de XML: Especfica (II)
Esquema XML
Clases
Validar
BDOO Traducir Objetos
Almacenar - Consultar
Documento XML
Bases de Datos Orientadas a Objetos
Transformacin a XML
Veamos un ejemplo de transformacin de un esquema orientado a objetos a un documento XML
autor
libro
editorial
XML Schema
Reglas de transformacin
Documento XML
Bases de Datos Orientadas a Objetos
Ejemplo de tranformacin de clases a XML Schema
autor cdigo nombre apellido email
1..*
escribe
1..*
libro isbn ttulo ao precio
1..*
publicadopor
1.
editorial idpub nombre oficina homepage
Bases de Datos Orientadas a Objetos
Ejemplo de tranformacin Cdigo ODL
Class libro (extent libros key isbn) { attribute string isbn; attribute string titulo; attribute unsigned short ao; attribute float precio; relationship set <autor> escritopor inverse autor::escribe; relationship editorial publicadopor inverse editorial::publica; }; Class autor (extent autores key codigo) { attribute string codigo; attribute string nombre; attribute string apellido; attribute list<string> email; relationship set <libro> escribe inverse libro::escritopor; }; Class editorial (extent editoriales key idpub) { attribute string idpub; attribute string nombre; attribute string oficina; attribute string homepage; relationship set <libro> publica inverse libro::publicadopor; };
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 1
Cada documento XML tiene un elemento raz (puede ser el nombre de la base de
datos) que debe tener asociado un tipo complejo annimo que incluye un elemento especial choice con un atributo maxOcurrs con valor unbounded
<xsd:element name=libros> <xsd:complexType> <xsd:choice maxOccurs=unbounded>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 2
Cada clase en el esquema ODL se convierte en un elemento, con el mismo nombre, que es incluido en el elemento choice creado en el paso anterior. A este
elemento hay que asociarle un tipo complejo con un elemento especial sequence cuyo contenido se deriva de las siguientes reglas.
<xsd: element name=libro> <xsd:complexType> <xsd:sequence>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 3
Los atributos con tipos de datos bsicos (string, short, date, float, etc) se
traducen en elementos atmicos, con el mismo nombre, que son incluidos en la secuencia, creada en el paso anterior.
<xsd: element name=libro> <xsd:complexType> <xsd:sequence> <xsd:element name=isbn type=xsd:string/> <xsd:element name=titulo type=xsd:string/> <xsd:element name=ao type=xsd:unsignedshort/> <xsd:element name=precio type=xsd:float/>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 4
Para los atributos key es necesario declarar un elemento especial key como un un atributo name, cuyo valor ser el nombre de la clase al que pertenece la
clave, ms la letra K. sub-elemento del elemento resultado de la regla 1. Este elemento se caracteriza por
el atributo xpath del sub-elemento selector debe contener una expresin como .//nombre de la clase a la que pertenece el atributo clave. El atributo xpath del sub-elemento field debe contener una expresin
Xpath como: keynombre-atributo.
<xsd:key name=librok> <xsd:selector xpath=.//libro/> <xsd:field xpath=isbn/> </xsd:key>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 5 A)
Cada relacin que contiene las palabras clave set,list o bag se convierte en un
elemento con el mismo nombre, que es incluido en la secuencia creada en la regla 2, y como la cardinalidad es mayor que 1 se le debe asociar explcitamente el atributo maxOccurs con un valor unbounded.
Este elemento incluir un tipo de dato complejo annimo con un elemento especial complexContent, que incluir un elemento restriction que contiene un
atributo con el nombre del atributo clave de la clase referenciada.
<xsd:element name=escritopor maxOccurs=unbounded/> <xsd:complexType> <xsd:complexContent> <xsd:restriction base=xsd:anyType> <xsd:attribute name=codigo type=xsd:string> </xsd: restriction> </xsd:complextContent> </xsd:complexType> </xsd:element>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 5 B)
Se declarar un elemento especial Keyref como un sub-elemento del elemento
que ha resultado de la regla 1. Este elemento tendr
un atributo name con el nombre de la clase a la que pertenece la
relacin+Ref+nombre de la clase con la que se relaciona.
un atributo refer cuyo valor es el nombre del elemento clave de la clase
referenciada
el atributo xpath del sub-elemento selector tendr como valor .//nombre de
la clase a la que pertenece la relacin/nombre de la relacin
el atributo xpath del sub-elemento field contendr la expresin @nombre
del atributo clave de la clase referenciada
<xsd:keyref name=libroRefAutor refer=autorK> <xsd:selector xpath=.//libro/escritopor/> <xsd:field xpath=@codigo/> </xsd:keyref>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 6
Cada relacin que no contiene set, list o bag se convierte en un elemento con el
mismo nombre. La traduccin es similar a la expresada en la regla anterior, con algunas excepciones: el atributo maxOccurs, con valor unbounded no debera emplearse en la declaracin del elemento keyref el atributo xpath del elemento selector contendr el nombre de la clase a la que pertenece la relacin el atributo xpath del elemento field contendr el nombre de la relacin
<xsd:element name=publicadopor type=xsd:string/>
Bases de Datos Orientadas a Objetos
Reglas de Transformacin ODL XML Schema Regla 7
Cada atributo de una clase de tipo list se convierte en un elemento, con el mismo nombre, que es incluido en el elemento sequence que resulta de la regla 2.
Este elemento incluye un tipo de datos simple annimo que debe incluir un elemento list con un atributo itemType cuyo valor puede ser definido por los
usuarios o asignado por defecto.
<xsd: element name=email> <xsd:simpleType> <xsd:list itemType=xsd:string/> </xsd:simpleType> </xsd:element>
Bases de Datos Orientadas a Objetos
XML Schema Resultante
... <xsd:element
.. <xsd:key name=librok> <xsd:selector xpath=.//libro/> <xsd:field xpath=isbn/> </xsd:key>
name=bibdb> <xsd:complexType> <xsd:choice maxOccurs=unbounded> <xsd: element name=libro> <xsd:complexType> <xsd:sequence> <xsd:element name=isbn type=xsd:string/> <xsd:element name=titulo type=xsd:string/> <xsd:element name=ao type=xsd:unsignedshort/> <xsd:element name=precio type=xsd:float/> <xsd:element name=escritopor maxOccurs=unbounded/> <xsd:complexType> <xsd:complexContent> <xsd:restriction base=xsd:anyType> <xsd:attribute name=codigo type=xsd:string> </xsd: restriction> </xsd:complextContent> </xsd:complexType> </xsd:element> <xsd:element name=publicadopor type=xsd:string/> </xsd:sequence> </xsd:complexType> </xsd:element>
<xsd:key name=autork> <xsd:selector xpath=.//autor/> <xsd:field xpath=codigo/> </xsd:key> .... <xsd:keyref name=libroRefAutor refer=autorK> <xsd:selector xpath=.//libro/escritopor/>
Bases de Datos Orientadas a Objetos
Posibilidades ofrecidas para la gestin de XML: Genrica Genrica
Considera toda la informacin del documento como objetos de clases predefinidas interconectadas mediante enlaces que preservan la estructur del documento XML
Ej. nicamente hay una clase para cualquier tag XML de cualquier tipo de documento
DOM emplea esta aproximacin y permite tratar documentos que estn bien-formados Esta opcin es empleada por varias bases de datos nativas
Bases de Datos Orientadas a Objetos
Genrica
Document
Attribute: Element:
libro ao
Posibilidades ofrecidas para la gestin de XML: Genrica (II)
Text:
2004
Element:
titulo
Element:
autor
Element:
editor
Element:
precio
Fundamentos..
Text:
Element:
nombre
Element:
apellido
Element:
email
McGraw-Hill
Text:
Text:
80
Abraham
Text:
Silberschatz
Text:
silbers@hotmail
Text:
Bases de Datos Orientadas a Objetos
Consulta y Procesamiento
Una vez transformado el documento XML en objetos, de forma especfica o genrica, los objetos ya son gestionados directamente por el SGBDOO
Dicha informacin se consulta acudiendo al lenguaje de consulta OQL Los mecanismos de indexacin, optimizacin, procesamiento de consultas, etc. son las del propio SGBDOO, y por lo general, no son especficos para el modelo XML
Contenidos
Introduccin XML y Bases de Datos Relacionales XML y Bases de Datos Orientadas a Objetos XML y Bases de Datos Nativas XQuery
Bases de Datos Nativas
Son bases de datos, y como tales soportan transacciones, acceso multi-usuario, lenguajes de consulta, etc., diseadas especialmente para almacenar documentos XML Las BD nativas se caracterizan principalmente por
Emplear como unidad lgica de almacenamiento el documento XML Preservar el orden del documento, las instrucciones de procesamiento, los comentarios, las secciones CDATA y las entidades Soportar lenguajes de consulta XML
No tener ningn modelo de almacenamiento fsico subyacente concreto. Pueden se construidas sobre bases de datos relacionales, jerrquicas, orientadas a objetos o bien mediante formatos de almacenamiento propietarios
Bases de Datos Nativas
Tipos
Almacenamiento Basado en Texto
Almacena el documento XML entero en forma de texto y proporciona alguna funcionalidad de base de datos para acceder a l.
Posibilidad sencilla: Almacenar el documento como un BLOB en una base de datos relacional, o mediante un fichero, y proporcionar algunos ndices sobre el documento que aceleren el acceso a la informacin
Posibilidad sofisticada: Almacenar el documento en un almacn adecuado con ndices, soporte para transacciones, etc.
Bases de Datos Nativas
Tipos
Almacenamiento Basado en el modelo
Almacena un modelo binario del documento (p.e. DOM) en un almacn existente o bie especfico.
Posibilidad 1: Traducir el DOM a tablas relacionales como Elementos, Atributos, Entidades, etc. Posibilidad 2: Traducir el DOM a objetos en una BDOO Posibilidad 3: Utilizar un almacn creado especialmente para esta finalidad
Bases de Datos Nativas
Sistema propietario
Nombre Centor Interaction Server Coherty XML DB dbXML eXtc GoXML DB Infonyte DB Ipedo XML Database Lucid XML DM Tamino XML Server TeamXML Virtuoso XIndice XDBM Licencia Comercial Comercial Comercial Comercial Comercial Comercial Comercial Comercial Comercial Comercial Comercial Open Source Open Source
Ejemplos Segn sistema de almacenamiento
API C++, Java Java, JSP Java, Javascript, JSP Java JSP, Java Java Java JSP Java Java
Bases de Datos Nativas
Sistema relacional
Nombre DBDOM eXist XDB
Ejemplos Segn sistema de almacenamiento
Licencia Open Source Open Source Open Soure Java Java C++
API
Sistema orientados a objetos
Nombre Birdstep RDM XML MindSuite XDB Ozone Licencia Comercial Comercial Open Source API C, C++, Java Java, C++ Java
Bases de Datos Nativas
Caractersticas Generales
Almacenamiento de documentos en colecciones
Las colecciones juegan en las bases de datos nativas el papel de las tablas en las DB relacionales Los documentos se suelen agrupar, en funcin de la informacin que contienen, en colecciones que a su vez pueden contener otras colecciones.
Validacin de los documentos Consultas
La mayora de las BD XML soportan uno o ms lenguajes de consulta Uno de los ms populares es Query
Bases de Datos Nativas
Caractersticas Generales (II)
Indexacin XML
Se ha de permitir la creacin de ndices que aceleren las consultas realizadas frecuentemente
Creacin de identificadores nicos
A cada documento XML se le asocia un identificador nico por el que ser reconocido dentro del repositorio
Actualizaciones y Borrados
Las BD nativas tienen una gran variedad de estrategias para actualizar y borrar documentos Muchos sistemas soportan el XUpdate para llevar a cabo esta funcionalidad
Contenidos
Introduccin XML y Bases de Datos Relacionales XML y Bases de Datos Orientadas a Objetos XML y Bases de Datos Nativas XQuery
XQuery - Introduccin
encargado de la elaboracin del lenguaje de consulta XQuery para XML XQuery est todava en proceso de elaboracin. Se han publicado diferentes borradores de trabajo:
Query Working Group, creado en octubre de 1999 por el W3C, es el grupo
XQuery 1.0: An XML Query Language, especifica la sintaxis y una descripcin informal del lenguaje
XML Query Requirements (W3C Working Draft) XQuery 1.0 and XPath 2.0 Data Model (W3C Working Draft) XQuery 1.0 Formal Semantics (W3C Working Draft) XQuery 1.0 and XPath 2.0 Functions and Operators (W3C Working Draft) XML Query Use Cases (W3C Working Draft)
XQuery Modelo de Datos
La entrada y la salida de una consulta XQuery se define en trminos de un modelo de datos El modelo de datos de la consulta proporciona una representacin abstracta de uno o ms documentos XML (o fragmentos de documentos) El modelo de datos contempla:
Secuencias Valor especial llamado error value que es el resultado de evaluar una expresin que contiene un error
XQuery Modelo de Datos Caractersticas
Secuencias pueden ser heterogneas: pueden contener varios tipos de nodos y valores atmicos. Sin embargo, una secuencia nunca aparece como un tem en otra secuencia
Se basa en la nocin de secuencia: Coleccin ordenada de cero o ms tems
Tienen -Elemento identidad -Atributo -Texto -Documento Nodo -Comentario -Instruccin Proc. -Namespace Nodo
tem
No tienen identidad Valor Atmico
Nodo
<libro ao="2000"> <titulo> Data on the Web</titulo> <autor> <nombre> Serge</nombre> <apellido> Abiteboul</apellido> </autor> Nodo
-string -integer -decimal -date
Nodo
Orden del documento: corresponde al orden en que los nodos apareceran si la jerarqua de nodos fuese representada en formato XML (si el primer carcter de un nodo ocurre antes que el primer carcter de otro nodo, lo
preceder tambin en el orden del documento)
XQuery Modelo de Datos Ejemplo
[Link]
Se repite
bib ao
libro
1994
libro
ao
titulo
autor
autor
editor
precio
ndamentos
nombre
apellido
email
nombre
apellido
McGraw -Hill
80
Abraham
Silberschatz
silbers@h [Link]
Henry
Korth
XQuery Modelo de Datos Transformacin
XML Schema
Modelo de Datos
D
ocumento XML
schema validation
serialization
A
Document XML
XQuery presenta varios tipos de expresione
El valor de una expresin es una secuencia heterognea de nodos y valores atmicos
XQuery Expresiones
53 5.3 5.3E3 57 -> literal integer -> literal decimal -> literal double -> literal string
La mayora de las expresiones son compuesta por expresiones de ms bajo nivel combinadas mediante operadores y palabras reservadas
Expresiones constituidas por Valores Atmicos
La instruccin let
let $inicio :=1 , $fin:=15
asocia un valor a una variable para ser empleada en una expresin
date (2004-3-30) -> invocacin del constructor ( 2 + 4) * 5 -> los parntesis expresan el orden de evaluacin (1, 2, 3) -> operador , concatena valores para formar una secuencia 1 to 3 -> devuelve la secuencia 1, 2, 3 $inicio -> representa una variable que puede ser utilizada en una expresin Substring( Curso Extension, 1, 5) -> invocacin de funciones
XQuery Ejemplos (1)
Ejemplo de invocacin de funciones
document ([Link])
Devuelve el documento completo (el nodo documento)
Obtener todos elementos libro contenidos en el documento
XQuery Expresiones
document ([Link])//libro
Expresiones constituidas por Path Expressions:
Path Expression en XQuery estn basadas en la sintxis de XPath
Est constituida por una serie de pasos separados por / or // El resultado de cada paso es una secuencia de nodos Su valor es la secuencia de nodos que resultan del ltimo paso en el path
Ejemplo:
Obtener todos los elementos libro hijos del elemento bib en el documento [Link]
document([Link])/bib/libro
/bib
Devuelve el nodo documento Selecciona el elemento bib en la cima del documento
/libro
Selecciona los elementos libro hijos del elemento bib
Los nodos seleccionados por cada paso sirven
XQuery Expresiones
Evaluacin de las Path Expressions:
como nodos de contexto para los siguientes paso Si un paso tiene varios nodos de contexto se evalua cada uno de ellos y el resultado es la union de los resultados dela evaluacin de cada uno de ellos El resultado es siempre una secuencia de nodos distintos (no se admiten duplicados)
Cada paso es evaluado en el contexto de un nodo concreto (nodo de contexto) Un paso puede ser cualquier expresin que devuelva una secuencia de nodos Un paso eje comienza en el nodo de contexto y se desplaza a travs de la jerarqua de nodos en una direccin concreta (la del eje) Los criterios de seleccin para los nodos son:
Nombre Posicin con respecto al nodo de contexto Predicado basado en el valor de un nodo
XQuery soporta 6 ejes: child, descendant, parent, attribute, self y descendantor-self
Path Expressions pueden ser escritas en su versin abreviada o no abreviada
XQuery Expresiones - Predicados
Un predicado es una expresin encerrada entre corchetes que se emplea para filtrar una secuencia de valores
Ej1. Ej2. Ej3. Ej4. Ej.5
libro [titulo = mi titulo] libro [precio >10] libro[5] ->selecciona el quinto nodo hijo libro[precio]->selecciona los libros que tienen un nodo hijo precio libro[@ao>1997] -> selecciona los libros cuyo ao es posterior al 97
XQuery Ejemplos (2)
Devolver los ttulos de todos los libros publicados despus de 1997
Devolver el primer autor de cada libro
Devolver los apellidos de los autores de los libros de [Link]
Devolver los autores que tienen correo electrnico
XQuery Creacin de nodos
Xquery proporciona un constructor de nodos documento:
document{ <?xml-stylesheet type=text/xsl href=c:\temp\[Link]> <libro> <titulo> Fundamentos de Bases de Datos </titulo> ... </libro> }
document{ } crea un nodo documento vacio
Los constructores pueden combinarse con otras expresiones XQuery para generar contenido dinmicamente
En un elemento constructor los { } delimitan las expresiones que son evaluadas para crear un documento abierto
XQuery Creacin de nodos - Ejemplo
<ejemplo> <p> Esto es una consulta de ejemplo </p> <ej> document([Link])//libro[1]/titulo </ej> <p> Este es el resultado de la consulta anterior </p> <ej> {document([Link])//libro[1]/titulo } </ej> </ejemplo>
Salida
<ejemplo> <p> Esto es una consulta de ejemplo </p> <ej> document([Link])//libro[1]/titulo </ej> <p> Este es el resultado de la consulta anterior </p> <ej> Fundamentos de Bases de Datos </ej> </ejemplo>
XQuery Expresiones - Constructores
Constructor de Elementos Calculado
Construye elementos cuyo nombre y contenidos son calculados Element Calcula el nombre
{name ($e)} {$e/@, data ($e)*2}
Calcula el contenido
Constructor de Atributos Calculado
Construye atributos cuyo nombre y contenido son calculados Calcula el nombre Attribute
{ if $p/sex=M then father else mother} { $p/name }
Calcula el contenido
XQuery Expresiones FLWR
FLWR (For Let Where Return) es una de las expresiones ms potentes y tpicas de XQuery Se basa en ligar valores a variables con las clusulas for y let y emplear esas variables para crear nuevos resultados Ejemplo:
Devolver el ttulo de los libros que fueron publicados en el ao 2000
for $b in document("[Link]")//libro where $b/@ao="2000" return $b/titulo
XQuery Expresiones FLWR (II)
Una expresin FLWR
Comienza con una o ms clusulas for o let en cualquier orden (al menos uno de ellas ) Seguidas por una clusula where opcional Puede aparecer una clusula sortby opcional Finaliza con una clusula return obligotoria
XQuery Clusula for
Clusula for
<fact> <fact> <fact> <fact>
2 2 3 3
veces veces veces veces
2 5 2 5
es es es es
4 </fact> 10 </fact> 6 </fact> 15 </fact>
Proporciona una manera de iterar sobre una secuencia de valores, ligando una variable a cada uno de los valores y evaluando una expresin para cada valor de la variable Ejemplos:
Secuencia de valores Expresin a evaluar
1) for
$n
in (2,3)
return $n+1
Resultado
(3,4)
2) for $m in (2,3), $n in (2,5) return <fact> $m veces $n es ($m*$n) </fact>
XQuery Clusula let
Clusula let
Liga variables al resultado entero de una expresin y devuelve una nica tupla Ejemplo:
for $i in (1 to 3) -> liga i a cada tem en la secuencia 1 to 3 let $j := (1 to $i) -> liga i a toda la secuencia (i to $i)
Resultado
$i =1, $j =1 $i =2, $j = (1,2) $i =3, $j = (1,2,3)
XQuery Clusula where
Clusula where
Filtra las tuplas producidas por la clusulas let y for. Contiene una expresin que es evaluada para cada tupla. Si su evaluacin es false esa tupla es descartada
XQuery Clusula return
Clusula return
Esta clusula es ejecutada una vez para cada tupla retenida por la clusula where Los resultados de estas ejecuciones son concatenados en una secuencia que sirve como resultado de la expresin FLWR
XQuery Clusula sortby
Clusula sortby
Esta clusula es ejecutada una vez para cada tupla retenida por la clusula where Esta clusula es evaluada antes que la clusula return Los resultados de estas ejecuciones son concatenados en una secuencia que sirve como resultado de la expresin FLWR
for $i in document("[Link]")//titulo sortby ($i) return $i
XQuery Ejemplos FLWR
Listar el ttulo y precio de los libros cuyos precios sean inferiores a 100.0 euros. Sacar a continuacin solo los que tengan precio
Listar el ttulo de cada libro junto con el nmero de autores
XQuery Ejemplos FLWR (II)
Listar los ttulos de los libros con ms de dos autores
XQuery Ejemplos FLWR (III)
Combinar datos de dos fuentes distintas (dos ficheros xml)
Ejemplo:
Listar los ttulos de los libros as como cualquier revisin que haya sobre ellos
XQuery Expresiones
Expresiones condicionales
if (expresion ) then else (se ejecuta si la expresin devuelve false o una secuencia vacia)
Ejemplo:
if (count($b/autor)>2) then <autor> et al. </autor> else ()
XQuery Expresiones
Expresiones cuantificadas
Cuantificador existencial (some)
Para cada valor se evalua la expresin de test
Comprueba si una condicin es cierta para algn valor en la secuencia Ejemplo:
some $n in (5, 7, 9, 11) satisfies $n > 10 Devuelve true porque la expresin de test es cierta para algunos valores
Cuantificador universal (every)
Comprueba si una condicin es cierta para cada valor en la secuencia Ejemplo: every $n in (5, 7, 9, 11) satisfies $n > 10
Devuelve false porque la expresin no es cierta para todos los valores
XQuery Operadores
Comparacin de valores: eq, ne, lt,le, gt, ge
Comparan dos valores escalares y produce un error si alguno de los operandos es una secuencia de longitud mayor de 1
Comparacin generales: =, !=, >, >=, <, <=
Permiten comparar operandos que sean secuencias
Comparacin de nodos: is e is not
Comparan la identidad de dos nodos. Ej. $nodo1 is $nodo2 es true si ambas variables estn ligadas al mismo nodo
Comparacin de ordenes de los nodos: <<
Compara la posicin de dos nodos. $node1<<$node2 es true si el nodo ligado a $node1 ocurre primero en el orden del documento que el nodo ligado a $nodo2
Lgicos: and y or
Se emplean para combinar condiciones lgicas dentro de un predicado. Ej. Item[seller=Smith and precio]
Sobre secuencias de nodos: union, intersect y except
Devuelven secuencias de nodos en el orden del documento y eliminan duplicados de las secuencias resultado
Aritmticos: +, -, *, div, mod
Son definidos sobre valores numricos
Negacin: not
Es una funcin ms que un operador. Invierte un valor booleano.
XQuery Funciones
Funciones predefinidas como:
document() Funciones agregadas: sum, avg,count, max, min, que operan sobre una secuencia de nmeros y devuelven un resultado numrico Substring(),upper-case(), lower-case(), concat(), Etc.
Definidas por el usuario:
Define function libros-por-autor ($nombre,$apellido) as element()* { for $b in document("[Link]")/bib/libro where some $i in $b/autor satisfies ($i/apellido=$apellido and $i/nombre=$nombre) order by $b/titulo return $b/titulo }
Direcciones de inters
XML + BD
XML and Databases
[Link]
XML Database Products: [Link] XML Query Engines
[Link]
Bibliografa
Data on the Web. From relations to semistructured data and XML
Abiteboul S., Buneman P. Y Suciu Dan Morgan Kaufmann, 2000
The Object Database Standard: ODMG 3.0.
Rick Cattell et al. Morgan Kaufmann, 1999.
Succeeding with Object Databases: A practical look at todays implementations with Java and XML.
A. Chaudhri y R. Zicari et al. John Wiley & Sons, 2000.
XQuery 1.0: An XML Query Language
W3C Working Draft (November 2003) [Link] ery