Title: Diapositiva%201
1Mapeo de Estructuras XML a Bases de Datos
Relacionales
Rosa Isela López Aguilar
Septiembre 2008
2XML
Estándar para el intercambio de datos entre
aplicaciones en Internet independientemente del
formato de almacenamiento de los mismos.
3Bases de Datos Relacionales
Se basan en las relaciones (tablas
bidimensionales) como único medio para
representar los datos del mundo real
4Transferencia de Información XML y BDR
- Se han creado complejas teorías y patrones para
encajar objetos o estructuras jerarquizadas en
bases de datos relacionales. - Existen numerosos middlewares encargados de la
transferencia de información entre estructuras
XML y bases de datos relacionales.
Middleware es un software de conectividad que
ofrece un conjunto de servicios que hacen posible
el funcionamiento de aplicaciones distribuidas
sobre plataformas heterogéneas.
5Algunos Middleware Existentes
6Mapeo Basado en Tablas (1)?
Es usado por muchos productos intermedios que
transfieren datos entre un documento XML y una
base de datos relacional. La estructura de un
documento XML debe ser como sigue, donde el
elemento ltdatabasegt y los elementos adicionales
lttablegt.
7ltdatabasegt lttablegt ltrowgt
ltcolumn1gt...lt/column1gt
ltcolumn2gt...lt/column2gt ...
lt/rowgt ltrowgt ...
lt/rowgt ... lt/tablegt lttablegt
... lt/tablegt ...
lt/databasegt
8Schemas XML in Oracle XML DB (1)?
Existen muchos beneficios para almacenar un
Schema XML en un sistema de base de datos,
incluyendo una mejor forma de hacer las
consultas, actualizaciones optimizadas y
validaciones más robustas. Sin embargo el
problema fundamental es Cómo pueden los Schemas
XML ser mapeados a bases de datos relacionales,
sin perder la semántica del schema o la fidelidad
de los datos?
9Schemas XML in Oracle XML DB (2)?
Hablando de fidelidad de almacenamiento para XML
por ejemplo El orden de los elementos es
relevante en muchas aplicaciones, sin embargo el
orden de los elementos en un documento XML quizá
no sea restringido por la declaración, usando
ltallgt dentro del esquema permite a los elementos
aparecer en distinto orden. En un simple mapeo
del XML a una BDR, como muchos de estos elementos
serán sumergidos en un solo registro de una
tabla, el orden de estos elementos no es
rastreado.
10Comparación de un Schema XML y SQL99
11Schemas XML in Oracle XML DB (3)?
Un Schema XML con atributos adicionales definidos
por Oracle XML DB es usado para describir el
almacenamiento mapeado, representaciones en
memoria y el lenguaje que vincula los documentos
XML que conforman al Schema. El proceso de
compilación del Schema XML crea la estructura
correspondiente de almacenamiento
objeto-relacional. A continuación se presenta un
ejemplo del mapeo de un Schema XML
12(No Transcript)
13 La siguiente tabla muestra la estructura de
almacenamientos creada por default en Oracle
14Schemas XML in Oracle XML DB (4)?
El objeto de tipo Item_T, es creado de acuerdo
al Item (local) complexType. Un tipo colección
(varray) Item_COLL es creado porque hay más de
una ocurrencia del Item. El tipo de objeto
PurchaseOrderType_T corresponde al
PurchaseOrder (local) complexType. Los tipos
simples referenciados son mapeados a los tipos de
datos apropiados del SQL, por ejemplo los tipos
primitivos del Schema XML string, decimal y date
son mapeados a tipos SQL VARCHAR2, NUMBER y DATE
respectivamente.
15Schemas XML in Oracle XML DB (5)?
Las restricciones especificadas en el Schema XML,
tal como la longitud máxima de un elemento de
tipo cadena, son preservadas en la definición de
atributos SQL. Por ejemplo Company es definida
como un atributo de tipo VARCHAR2 con una
longitud máxima de 100 carácteres. Se crea una
tabla SQL types para crear las columnas
apropiadas de la tabla.
16Schemas XML in Oracle XML DB (6)?
17Schemas XML in Oracle XML DB (6)?
Además una segunda tabla es creada para mantener
las colecciones de los Items. Un foreing Key es
usado para asociar los registros de Items con su
correspondiente registro padre en
PurchaseOrder.
18Schemas XML in Oracle XML DB (7)?
Cuando un documento XML es insertado dentro de
una tabla XMLType, éste es cortado y los valores
son insertados dentro de las columnas. En el caso
de las colecciones se almacenan en tablas
separadas, de tal forma que uno o más registros
se insertan dentro de las tablas anidadas. La
tabla siguiente muestra la instancia de un
documento con sus valores en un nivel superior,
así como las tablas anidadas.
19(No Transcript)
20(No Transcript)
21Validación de Schemas XML (1)?
- El Schema XML es usado para dos cosas
- Forzar las restricciones del schema.
- La fuente que describe como las instancias de
los documentos XML serán almacenados en la BD's. - Cuando la instancia del documento es insertada
dentro de una tabla conforme al Schema, la
instancia es validada contra éste. Además el
mapeo de la información en el Schema XML es usado
para cortar el documento y almacenar este en las
tablas apropiadas.
22Validación de Schemas XML (2)?
Cuando un Schema XML es registrado en Oracle, se
da un nombre. La instancia del documento se
refiere a su Schema XML usando el atributo
xsiSchemaLocation. El valor de este atributo
consiste de pares de las URL Namespace y las URL
del Schema. La URL del Schema corresponde al
namespace del elemento raíz que identifica el
Schema XML que es usado para validación y para
efectos de cortar el documento.
23Almacenamiento de colecciones (1)?
Cuando el XML es almacenado en un formato
estructurado, todos los elementos simples y los
atributos aparecen como hijos directos del
elemento raíz y son almacenados como columnas en
el elemento raíz. Los elementos complejos y
atributos anidados que pueden ocurrir una vez
(max_Occurs1) son también almacenados como
columnas en el registro raíz.
24Almacenamiento de colecciones (2)?
Una opción de almacenamiento es almacenar la
colección entera en una columna. La otra es
almacenar colecciones en una tabla separada
anidada la cual contenga un registro por Item de
la colección. Los registros de la tabla anidada
contienen la llave del registro padre. Además los
usuarios pueden especificar si necesitan que el
orden de los elementos sea preservado. En caso de
que sea así se le agrega una columna llamada
array_index a la tabla anidada. Esta columna de
tipo NUMBER mantiene el orden original de los
elementos dentro de la colección.
25Almacenamiento de colecciones (1)?
La primera opción antes mencionada es buena por
cuestiones de inserciones. Sin embargo, la
segunda da mayores beneficios porque puedes crear
indices en las tablas anidadas para satisfacer
las consultas de la colección de Items. Además
cuando deseas actualizar la colección esta puede
ser ejecutada sin tener que reescribir la
colección entera con la nueva colección.
26Fidelidad en DOM (1)?
- En general, cualquier técnica que involucre
cortar un documento XML para almacenarlo en una
BDR pierde la fidelidad del documento en - 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 suporta la fidelidad del
documento con respecto a su DOM (Document Object
Model).
27Fidelidad en DOM (2)?
- Para asegurar la fidelidad en DOM se agrega un
atributo binario SYS_XDBPD, para cada objeto
creado. Este atributo almacena (en un formato en
código binario) todas las piezas de información
que no pueden ser almacenadas en cualquiera de
los otros atributos. La información codificada
es - El orden de los elementos
- Comentarios
- Instrucciones de procesamiento
- Declaraciones de Namespaces
- Contenido mixto-nodos texto que son
entremezclados con elementos.
28Schemas XML Complejos? (1)?
- Definiciones Cíclicas
- Un tipo complejo puede ser definido directa o
indirectamente en términos de si mismo. - Tales definiciones cíclicas, donde un elemento
puede contener una referencia hacia atrás a si
mismo, son soportadas por XML DB, introduciendo
un atributo REF (referencia) en el punto donde se
completa el circulo. El valor REF apunta a
fragmentos XML los cuales son almacenados en el
mismo o en diferentes documentos.
29(No Transcript)
30Schemas XML Complejos? (2)?
- Derivaciones complexType Extensión y
Restricción. - Un complexType puede ser declarado como
derivación de otro complexType Global. El
complexType derivado es mapeado como un subtipo
del tipo de objeto correspondiente al complexType
padre. En caso de derivación por extensión, el
subtipo tiene atributos extra correspondientes a
los nuevos elementos y atributos agregados en el
complexType derivado. En caso de la derivación
por restricción, el subtipo esta vacío y las
restricciones son forzadas durante la validación
del Schema.
31(No Transcript)
32(No Transcript)
33Gracias!