¿cÓmo manejar xml en oracle? - …/voucher> xpath junto al xml, la w3c ha desarrollado otros...

19
¿CÓMO MANEJAR XML EN ORACLE? XML son las siglas de eXtensible Markup Language: lenguaje de marcas extensible, que define un formato de cómo almacenar datos. Las marcas de XML son las etiquetas o tags y es extensible porque permite crear el nombre de las etiquetas adaptadas a las necesidades de cada caso de uso. Uno debe definir sus propias etiquetas: XML es tan solo información envuelta en tags. Veamos un ejemplo de contenido XML. Estos podrían ser los datos que almacena un cine después que tú compras entradas: XML es hoy el estándar más usado en las empresas para intercambiar información de negocio. Se estima que un 40% del presupuesto de IT se gasta en desarrollos de integración. El uso de XML ha demostrado ahorros significativos en los costos y en los plazos de desarrollo cuando se compara con alternativas tradicionales, como el uso de archivos de texto con datos separados por coma (formato CSV). El éxito de este acercamiento es particularmente visible en el crecimiento de la mensajería XML en la arquitectura SOA. El uso de XML llega hasta los documentos de ofimática (Adobe, Open Office, Microsoft Office) que han migrado desde formatos propietarios a formatos estándares basados en XML. Los formatos DOCX, XSLX y PPTX usados por Microsoft Office son ejemplos de esta tendencia (cambien el nombre a un archivo .docx por .zip y ábranlo con Winrar) INTRODUCCIÓN ¿QUÉ ES XML? White Papers Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile +56 2 2330 6767 [email protected] www.inmotion.cl <Voucher codigo="WPHTDF7"> <DatosCliente> <Nombre>José Flores</Nombre> <Email>[email protected]</Email> </DatosCliente> <Pago> <Monto>9200</Monto> <MedioPago>Webpay</MedioPago> <Fecha>2014-10-03T19:49:52</Fecha> </Pago> <DatosCompra> <Cine>Cinemark Alto Las Condes</Cine> <Direccion>Avenida Kennedy 9001, local 3092</Direccion> <Pelicula>La Naranja Mecánica</Pelicula> <Fecha>2014-10-04T23:00:00</Fecha> </DatosCompra> <Entradas sala="8"> <Asiento fila="H">13</Asiento> <Asiento fila="H">12</Asiento> </Entradas> </Voucher>

Upload: vuthuy

Post on 10-Apr-2018

259 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

¿CÓMO MANEJAR XML EN ORACLE?

XML son las siglas de eXtensible Markup Language: lenguaje de marcas extensible, que define un formato de cómo

almacenar datos. Las marcas de XML son las etiquetas o tags y es extensible porque permite crear el nombre de las

etiquetas adaptadas a las necesidades de cada caso de uso.

Uno debe definir sus propias etiquetas: XML es tan solo información envuelta en tags. Veamos un ejemplo de

contenido XML. Estos podrían ser los datos que almacena un cine después que tú compras entradas:

XML es hoy el estándar más usado en las empresas para intercambiar información de negocio.

Se estima que un 40% del presupuesto de IT se gasta en desarrollos de integración. El uso de XML ha demostrado

ahorros significativos en los costos y en los plazos de desarrollo cuando se compara con alternativas tradicionales,

como el uso de archivos de texto con datos separados por coma (formato CSV). El éxito de este acercamiento es

particularmente visible en el crecimiento de la mensajería XML en la arquitectura SOA.

El uso de XML llega hasta los documentos de ofimática (Adobe, Open Office, Microsoft Office) que han migrado desde

formatos propietarios a formatos estándares basados en XML. Los formatos DOCX, XSLX y PPTX usados por Microsoft

Office son ejemplos de esta tendencia (cambien el nombre a un archivo .docx por .zip y ábranlo con Winrar)

INTRODUCCIÓN

¿QUÉ ES XML?

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

