[GIJRV-2006-2007]Tema2-Bases de Datos...

18
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)

Transcript of [GIJRV-2006-2007]Tema2-Bases de Datos...

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)

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

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

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)

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:

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

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

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.

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

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

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>’);

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

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

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

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()

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)

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;

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