Xml en oracle
Historia Almacenamiento Generación de XML a partir de SQL Consulta de datos XML
Marta Zorrilla Universidad de Cantabria
1
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 XMLType Tipo nativo para XML. Permite almacenar y consultar datosXML. Almacenamiento de datos a partir del XMLType basados en un XML Schema Repositorio XML DB: para gestión de documentos (enfoque documentcentric) Nuevas funciones para manejar XMLType, SQL/XML y paquetes basados en C para procesamiento de XML mediante PL/SQL 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 deaplicaciones de capa intermedia
2
Oracle 9i – Release 1 (2002):
› › › ›
Oracle 9i – Release 2 (2003):
Oracle 10g (2005):
› › ›
Almacenamiento
Dos opciones: › Repositorio de datos (Oracle XML DB Repository):
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 lasrelaciones entre documentos con:
XPath URLs HTTP/FTP SQL y PL/SQL
› Tipo de dato nativo (XMLType)
Permite definir tablas, columnas, parámetros, valores devueltos por funciones o variables en procedimientos PL/SQL Dispone de Funciones predefinidas para crear instancias XMLType, validar contenidos XML contra XML Schemas, aplicar hojas de estilos XSLT, etc.
3
Oracle XML DB Architecture: XMLTypeStorage and Repository
4
Oracle XML DB Architecture: XMLType Storage
5
Oracle XML DB Storage
6
¿Tablas relacionales o XMLType?
Decisión basada en el formato de los items XML y en la necesidad de conservar fidelidad a nivel DOM para su contenido FIDELIDAD DOM:
› En general, cualquier técnica que involucre dividir un documento XML para almacenarlo en una BDR pierde la fidelidaddel documento:
Espacios en blanco entre los elementos y atributos. El orden de los elementos. Comentarios dentro del documento XML. Procesamiento de instrucciones. Declaraciones de Namespaces
XML DB de Oracle soporta la fidelidad del documento con respecto a su DOM (Document Object Model).
7
¿Tablas relacionales o XMLType? (y 2)
Formato de los items XML
› Data-Centric: tablasrelacionales
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
8
¿XMLType estructurado (esquema) o no estructurado?
XMLType no estructurado: › Almacenado en CLOBS (opción por defecto) › Óptimo para documentos XML basados enDTD o en XML Schemas que varían frecuentemente XMLType basado en esquema (estructurado): › Los documentos XML se “dividen” y se almacenan como un conjunto de objetos SQL (tablas, columnas, tipos, etc.) › Mayor rendimiento en consultas y actualizaciones (índices, vistas indexadas,…) › Reduce el espacio de memoria y almacenamiento, auque tiene mayor overhead la recuperación o actualización de undocumento completo › Óptimo para consultas sobre partes del documento XML › Puede validarse el contenido XML con un XML Schema
9
XMLType: ¿Columna o Tabla?
En Oracle se puede almacenar datos XML en › Columnas de tipo XMLType
CREATE TABLE MiTabla ( id int primary key,…, xmlCol xmlType)
› Tablas de objetos a partir del tipo XMLType
Crear las tablas utilizando sentencias SQL:
CREATE TABLEMiTablaXML OF XMLType
Crear las tablas cuando se registra un Schema XML registrado en el repositorio de Oracle XML DB
DBMS_XMLSCHEMA.registerSchema( SCHEMAURL => 'http://xmlns.oracle.com/xdb/MiSchema.xsd', SCHEMADOC => bfilename('XMLDIR','MiSchema.xsd'), CSID => nls_charset_id('AL32UTF8'));
10
Columna XMLType
CREATE TABLE Person ( id int primary key, nombre varchar2(20) not null,...
Regístrate para leer el documento completo.