<Voucher codigo="WPHTDF7"> <DatosCliente> <Nombre>José Flores</Nombre> <Email>[email protected]</Email> </DatosCliente> <Pago> <Monto>9200</Monto> <MedioPago>Webpay</MedioPago> <Fecha>2014-10-03T19:49:52</Fecha> </Pago> <DatosCompra> <Cine>Cinemark Alto Las Condes</Cine> <Direccion>Avenida Kennedy 9001, local 3092</Direccion> <Pelicula>La Naranja Mecánica</Pelicula> <Fecha>2014-10-04T23:00:00</Fecha> </DatosCompra> <Entradas sala="8"> <Asiento fila="H">13</Asiento> <Asiento fila="H">12</Asiento> </Entradas> </Voucher>

Page 2: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

XPath

Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están:

XPath, XSLT, XML Schema, SOAP y XQuery.

Es la sintaxis estándar para acceder a partes específicas de un documento XML. El formato de una expresión XPath es

similar a las expresiones que se usan para definir la ruta de un archivo dentro de un sistema de archivos.

Por ejemplo, si queremos referirnos al nombre de la película almacenada en el XML de ejemplo, la expresión XPath es:

XPath llegó a ser una recomendación de la W3C el 16 de noviembre de 1999.

El XML es un estándar administrado por la World Wide Web Consortium (W3C), que es la comunidad internacional que

desarrolla los estándares que se usan en la web. El estándar XML es una recomendación de la W3C desde el 10 de

febrero de 1998.

OTROS ESTÁNDARES XML

/Voucher/DatosCompra/Pelicula

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

White Papers

GAP #3

GAP #5

<xs:element name="DatosCompra"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="Cine"/> <xs:element type="xs:string" name="Direccion"/> <xs:element type="xs:string" name="Pelicula"/> <xs:element type="xs:dateTime" name="Fecha"/> </xs:sequence> </xs:complexType></xs:element>

XSLT

Es un lenguaje estándar para especificar cómo transformar un documento XML desde un formato a otro. XSLT se basa

en XPath. Es una recomendación de la W3C desde el 16 de noviembre de 1999.

XML Schema

Es un lenguaje estándar para describir la estructura de un documento XML y sus tipos de datos. Un XML Schema está

escrito a su vez en XML.

Page 3: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

Los XML Schemas son ampliamente usados por las empresas para definir exactamente qué información necesitan

intercambiar y para validar que los datos que están siendo intercambiados cumplen el formato definido.

XML Schema llegó a ser una recomendación de la W3C el 2 de Mayo de 2001.

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

SOAP

Este es otro estándar muy popular entre los desarrolladores de aplicaciones. Provee la infraestructura para la

arquitectura SOA y hace uso extensivo de XML:

- Un webservice (servicio SOAP) se define usando el lenguaje WSDL, basado en XML.

- Para invocar un webservice se envía un documento XML como datos de entrada y se obtiene otro documento XML

como respuesta.

- Para definir la estructura de los documentos se usa un XML Schema.

Incluso, otros estándares de SOA también están basados en XML, como BPEL, poderoso lenguaje de alto nivel para

programar servicios web, estandarizado por OASIS. SOAP es una recomendación de W3C desde el 24 de junio de

2003.

XQuery

Es el lenguaje estándar para extraer información (queries) sobre contenido XML, así como SQL es el lenguaje estándar

para construir queries sobre contenido relacional (tablas).

XQuery es un lenguaje muy poderoso. No solo sirve para hacer queries, también se puede usar para transformar datos

XML o generar nuevo contenido XML. Es una recomendación de la W3C desde el 23 de enero de 2007.

Esta tendencia en el uso de XML ha forzado a las empresas a adoptar plataformas que manejen XML.

Para satisfacer estas necesidades, Oracle desarrolló Oracle XML DB, tecnología de alta performance para almacenar

y manejar XML, que es entregada como parte de todas las versiones de Oracle Database.

El primer release de Oracle XML DB aparece en Oracle 9i el año 2001, aunque en Oracle 8i ya se proveía una API de

XML (1998).

Con Oracle 10g (2004) se incorpora un motor XQuery nativo. Aquí ya pasamos a otro nivel de soporte de XML en

