bases de datos xml belen - inicio - kybele · 2007. 11. 15. · convencionales (bdr, bdoo, …) en...

24
1 © 2004 Kybele BDXML-1 Bases de Datos XML Grupo Kybele Universidad Rey Juan Carlos BDXML-2 Soluciones BD XML Almacenamiento y Gestión de documentos XML BD XML nativas Extensiones de BD (BDR o BDOO) para XML (XML-enabled database)

Upload: others

Post on 24-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

1

© 2004 Kybele BDXML-1

Bases de Datos XML

Grupo KybeleUniversidad Rey Juan Carlos

BDXML-2

Soluciones BD XML

� Almacenamiento y Gestión de documentos XML� BD XML nativas � Extensiones de BD (BDR o BDOO) para

XML (XML-enabled database)

Page 2: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

2

BDXML-3

Tipos Documentos XML

� Data-centric document (Máquina)� Los documentos (data-centric) son documentos

que utilizan XML para el transporte de datos.� Se caracterizan por una estructura regular, datos

de grano fino (La unidad independiente de datos más pequeña es el nivel de PCDATA – solo elemento o atributo), y contenido mixto.

� Ejemplos: Datos científicos, Planificaciones de vuelos, Datos de Stock, Órdenes de pedidos, etc.

BDXML-4

� Document-centric document (Humano)� Estos documentos se caracterizan por una

estructura menos regular o irregular.� Por datos de grano mas grande (La unidad

independiente de datos más pequeña puede ser incluso un documento entero)

� Ejemplos: Libros, correos electrónicos, anuncios, etc.

Tipos Documentos XML

Page 3: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

3

BDXML-5

Almacenamiento XML en BD

� Dos maneras de almacenar documentos XML en una BD:

1. Mapear el esquema del documento en un esquema de BD y transferir los datos acorde a ese mapeo. (XML-enabled DB)

2. Utilizar un conjunto de estructuras fijas que nos permiten almacenar cualquier documento XML. (BD Nativas XML)

BDXML-6

� ¿Cómo asociamos Data-centric XML y Document-centric XML con forma de almacenamiento?

1. XML-enabled Database2. BD nativas XML

Datos

Documentos

Almacenamiento XML en BD

Page 4: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

4

BDXML-7

BD Nativas Vs. BD XML-enabled

� XML-enabled Database : Estas BD tienen su propio modelo de datos (relacional, orientadas a objetos) y mapean instancias del modelo de datos XML en instancias de su propio modelo de datos

� Las BD nativas XML utilizan el modelo de datos XML directamente

BDXML-8

� XML-enabled Database : � Requieren tener un modelo previo (modelo entidad-relación)

sobre el cuál, se modela la estructura existente en un tipo de documentos XML en particular.

� Este tipo de bases de datos realizan 2 tipos de procesos : "Shredding " y " Publishing “ (obtener los datos descritos en un documento XML, mapearlos a sus correspondientes" tablas" y posteriormente, tratar de reconstruir el documento XML original a través de la obtención de los datos que se almacenaron en dichas " tablas ".

� No se garantiza la reconstrucción del documento XML original.

Bases de Datos XML-enabled

Page 5: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

5

BDXML-9

� XML-enabled Database (Cont.) : � Útiles cuando queremos publicar datos existentes

como XML o importar datos desde un documento XML en una BD existente.

� No para almacenar documentos XML completos.� Requiere tiempo de diseño para el mapeo de

esquemas.� No puede almacenar documentos cuyo esquema

no es conocido en el tiempo de diseño.

Bases de Datos XML-enabled

BDXML-10

Bases de Datos XML enabled

� XML enabled Database :

Page 6: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

6

BDXML-11

BD XML nativas

� 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, …)

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

� Características:� 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� Como mínimo, el modelo debe incluir elementos, atributos,

manejo de PCDATA y orden dentro del documento

BDXML-12

BD XML nativas

� Características:� Modelos de ejemplo: Xpath, XML Infoset, DOM y los

eventos de SAX� Tiene al documento XML como unidad (lógica)

fundamental de almacenamiento (relacional �tabla)

� Permiten almacenar cualquier tipo de documentos XML (bien formados), sin la necesidad de tener un modelo previo ligado a cada tipo de documentos XML que se quisiera almacenar.

Page 7: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

7

BDXML-13

� Características:� Hacen uso del modelo que propone XML,

el cuál es una estructura en árbol. � Con este modelo es posible almacenar y

posteriormente recuperar el documento XML original.

BD XML Nativas

BDXML-14

� Características:� Representa como " nodos " los elementos,

atributos, instrucciones de procesamiento, comentarios y cualquier otro elemento constituyente de un documento XML.

� Almacenan documentos XML completos.� Cualquier documento XML independiente

del esquema

BD XML Nativas

Page 8: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

8

BDXML-15

BD XML Nativas

� BD nativas XML:

BDXML-16

Extensiones de BD para XML

� Diferentes aproximaciones:

1. Almacenamiento no estructurado:Almacenamiento del documento XML directamente en formato de texto en un CLOB (Character LargeObject).

• 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

Page 9: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

9

BDXML-17

Extensiones de BD para XML

� Ejemplo almacenamiento CLOB:El tipo de datos XMLType de Oracle permite a los usuarios definir en sus tablas columnas que almacenen datos en formato XML.

