Top Banner
1 { MARCOS L { MARCOS LÓPEZ SANZ } PEZ SANZ } Kybele, 2007 © Bases de Datos XML Kybele, 2007 © { MARCOS L { MARCOS LÓPEZ SANZ } PEZ SANZ } Índice Requisitos de las BD XML Soluciones BD XML BD XML nativas Definición y características Tipos Productos Tamino XML Server y X-Hive Extensiones de BD para XML Kybele, 2007 © { MARCOS L { MARCOS LÓPEZ SANZ } PEZ SANZ } Requisitos de las BD XML Representación de información Representación detallada (Fine-grained) Representación tipada (basada en tipos) Control de versiones (Versioning) Acceso a los contenidos Acceso detallado (Fine-grained): DOM. XQuery, XPath… Acceso tipado: enteros, listas, objetos… Actualizaciones detalladas Estructuras de índices de valores (árboles B), texto y paths (rutas de acceso)
18

[GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

Feb 07, 2018

Download

Documents

hoangngoc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

1

{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ } Kybele, 2007 ©

Bases de Datos XML

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Índice

� Requisitos de las BD XML� Soluciones BD XML� BD XML nativas

� Definición y características� Tipos� Productos� Tamino XML Server y X-Hive

� Extensiones de BD para XML

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Requisitos de las BD XML

� Representación de información� Representación detallada (Fine-grained)� Representación tipada (basada en tipos)� Control de versiones (Versioning)

� Acceso a los contenidos� Acceso detallado (Fine-grained): DOM. XQuery, XPath…� Acceso tipado: enteros, listas, objetos…� Actualizaciones detalladas� Estructuras de índices de valores (árboles B), texto y paths (rutas de

acceso)

Page 2: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

2

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Requisitos de las BD XML

� Esquemas de información� Validación de esquemas (evitar documentos no válidos)� Inferencia de representaciones tipadas� nuevos tipos a partir del esquema� Optimización de acceso

� Extensibilidad� Con funcionalidad � funciones y procedimientos� Con estructuras de índices� indización personalizada

� Funcionalidad de los SGBD clásicos � Propiedades ACID: Atomicity, Consistency, Isolation, Durability� Transacciones� Control de concurrencia� Control de acceso� Backup y recuperación

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Soluciones BD XML

� Almacenamiento y Gestión de documentos XML� BD XML nativas

� Extensiones de BD (BDR o BDOO) para XML

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Soluciones BD XML

MapeoAlmacenamiento

estructuradoAlmacenamiento no

estructurado

Monet XMLShimura et al.XML Cartridge

LoreNatixPDOMTIMBER

Investigación

Ozone/XML (OO)dbXMLeXistXindice

Código abierto

Oracle XML DB/Mapeo Estructurado

IBM DB2 XML ExtenderMicrosoft SQLXMLOracle XML DB

eXcelon XISGoXML DBInfonyte-DBTaminoTEXTMLX-Hive/DB

Comercial

Extensiones de BD

BD XML nativas

Page 3: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

3

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

BD XML nativas

� Son bases de datos, y como tales soportan transacciones, acceso multi-usuario, lenguajes de consulta, etc., diseñadas especialmente para almacenar documentos XML

� En una BD XML nativa el aspecto principal de los productos es elalmacenamiento de los documentos XML.

� El término “nativa” se utiliza por los vendedores de los productos comerciales especializados en soluciones de BD XML .� Estrategia de Marketing ���� diferenciar sus soluciones de las extensiones para

XML ofrecidas por los vendedores de SGBD convencionales (BDR, BDOO, …)

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

BD XML nativas

� Características:� Emplean como unidad lógica fundamental de almacenamiento el documento XML

(relacional � tabla)

• Define un modelo (lógico) para un documento XML (para el documento, no para

los datos)

• Almacena y recupera documentos de acuerdo a ese modelo

• Modelos de ejemplo: Xpath, XML Infoset,DOM y los eventos de SAX

� Soportar lenguajes de consulta XML

� Preservar el orden del documento, las instrucciones de procesamiento, los comentarios, las secciones CDATA y las entidades

• Como mínimo, el modelo debe incluir elementos, atributos, manejo de PCDATA y

orden dentro del documento

� No se requiere un modelo subyacente de almacenamiento

• Puede ser una BD relacional, orientada a objetos o jerárquica; o un formato de

almacenamiento propietario

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

BD XML nativas

� Características:� 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 función de la información que contienen, en colecciones que a su vez pueden contener otras colecciones.

� Validación de los documentos

� Consultas

• La mayoría de las BD XML soportan uno o más lenguajes de consulta

• Uno de los más populares es XQuery

� Indexación XML

• Se ha de permitir la creación de índices que aceleren las consultas realizadas

• frecuentemente

� Creación 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

Page 4: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

4

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

BD XML nativas: Tipos

1. Almacenamiento basado en texto (ficheros de texto): Almacena el documento XML entero en forma de texto y proporciona alguna funcionalidad de base de datos para acceder a él.

� Aplican (como mucho) técnicas de compresión para reducir el espacio de almacenamiento

� Mantienen índices adicionales para aumentar la eficiencia en el acceso a la información.

� Pueden definirse sobre BD o sistemas de ficheros:• 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 información

• Posibilidad sofisticada: Almacenar el documento en un almacén adecuado con índices, soporte para transacciones, etc.

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

2. Almacenamiento basado en modelo: � Definen un modelo de datos lógico (como DOM) para la estructura jerárquica

de los documentos XML� Almacenan los documentos de acuerdo con este modelo usando el modelo de

almacenamiento físico que se desee (mapeo a BD relacional, Persistent DOM, etc.):

– 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 almacén creado especialmente para esta finalidad

3. Soluciones desarrolladas específicamente para la gestión de documentos XML.

BD XML nativas: Tipos

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Productos BD XML nativas

� Productos Comerciales� Surgen por la necesidad de gestión eficiente de grandes cantidades de

documentos XML

� Argumentan: “los documentos XML no se pueden almacenar en SGBD convencionales por su naturaleza jerárquica y semi-estructurada”

� Desarrollo de Sistemas especializados:� Tamino de Software AG (2001)

� X-Hive/DB de X-Hive Corp. (2002)

� GoXML DB (XStreamDB) de XML Global Technologies Inc. (2001)

� Infonyte-DB de Infonyte GmbH (2002)

Page 5: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

5

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Productos BD XML nativas

� Productos Comerciales� Vendedores de SGBD OO:Adaptación de sus SGBD a SGBD XML nativas.

� eXcelon XIS de eXcelon Corp. (2001) �ObjectStore

� Vendedores de Sistemas de Gestión de Documentos:

Adaptación de sus sistemas a SGBD XML nativas.� TEXTML de IXIASOFT Inc. (2001)

� Productos de Libre Distribución� Xindice: Apache XML Project

Sucesor de dbXML (dbXML Project)� eXist

Sobre BD relacional: MySQL o PostgresSQL

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Productos BD XML nativas

� Productos de Investigación� Lore: Prototipo para almacenamiento de información semi-estructurada

• Permite representar estructuras de grafos irregulares (incluyendo jerarquías)

• Lenguaje de consulta potente para la gestión de documentos XML (Lorel)

• Primero se insertan los datos y luego se crea un “resumen” (esquema DataGuide)

� Natix

• Gestor de almacenamiento dedicado permitiendo un clustering de árboles y subárboles de documentos XML en registros de disco físico de tamaño limitado de forma flexible y eficiente.

� TIMBER

• Se construye sobre el gestor de almacenamiento multi-propósito Shore.

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Productos BD XML nativas

� Sistema propietario:

Page 6: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

6

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Productos BD XML nativas

� Sistema relacional:

� Sistema orientado a objetos:

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Tamino XML Server

� Formado por 3 capas: servicios de núcleo, servicios de permisos y soluciones (componentes externos)

� Los servicios del núcleo incluyen, entre otros, una BD XML nativa y una BD relacional integrada

� El motor XML utiliza DataMap, que describe donde se almacena el contenido de un documento XML� es posible combinar el contenido XML con datos de diferentes orígenes

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Tamino XML Server

©©Software AGSoftware AG

Page 7: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

7

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

� Ventajas� Muchos interfaces

� Gran variedad de plataformas soportadas

� Herramientas estándar para trabajar con Tamino

� Desventajas� Principalmente para grandes aplicaciones

� Necesidad de entrenamiento específico con las herramientas

Tamino XML Server

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

� X-Hive/DB Developer: X-Hive CorporationURL: http://www.x-hive.com/products/License: Commercial

� X-Hive/DB is a native XML database that includes support for XQuery, XPath, DOM Level 3, XSLT, and XSL-FO, as well transactions, user-and group-level access control, load balancing across multiple servers, and BLOB storage. Additional features include:� Indexes. X-Hive/DB supports structural, content, full-text, and custom indexes.

Full-text indexes use a proprietary indexing mechanism; these indexes can be searched from XQuery through the xhive:fts (full-text search) function. In addition, users can integrate their own full-text index engines. Custom indexes are based on a user-implemented DOM NodeFilter.

� Linking. A link engine that implements XLink and XPointer supports bi-directional links, link-bases, and link management.

X-HIVE/DB

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

X-HIVE/DB

Page 8: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

8

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

� External data. The SQL Loader can retrieve a snapshot of relational data (JDBC)or text files. The data is converted to XML using a table model and can be integrated into other documents.

� WebDAV. Remote clients can directly access collections and documents in the database through WebDAV

� J2EE Resource Adapter. An implementation of J2EE Resource Adapter allows X-Hive/DB applications to use the transaction management facilities of an EJB application server

� Versioning. Both linear and branched versioning (multiple versions of the same document) are supported

� In addition, an implementation of XUpdate (from the XML:DB Initiative) that uses Lexus may be downloaded from the X-Hive Web site.

X-HIVE/DB

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Extensiones de BD para XML

� Diferentes aproximaciones:1. Almacenamiento no estructurado: Almacenamiento del documento XML

directamente en formato de texto en un CLOB (Character Large OBject).

• Lo soportan la mayoría de los SGBD relacionales. Incluyen además funciones para acceder el contenido de los documentos del SQL.

• Oracle XML DB

• IBM DB2 XML Extender

• Microsoft SQLXML

2. Almacenamiento estructurado: un metamodelo detallado de documentos XML capaz de representar árboles de nodos de documentos XML arbitrarios se construye utilizando primitivas de modelado del SGBD convencional que hay por debajo.

• Los contenidos de los documentos XML se pueden consultar utilizando las facilidades proporcionadas por el SGBD.

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Extensiones de BD para XML

� Extensiones de BD de prototipos de investigación para el almacenamiento estructurado de documentos XML (mayoritariamente para SGBD relacionales).

� XML Cartridge � Oracle

� Shimura et. al. � PostgreSQL

� Monet XML � Monet

� Extensiones de BD en proyectos de libre distribución:

� ozone/XML: es una librería para clases persistentes para el SGBD OO ozone que implementa el estándar DOM para la representación de documentos XML en una BD.

Page 9: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

9

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Extensiones de BD para XML

3. Mapeo: el contenido de documentos XML se mapea en esquemas BD específicamente diseñado para este contenido.

� Permite utilizar las capacidades de modelado de los SGBDs convencionales para la representación eficiente y adecuada del contenido de los documentos.

� Existen gran cantidad de herramientas y formalismos para la especificación de el mapeo entre un formato XML y un esquema de BD.

� Mucha investigación respecto a la generación automática de esquemas de bases de datos relacionales a partir de documentos XML y el mapeo automático entre los mismos.

� Oracle XML DB

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Oracle XML DB

� Índice:� Historia

� Almacenamiento

� Generación de XML a partir de SQL

� Consulta de datos XML

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Oracle XML DB

� Historia� Oracle 8 (1997) / 8i (1999):

• Carga de librerías Java para el entorno XDK de Oracle JServer

• Creación de paquetes PL/SQL para XML sobre procedimientos almacenados en Java

� Oracle 9i – Release 1 (2002):

• XMLType Tipo nativo para XML. Permite almacenar y consultar datos XML.

� Oracle 9i – Release 2 (2003):

• Almacenamiento de datos a partir del XMLType basados en un XML Schema

• Repositorio XML DB: para gestión de documentos (enfoque document-centric)

• Nuevas funciones para manejar XMLType, SQL/XML y paquetes basados en C para procesamiento de XML mediante PL/SQL

� Oracle 10g (2005):

• Soporta evolución del XML Schema

• Más funcionalidad XML nativa

• Oracle XDK permite conectar BD a través de ODBC para la creación de aplicaciones de capa intermedia

Page 10: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

10

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Oracle XML DB

� Bases de la gestión XML� Repositorio de datos:

• Organizado jerárquicamente, consultable

• Almacenamiento y visualización de contenido XML como un directorio jerárquico de carpetas

• Acceso a los documentos y representación de las relaciones entre documentos con:

� Xpath� URLs � HTTP/FTP� SQL y PL/SQL

� XMLType• Tipo de datos nativo

• Usado para: definir tablas, columnas, parámetros, valores devueltos por funciones o variables en procedimientos PL/SQL

• Funciones predefinidas: crear instancias XMLType, validar contenidos XML contra XML Schemas, aplicar hojas XSLT…

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Oracle XML DB

� Almacenamiento:

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

¿Tablas relacionales o XMLType?

� Decisión basada en el formato de los datos XML y en la necesidad de conservar fidelidad a nivel DOM para los contenidos XML

� Formato de los datos XML� Data-Centric: tablas relacionales

• Estructura regular de los datos

• Poco contenido o no mezclado

• Fidelidad DOM no requerida

� Document-Centric: XMLType• Estructura de datos poco regular o irregular

• Contenido mezclado

• Muchas consultas sobre el contenido XML

Page 11: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

11

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

¿Basado en esquema o no?

� XMLType NO basado en esquema:� Almacenado en CLOBS (opción por defecto)� Óptimo para documentos XML basados en DTD o en XML Schemas que

varían frecuentemente

� XMLType basado en esquema:� Los documentos XML se “parten” y se almacenan como un conjunto de

objetos SQL (tablas, columnas …)� Óptimo para consultas detalladas� Puede preservar fidelidad DOM� Puede validarse el contenido XML con un XML Schema

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

XMLType: ¿Columna o Tabla?

� Dos formas de almacenamiento basadas en el tipo XMLType� Columnas XMLType

� Tablas de objetos a partir del tipo XMLType

• Crear las tablas utilizando sentencias SQL:

CREATE TABLE … OF XMLType

• Crear las tablas cuando se registra un XML Schema depositado

en el repositorio de Oracle XML DB

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Ejemplos: Almacenamiento con XMLType

� No basado en esquema (como columna en una tabla)

� CREATE TABLE books(isbn VARCHAR(10),

title VARCHAR2(100),

author_details XMLType);

� INSERT INTO books(isbn,title,author_details) VALUES(‘02375', 'XMLDevelopers Kit',

XMLTYPE(‘<Author age=“35”><Name>John Smith</Name>

</Author>'));

� SELECT author_details.extract( ‘/Author/Name/text()').getStringVal() “Name“FROM books;

� UPDATE books SET author_details = XMLType (’<Author age=“40">

<Name>Mark Smith</Name> </Author>’);

Page 12: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

12

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Ejemplos: Almacenamiento con XMLType

� Basado en esquema: la transformación a objetos SQL se realiza durante el proceso de registro del esquema asociado de validación

BEGIN DBMS_XMLSCHEMA.registerURI(

‘http://xmlns.oracle.com/xml/content.xsd’, local=>TRUE, gentypes=>TRUE, gentables=>TRUE, genbeans=>TRUE);

END;

� Se utilizan atributos especiales en la definición de elementos y atributosdel XML Schema (es importante que los valores de estas anotacionesestén en mayúsculas)

� Las anotaciones más usadas son:� xdb:defaultTable – especifica el nombre de la tabla en la que las instancias XML de

este esquema serán almacenadas� xdb:SQLName – especifica el nombre del objeto SQL que se corresponde con el

elemento XML que se está definiendo� xdb:SQLCollType – especifica el nombre de la colección SQL que corresponderá al

elemento SQL que tiene maxOccurs > 1

� xdb:SQLType – especifica el nombre del tipo SQL correspondiente al elemento XML

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Ejemplos: XML Schema

<xsd:schemaxmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xdb="http://xmlns.oracle.com/xdb" xdb:storeVarrayAsTable="true">

<xsd:element name="Customer" type="CustomerType" xdb:defaultTable="CUSTOMER"/>

<xsd:complexType name="CustomerType" xdb:maintainDOM="false"> <xsd:sequence>

<xsd:element name="NAME" type="xsd:string“ xdb:SQLName="NAME“xdb:SQLType="VARCHAR2"/>

<xsd:element name="DESCRIPTION" type="contentType"/></xsd:sequence>

</xsd:complexType>

<xsd:complexType name="contentType" mixed="true" xdb:SQLType="CLOB“xdb:maintainDOM="true">

</xsd:complexType>

</xsd:schema>

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Ejemplo UML-XMLSchema

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xdb="http://xmlns.oracle.com/xdb"

xmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified"attributeFormDefault="unqualified">

<xs:element name="FICHERO_INFO" xdb:SQLType="FICHERO_INFO“xdb:defaultTable="TABLA_FICHERO_INFO">

<xs:complexType><xs:choice>

<xs:element name="FICHERO_INFO_DICOM“type="FICHERO_INFO_DICOM_TYPE" />

<xs:element name="FICHERO_INFO_ANALYZE“type="FICHERO_INFO_ANALYZE_TYPE" />

</xs:choice></xs:complexType>

<xs:complexType name="FICHERO_INFO_DICOM_TYPE“xdb:SQLType="FICHERO_INFO_DICOM_TYPE">

<xs:sequence><xs:element name="ELEMENTO_INFO_DICOM“

type="ELEMENTO_INFO_DICOM_TYPE"minOccurs="0"maxOccurs="unbounded"xdb:defaultTable="TABLA_ELEMENTO_INFO_DICOM"xdb:SQLInline ="false"/>

</xs:sequence></xs:complexType><xs:complexType name="ELEMENTO_INFO_DICOM_TYPE“

xdb:SQLType="ELEMENTO_INFO_DICOM_TYPE"><xs:all>

<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1" /><xs:element name="GroupTag" type="xs:string" minOccurs="0" maxOccurs="1" />

………………………………………………

-Centro_id

-Nombre

-Domicilio

-Teléfono

-Fax

-Email

Centro

-Usuario_id

-Apellido1

-Apellido2

-Nombre

-Password

-Login

Usuario

-Estudio_Id

-Descripción

-Fecha_Inicio

Estudio

1 1..*

Pertenece

1..* 0..*

accede

-Tipo_id

-Descripción

Grupo de control

1

1..*

-Tarea_id

-Descripción

Tarea

11

-Fichero_ID

-Fecha_Upload

Fichero Imagen

1

0..*

1

0..*

1

1..*

Fichero Información

Fichero Info Analyze

1

0..*

-GroupTag

-ElementTag

-VR

-Description

-Value

Elemento Info DICOM

Fichero Info

DICOM

-Description

-Value

Elemento Info Analyze

1

0..*

participa

carga

contiene

analiza

contiene

contiene

genera

Page 13: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

13

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

XMLType basado en esquema

� Definir una columna como XMLType basado en esquema� CREATE TABLE books( isbn VARCHAR(10),

title VARCHAR2(100), author_details XMLType)

XMLType COLUMN author_details XMLSCHEMA "http://xmlns.oracle.com/xml/content.xsd" ELEMENT “Author”;

� INSERT INTO books(isbn, title, author_details)VALUES(‘023595',

‘XML Developer''s Kit’, XMLTYPE('<Author age=“35”>

<Name>John Smith</Name></Author>').CreateSchemaBasedXML('http://xmlns.oracle.com/xml/content.xsd'));

� Definir una tabla a partir de XMLType basado en esquema� CREATE TABLE books_xmltype_tbl OF XMLTYPE

XMLSCHEMA “http://xmlns.oracle.com/xml/content.xsd" ELEMENT “Author";

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

XML en tablas relacionales

� Usado por aplicaciones que requieren un acceso detallado a los datos pero sin necesidad de mantener la estructura jerárquica (‘fidelidad DOM’)

� Herramientas� XSU (XML SQL Utility)

• Carga datos XML: interfaz Java o PL/SQL

• Soporta la conversión XML ↔ Relacional

• “Canonical Mapping”

• Funciones:

httphttp://://www.lc.leidenuniv.nlwww.lc.leidenuniv.nl//awcourseawcourse/oracle//oracle/appdevappdev.920/a96612/.920/a96612/toc.htmtoc.htm

� XSQL Servlet: interfaz para HTTP

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

XML SQL Utility

� “Canonical Mapping”: Normas

� El elemento <ROWSET> es el elemento raíz del documento XML

� Los elementos hijos se llaman <ROW> y se corresponden con las filas de la tabla en la que se almacenarán los datos

� Los nombres de los elementos por debajo de <ROW> se corresponden con los nombres de las columnas de la tabla

� El atributo num de los elementos <ROW> son números que representan el orden de la información a almacenar

Page 14: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

14

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Ejemplo: SQL Utility

� Creación de una tabla relacional:CREATE TABLE employee (NAME VARCHAR2(100), ADDRESS VARCHAR2(200), EMAIL VARCHAR2(200));

� Procedimiento de inserción del documento en la tabla:CREATE OR REPLACE PROCEDURE insertar(xmlDocument IN VARCHAR2, NomTabla IN VARCHAR2) is

insCtx DBMS_XMLSave.ctxType;rows number;Begin

insCtx := DBMS_XMLSave.newContext (NomTabla);rows := DBMS_XMLSave.insertXML(insCtx,xmlDocument); DBMS_XMLSave.closeContext(insCtx);

End;

� Inserción del documento XML en forma canónica:DECLARE

xmlDoc VARCHAR2(3267);

BEGIN

xmlDoc:= ‘<?xml version=“1.0”>

<ROWSET> <ROW num=“1”>

<NAME>John Smith</NAME><ADDRESS>London,Ontario, Canada</ADDRESS> <EMAIL>[email protected]</EMAIL>

</ROW></ROWSET>‘;

insertar (xmlDoc,‘Tabla_XML'); END;

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Generación de datos XML

� El estándar SQL/XML forma parte del estándar ISO/IEC 9075, queespecifica el estándar SQL para las operaciones con datos XML

� Funciones SQL/XML:� XMLELEMENT()

� XMLATTRIBUTES()

� XMLFOREST()

� XMLCONCAT()

� XMLAGG()

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Generación de datos XML

� Funciones que ofrece Oracle (aparte de las estándar)� SYS_XMLGEN() � XMLSEQUENCE() � SYS_XMLAGG() � XMLCOLATTVAL() � UPDATEXML() � XMLTRANSFORM() � EXTRACTVALUE()

� Sintaxis básica para la utilización de las funciones de SQL/XML:� SELECT [XMLELEMENT |XMLATTRIBUTES

|XMLFOREST|XMLCONCAT |XMLAGG|…] FROM nombre_tabla, [tabla (XMLSEQUENCE)] WHERE condiciones_de_busqueda

Page 15: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

15

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Generación de datos XML: ejemplo

� Consulta:SELECT XMLELEMENT("Employee",

XMLATTRIBUTES(emp_id AS "empno"),

XMLELEMENT("Name“,first_name||' '||last_name),

XMLFOREST(EMAIL, PHONE))

FROM employees

WHERE rownum=1;

� Documento XML resultante:

<Employee empno="101" >

<Name>John Smith</Name>

<EMAIL>[email protected]</EMAIL>

<PHONE>519.6701234</PHONE>

</Employee>

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Generación de datos XML: ejemplo

� Consulta:SELECT SYS_XMLGen (

XMLELEMENT(“Employee”,

XMLATTRIBUTE(empno),

XMLELEMENT(“Address”, Address.City ||’ ’||Address.Province))

FROM Employee

WHERE empno=1

� Documento XML resultante:

<?xml version”1.0”>

<Employee empno=“1”>

<address> Mostoles MADRID</address>

</Employee>

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Generación de datos XML

� Existen otras funciones asociadas al tipo XMLType y funcionesSQL/XML para recuperar y crear documentos XML:

XMLType()

createXML()

createSchemaBasedXML()

createNonSchemaBasedXML()

existsNode()

extract()

getClobVal()

getNumberVal()

getStringVal()

isSchemaBased()

getSchemaURL()

getRootElement()

getNamespace()

isSchemaValidate()

isSchemaValid()

schemaValidation()

setSchemaValidate()

Page 16: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

16

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Consulta de datos XML

� Tipos de búsquedas de datos XML� Basadas en XPath: utilizando expresiones XPath� Oracle Text: para búsquedas de texto dentro del contexto de un elemento

� Funciones más utilizadas para búsquedas:� EXISTSNODE(XMLType_instance,XPath_string [, namespace_string ] )

� EXTRACT(XMLType_instance ,XPath_string[ , namespace_string ] )

� EXTRACTVALUE(XMLType_instance, XPath_string [, value_expr] )

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Consulta de datos XML: Ejemplo

� CREATE TABLE books( isbn VARCHAR(10), title VARCHAR2(100),auth_details XMLType);

� INSERT INTO books(isbn,title,author_details) VALUES(‘02375', 'XML Developer‘’s Kit',

XMLTYPE(‘<Author age=“35”><Name>John Smith</Name></Author>'));

� SELECT isbn, title FROM books WHERE EXISTSNODE(auth_details, '//*[contains(.,"John Smith")')>0

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Consulta de datos XML: Ejemplo

� SELECT isbn, title FROM books WHERE EXISTSNODE(auth_details,'/author[@age="35"]')>0;

� SELECT isbn, EXTRACT(auth_details, ‘/Author/Name’) “Name” FROM booksISBN Name2375 <Name>John Smith</Name>

� SELECT EXTRACTVALUE(auth_details,'/Author/text()') FROM books;

(devuelve un VARCHAR2 por defecto, por lo tanto el valor del nodo no puedetener más de 4K; habría que utilizar Extract() para conseguir el nodo en binario y la función de XMLType getClobVal() para extraer el contenido en un CLOB)

Page 17: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

17

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Consulta de datos: Texto

� Se utiliza Oracle Text para buscar aquellos documentos XML que contienen determinadas frases o palabras

� Forma de uso:� Crear un índice de tipo CONTEXT sobre la colección de documentos XML� Utilizar la función CONTAINS() para recuperar el contenido� Ejemplo:

• CREATE INDEX author_idx ON books(auth_details)

INDEXTYPE IS CTXSYS.CONTEXT;

• SELECT title FROM books WHERE CONTAINS(auth_details, ‘John Smith')>0;

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Consulta de datos: Texto

� Es posible combinar CONTAINS() con otros operadores parabúsquedas avanzadas en datos XML:

� WITHIN – busca un término en una sección de texto (elementos y atributos XML)

• ‘palabra WITHIN etiqueta’,

• ‘palabra WITHIN atributo@etiqueta’

� HASPATH, INPATH – permiten consultas XPath

• ‘HASPATH(xpath)’

• ‘HASPATH(xpath=“value”)’

• ‘INPATH(xpath)’

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Consulta de datos: Texto

� Ejemplos:

� SELECT isbn, title FROM books WHERE CONTAINS(auth_details, ‘John INPATH(/Author/Name)')>0;

� SELECT isbn, titleFROM books WHERECONTAINS(auth_details,'HASPATH(/Author[@age=“35”])')>0;

Page 18: [GIJRV-2006-2007]Tema2-Bases de Datos XML - KybeleGIJRV-2006... · Tamino XML Server y X-Hive Extensiones de BD para XML ... (basada en tipos) Control de versiones ... Control de

18

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

BIBLIOGRAFÍA

� Oracle Database 10g XML & SQL—Design, Build & Manage XML Applications in Java, C, C++ & PL/SQLMark V. Scardina, Ben Chang, Jinyu Wang - McGraw-Hill/Osborne

� Oracle 9i – XML Database Developer’s Guide – Oracle XML DB (Release 2)

� XML Data Management: Native XML and XML-Enabled Database SystemsRoberto Zicari - Addison Wesley Professional