nuestro código PL/SQL.Con Oracle 11g (2007), se agrega el almacenamiento binario de XML, y la creación avanzada

de índices.

ORACLE XML DB

Page 4: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

Ahora, con Oracle 12c (2013), se provee soporte para los nuevos estándares XQuery-Update y XQuery Full-Text.

De esta manera, las empresas pueden usar una misma plataforma para manejar tanto sus datos relacionales (tablas)

como su contenido XML.

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

¿Qué revisaremos en este documento?

2. Cómo ejecutar código XQuery en Oracle

1. XMLType

4. Generar contenido XML desde tablas

3. Cargar contenido XML en la Base de Datos

6. Técnicas de almacenamiento e indexación

5. Generar datos relacionales desde contenido XML

8. Webservices nativos de Oracle XML DB

7. Repositorio XML DB

1. XMLType

Es un tipo de dato especializado para almacenar contenido XML. Se puede usar como una columna en una tabla, como

una variable PL/SQL, como argumento o valor de retorno de un procedure o function, o como una tabla de tipo

XMLType.

¿Por qué no simplemente almacenamos el contenido XML en un tipo de dato texto, como VARCHAR2 o CLOB?

Porque tenemos muchas ventajas, por ejemplo:

XMLType fuerza a que el contenido sea XML.

XMLType permite validación contra un XML Schema.

Tiene opciones de indexación avanzadas.

XMLType tiene diversas posibilidades de almacenamiento en disco que mejoran la performance de nuestras

aplicaciones.

Por ejemplo, para crear una tabla donde almacenemos las entradas de cine en contenido XML:

Page 5: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

2. CÓMO EJECUTAR CÓDIGO XQUERY EN ORACLE

FUNCIÓN XMLQUERY

Esta función es parte del estándar SQL/XML, que a su vez es parte del estándar SQL. El estándar SQL/XML define un

conjunto de operadores (XMLQuery, XMLTable, XMLExists, etc.) que permiten manipular y almacenar contenido XML

en una base de datos SQL. Veamos un ejemplo sencillo. Para el siguiente contenido XML queremos obtener el email:

Esta función es parte del estándar SQL/XML, que a su vez es parte del estándar SQL. El estándar SQL/XML define un

conjunto de operadores (XMLQuery, XMLTable, XMLExists, etc.) que permiten manipular y almacenar contenido XML

en una base de datos SQL. Veamos un ejemplo sencillo. Para el siguiente contenido XML queremos obtener el email:

La query es:

Si los datos los queremos leer desde la tabla ENTRADAS_CINE:

Page 6: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

¿Qué tipo de dato retorna XMLQuery?

Retorna una instancia de XMLType.

XMLSERIALIZE: CONVERTIR EL TIPO XMLTYPE EN TEXTO

Si queremos convertir el tipo de dato XMLType a texto (VARCHAR2, CLOB) existen diversas formas de hacerlo, pero

Oracle recomienda usar la función XMLSerialize, porque es parte del estándar SQL/XML.

Por ejemplo, para transformar los datos XML de nuestra tabla a un VARCHAR2:

FUNCIÓN XMLTABLE

También se puede usar la función XMLTable para ejecutar código XQuery:

Por defecto, la función XMLTable retorna una columna de nombre COLUMN_VALUE.

Page 7: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

¿Qué es fn:collection?

Es una función de XQuery que retorna una colección de XML.

¿Qué es oradb:?

Es el servicio de la BD Oracle que permite ver los datos de cualquier tabla como XML. Este servicio también se puede

acceder desde un browser. Por ejemplo, si queremos ver el contenido de la tabla CUSTOMERS del esquema OE en

formato XML, escribimos la siguiente URL:

http://localhost:8081/oradb/OE/CUSTOMERS

Page 8: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

FILTRAR DATOS CON XMLEXISTS

Esta función también es parte del estándar SQL/XML. Se usa en el WHERE para filtrar datos que están en el contenido

XML. Por ejemplo, si queremos traer los emails solo de los clientes que usaron el medio de pago Webpay:

Oracle transforma automáticamente el texto a tipo XMLType. Si el contenido del texto no es un XML válido, la fila no

será insertada: ORA-31011: Fallo en el análisis de XML.

El contenido del archivo voucher_WPHTDF7.xml ahora está en la tabla. Si se desea se puede borrar el archivo.

INSERTAR TEXTO XML EN UNA COLUMNA XMLTYPE

INSERTAR EL CONTENIDO DE UN ARCHIVO XML

3. CARGAR CONTENIDO XML EN LA BASE DE DATOS

Page 9: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

3. CARGAR CONTENIDO XML EN LA BASE DE DATOSLa manera más fácil de generar contenido XML desde tablas es usando el estándar SQL/XML. Las funciones más

importantes para esto son XMLElement, XMLAttributes, XMLAgg, XMLForest.

El siguiente ejemplo usa las tablas DEPARTMENTS y EMPLOYEES del esquema HR (datos de ejemplo que vienen al

instalar la BD):

Esta query retorna una fila por cada departamento (fijarse en el uso de un SELECT anidado). Para el departamento 20

se muestra el siguiente XML:

Con la función XMLQuery también podemos generar contenido XML tan complejo como queramos, pero para

conseguirlo tenemos que primero aprender a programar en XQuery.

La ventaja de usar las funciones de SQL/XML es que podemos crear sofisticados documentos XML usando simplemente

la instrucción SELECT.

Page 10: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

5. GENERAR DATOS RELACIONALES DESDE CONTENIDO XMLUsamos la función XMLTable, pero ahora le agregamos la cláusula COLUMNS, donde especificamos cómo mapear

datos XML en datos relacionales.

Primero veamos un ejemplo sencillo. Queremos obtener una query que despliegue en formato de filas-columnas los

datos: Nombre Cliente, Nombre Cine, Película:

El formato de la cláusula COLUMNS es:

Dado lo poderosa que es la función XMLTable, vale la pena revisar otra query un poco más compleja. Por ejemplo, ahora

queremos obtener el detalle de los asientos usados por cada sala de cine.

Page 11: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

En este caso fue necesario usar dos veces la función XMLTable: la primera vez para los datos de cabecera (la sala) y

la segunda vez para los datos del detalle (los asientos). Podríamos crear una vista a partir del SELECT anterior

(OCUPACION_ASIENTOS_VIEW) y usar esa vista dentro de una query con joins a otras tablas, hacer group by, etc.

Por ejemplo, para mostrar la cantidad de entradas vendidas por fila para la sala 8:

Page 12: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

6. TÉCNICAS DE ALMACENAMIENTO E INDEXACIÓN

El contenido XML es almacenado en la BD usando el tipo de dato abstracto XMLType. Este tipo de dato soporta tres

modelos de almacenamiento físico: binario, estructurado y no estructurado. Debido a que el uso de XML es muy amplio

no existe un único modelo de almacenamiento que ofrezca la mejor performance y flexibilidad para cada caso de uso.

Se debe tener claro que el código de nuestras aplicaciones es completamente independiente de la forma en la que el

XML es almacenado en el disco. Podemos cambiar el modelo de almacenamiento de nuestros XMLType, pero el código

de la aplicación no necesita ser modificado. Además, podemos crear índices para las columnas de tipo XMLType para

mejorar la performance de nuestras expresiones XQuery.

Es un formato binario especialmente diseñado para datos XML, que aparece en Oracle 11g. Es una optimización que

reduce el uso de memoria, espacio en disco y CPU. Si queremos que nuestra tabla ENTRADAS_CINE almacene su

contenido de manera binaria (y no como texto), simplemente se ejecuta:

ALMACENAMIENTO BINARIO

Page 13: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

El almacenamiento binario se usa principalmente para datos XML no estructurados, por ejemplo, documentos web, en

los cuales grandes porciones del contenido no están bien definidas.

Los índices estándares de base de datos (B-Tree, Bitmap) no son muy útiles para el almacenamiento binario. Por ello,