CREATE TABLE documentos_xml(doc_id NUMBER(2) primary key,autor VARCHAR2(30),contenido SYS.XMLType

);

BDXML-18

Extensiones de BD para XML

� Ejemplo almacenamiento CLOB:Para insertar valores en una columna de tipo

XMLType hay que crear una instancia de dicho tipo. Las instancias XML se pueden generar a partir de un dato de tipo VARCHAR o CLOB utilizando la función createXML().

La cadena de entrada será procesada para comprobar que sus etiquetas XML están bien puestas, aunque no se valida con respecto a ningún DTD.

Page 10: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

10

BDXML-19

Extensiones de BD para XML

� Ejemplo almacenamiento CLOB:

INSERT INTO documentos_xml (doc_id, autor, contenido )VALUES (78, ‘Joan Petit’, sys.XMLType.createXML(

‘<ejemplo ident = “78”><meta>

<autor>Joan Petit</autor><anyo>2002</anyo>

</meta><texto>

<titulo>Mi Ejemplo</titulo><parrafo>Este es mi documento XMLejemplo.</parrafo>

</texto></ejemplo>’)

);

BDXML-20

Extensiones de BD para XML

2. Almacenamiento estructurado: un metamodelodetallado 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.

Page 11: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

11

BDXML-21

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.

BDXML-22

Extensiones de BD para XML

3. Mapeo : el contenido de documentos XML se mapeaen 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 del 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.

Page 12: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

12

BDXML-23

Oracle XML DB

� Historia� Almacenamiento

� Generación de XML a partir de SQL� Consulta de datos XML

BDXML-24

Oracle XML DB

� Historia� Oracle 8i :

• 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:

• XMLType Tipo nativo para XML. Permite almacenar y consultar datos XML.� Oracle 9i – Release 2:

• 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:• 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 13: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

13

BDXML-25

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…

BDXML-26

Oracle XML DB

� Almacenamiento

Page 14: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

14

BDXML-27

¿Tablas relacionales o XMLType?

� Decisión basada en el formato de los datos XML y en la necesidad de conservar fidelidad a nivelDOM 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

BDXML-28

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

Page 15: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

15

BDXML-29

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

BDXML-30

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ónBEGIN

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 atributos del XML Schema (es importante que los valores de estas anotaciones esté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

Page 16: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

16

BDXML-31

Ejemplos: XML Schema

<xsd:schema xmlns: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>

BDXML-32

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 17: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

17

BDXML-33

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";

BDXML-34

XML en tablas relacionales

� Usado por aplicaciones que requieren un acceso detallado a los datos pero sin necesidad de mantener la estructura jerárquica

� Herramientas� XSU (XML SQL Utility)

• Carga datos XML: interfaz Java o PL/SQL• Soporta la conversión XML ↔ Relacional

� XSQL Servlet: interfaz para HTTP

Page 18: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

18

BDXML-35

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 lascolumnas de la tabla

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

BDXML-36

Ejemplo: SQL Utility

CREATE TABLE employee (NAME VARCHAR2(100), ADDRESS VARCHAR2(200), EMAIL VARCHAR2(200));

� El documento XML en forma canónica sería:

<ROWSET> <ROW num=“1”>

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

</ROW></ROWSET>

Page 19: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

19

BDXML-37

Generación de datos XML

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

� Funciones SQL/XML:

� XMLELEMENT()� XMLATTRIBUTES()� XMLFOREST()� XMLCONCAT()� XMLAGG()

BDXML-38

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 20: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

20

BDXML-39

Generación de datos XML: ejemplo

SELECT XMLELEMENT("Employee",XMLATTRIBUTES(emp_id AS "empno"), XMLELEMENT("Name“,first_name||' '||last_name), XMLFOREST(EMAIL, PHONE))

FROM employees WHERE rownum=1;

El documento XML resultante es:

<Employee empno="101" > <Name>John Smith</Name> <EMAIL>[email protected]</EMAIL><PHONE>519.6701234</PHONE>

</Employee>

BDXML-40

Generación de datos XML: ejemplo

SELECT SYS_XMLGen (XMLELEMENT(“Employee”, XMLATTRIBUTE(empno),

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

FROM EmployeeWHERE empno=1

El documento XML resultante es:

<?xml version”1.0”><Employee empno=“1”>

<address> London ON</address></Employee>

Page 21: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

21

BDXML-41

Generación de datos XML

� Existen otras funciones asociadas al tipo XMLType y funciones SQL/XML para recuperar y crear documentosXML:

XMLType()createXML()createSchemaBasedXML()createNonSchemaBasedXML()

existsNode()extract()

getClobVal()getNumberVal()getStringVal()

isSchemaBased()getSchemaURL()getRootElement()getNamespace()

isSchemaValidate()isSchemaValid()schemaValidation()setSchemaValidate()

BDXML-42

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

Page 22: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

22

BDXML-43

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

BDXML-44

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 books

ISBN 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 puede tener 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 23: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

23

BDXML-45

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;

BDXML-46

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

Page 24: Bases de Datos XML Belen - Inicio - Kybele · 2007. 11. 15. · convencionales (BDR, BDOO, …) En una BD XML nativa el aspecto principal de los productos es el almacenamiento de

24

BDXML-47

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;

BDXML-48

BIBLIOGRAFÍA

� Oracle Database 10 g 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