[gijrv-2006-2007]tema2-bases de datos...
TRANSCRIPT
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
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