Oracle creó un tipo de índice específico para contenido XML: los índices XMLIndex, que indexan la estructura interna

del XML.

Una de las ventajas de XMLIndex es que es muy general: no se necesita tener conocimiento previo de las expresiones

XPath que serán usadas en las queries. Para crear un índice XMLIndex en nuestra tabla:

XMLIndex

En este caso, los datos del XML son almacenados relacionalmente como un conjunto de objetos SQL en la Base de

Datos. Podemos decir que es una descomposición entidad-relación de los datos del XML.

Estos objetos SQL se generan a través de un XML Schema. Se debe registrar previamente el schema en la base de

datos usando el procedure DBMS_XMLSCHEMA.registerSchema.

Este modelo de almacenamiento es aconsejable para datos altamente estructurados y que estén basados en XML

Schemas que siguen un modelo entidad-relación, por ejemplo, los registros de un empleado. En estos casos el

almacenamiento estructurado provee la mejor performance, en comparación con el almacenamiento binario y es

extremadamente eficiente en el espacio en disco.

Para el almacenamiento estructurado el indexado de las columnas XMLType se realiza vía índices B-Tree e índices

Bitmap.

Si queremos que la tabla ENTRADAS_CINE almacene su contenido de manera estructurada:

ALMACENAMIENTO ESTRUCTURADO

Page 14: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

En este modelo los datos XML se almacenan simplemente como texto, en un CLOB. Está deprecado en Oracle 12cR1

porque es ineficiente. Consume mucho espacio en disco. Cuando se actualiza una parte del documento, el documento

entero debe ser re-escrito al disco.

Si una empresa ya está usando XML como CLOB, debería considerar mover sus datos al formato XML binario. Si no es

posible la migración, se debe considerar indexar con XMLIndex para mejorar la performance de las queries.

ALMACENAMIENTO ESTRUCTURADO

7. REPOSITORIO XML DB

El modelo relacional tabla-fila-columna es un mecanismo efectivo para manejar datos estructurados, sin embargo, no

es tan efectivo para manejar datos semi-estructurados o no estructurados.

Por ejemplo, un libro no es fácilmente representado como un conjunto de filas en una tabla. Es más natural representar

un libro como una jerarquía libro/capítulo/sección/párrafo y representar esa jerarquía como un conjunto de

directorios/subdirectorios/archivos en un filesystem.

Por esta razón, Oracle creó el Repositorio XML DB. Este repositorio es una componente que viene en la instalación de

la BD, que organiza su contenido como archivos en directorios. Podríamos decir que el repositorio es como un

filesystem jerárquico almacenado dentro de la misma BD Oracle.

Aunque está pensado para manejar contenido XML, también se puede usar para contenido no XML.

Page 15: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

El repositorio puede ser manipulado directamente desde SQL, usando las vistas RESOURCE_VIEW, PATH_VIEW y el

package DBMS_XDB.

Usando XQuery, también podemos manejar los archivos del repositorio con las funciones fn:doc y fn:collection. Por

ejemplo:

CÓMO MANEJAR EL CONTENIDO DEL REPOSITORIO

La ruta /public/contact/xml es válida dentro del repositorio, no en el servidor de la BD.

También se puede acceder al repositorio usando protocolos estándares de Internet: HTTP, HTTPS, FTP y WebDav.

Gracias al soporte de estos protocolos, Windows Explorer, Microsoft Office y otros productos (Adobe, Macromedia,

etc.), pueden trabajar directamente con contenido XML almacenado en el repositorio.

Esto significa que, por ejemplo, podemos acceder al repositorio desde Windows, como una conexión de red más,

gracias al soporte WebDav:

Page 16: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

El repositorio tiene funcionalidades muy interesantes, dentro de las que podemos mencionar:

CARACTERÍSTICAS DEL REPOSITORIO XML DB

Hace uso de Listas de Control de Acceso (ACL). Las ACL son un mecanismo de seguridad estándar que es usado en

algunos lenguajes como Java y en sistemas operativos como Microsoft Windows. En el Repositorio XML DB se puede

definir el control de acceso a cada archivo por separado, vía comandos GRANT/REVOKE.

Seguridad

Se puede gatillar código PL/SQL o Java cuando ocurran operaciones sobre archivos o directorios del repositorio. Es

equivalente a los triggers de BD que hacen posible reaccionar a operaciones sobre las tablas.

Modelo de Eventos

Se pueden manejar versiones de los documentos almacenados en el repositorio, vía comandos chek-in, check-out,

usando el package

Versionamiento

También se pueden crear índices de tipo XMLIndex sobre los recursos del repositorio. Para esto se usa el package

DBMS_XDB_ADMIN.

Indexación

Un usuario puede estar viendo un archivo XML en un directorio, pero el contenido del archivo todavía no existe: cuando

el usuario trate de accederal archivo se generarán los datos.

El usuario no se entera que "por debajo" se ejecutó un SELECT, él solo ve que abrió un archivo del repositorio.

Los documentos virtuales están basados en vistas de tipo XMLType, las que permiten que el contenido de una columna,

pueda ser expuesto como un archivo virtual en el repositorio.

Por ejemplo, podemos crear archivos virtuales para los datos XML que tenemos almacenados en la tabla

ENTRADAS_CINE:DBMS_XDB_VERSION.

Documentos virtuales

Page 17: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

Esta característica de Oracle XML DB permite publicar packages PL/SQL como webservices. Esto significa que

cualquier function o procedure de un package se puede ejecutar de forma transparente en un entorno SOA.

Estos webservices hacen uso del HTTP Server que ya viene instalado en la BD Oracle. No es necesario ninguna

infraestructura adicional como WebLogic o SOA Suite.

8. WEBSERVICES NATIVOS DE ORACLE XML DB

Si se fijan, el tamaño de los archivos que se muestra es de 0 KB. Pero eso es así porque son archivos virtuales.

Page 18: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

CONCLUSIONES

Oracle XML DB provee toda la funcionalidad y la performance requerida para manejar el contenido XML de una

empresa:

XMLType: para almacenar, indexar y acceder a contenido XML en la BD Oracle.

Soporta todos los estándares XML como XQuery, XML Schema, XSLT, etc.

Soporta el estándar SQL/XML: para generar datos relacionales como contenido XML y acceder a contenido XML.

Repositorio XML DB: para administrar contenido XML organizado como directorios-archivos.

Por lo tanto, si necesitamos manejar contenido XML en nuestra BD no tenemos que pensar en programar servicios

externos a la BD en Java, o C# para que nos ayuden en el procesamiento de XML. Usando SQL o PL/SQL es posible

alcanzar todos los objetivos de manipulación de datos XML sin tener que usar una interfaz externa de programación.

Page 19: ¿CÓMO MANEJAR XML EN ORACLE? - …/Voucher> XPath Junto al XML, la W3C ha desarrollado otros estándares que hacen a XML lo poderoso que es hoy día. Entre ellos están: XPath, XSLT,

White Papers

Avda. Apoquindo 4499, Piso 11° Las Condes - Santiago - Chile • +56 2 2330 6767 • [email protected] • www.inmotion.cl

REFERENCIAS

Mark D. Drake. An Introduction to Oracle XML DB in Oracle Database 12c. 2012.

Mark D. Drake. Oracle XML DB in Oracle Database 12c. Junio 2013.

Oracle XML DB Team. Oracle XML DB: Best Practices to Get Optimal Performance out of XML Queries. Junio 2013.

Geeta Arora, Sriram Krishnamurthy. Oracle XML DB: Choosing the Best XMLType Storage Option for Your Use Case.

Octubre 2013.

Sivasankaran Chandrasekar, Mark Drake. Managing XML Content with XML DB: Getting the Best Bang for the Buck.

2010.

Geoff Lee. Oracle Database 11g XML DB Technical Overview. Julio 2007.

Jinyu Wang. Oracle Database 11g Building Oracle XML DB Applications. Julio 2011.

W3Schools. http://www.w3schools.com