ALMACENES DE DATOS BASES DE DATOS XML - Grupo Alarcos
ALMACENES DE DATOS BASES DE DATOS XML - Grupo Alarcos
ALMACENES DE DATOS BASES DE DATOS XML - Grupo Alarcos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>ALMACENES</strong> <strong>DE</strong> <strong>DATOS</strong><br />
<strong>BASES</strong> <strong>DE</strong> <strong>DATOS</strong> <strong>XML</strong><br />
García Pérez, Guillermo<br />
Lucas-Torres Torrillas, Fco. José<br />
Navarro Gil, Sergio<br />
Román Birriales, Esther<br />
índice<br />
1. <strong>ALMACENES</strong> <strong>DE</strong> <strong>DATOS</strong><br />
1.1 Introducción<br />
1.2 Arquitectura<br />
1.3 Mercados de Datos<br />
1.4 Flujos de Datos<br />
1.5 Ventajas e Inconvenientes<br />
1.6 Ejemplo: Entorno Oracle 9i olap<br />
2. <strong>BASES</strong> <strong>DE</strong> <strong>DATOS</strong> <strong>XML</strong><br />
2.1 Introducción<br />
2.2 Lenguajes de Definición de Datos <strong>XML</strong><br />
2.3 Almacenamiento de Datos <strong>XML</strong><br />
2.4 Ajemplo: Entorno XQuery<br />
3. COMPARATIVA<br />
4. BIBLIOGRAFÍA<br />
Modelos Avanzados de Bases de Datos<br />
2
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
¿Para qué se utilizan?<br />
Ejemplo:<br />
Oracle 9i olap 3<br />
Cubrir las necesidades a las organizaciones con<br />
el fin de obtener un sistema de soporte para la<br />
gestión, control y apoyo de la toma de<br />
decisiones de una organización.<br />
Introducción Arquitectura<br />
VENTAJA COMPETITIVA<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
Ejemplo:<br />
Oracle 9i olap 4<br />
Hill Inmon, considerado “El Padre de los Almacenes de<br />
Datos” los define como:<br />
• Clasificados por temas: Los datos están organizados de<br />
manera que todos los elementos de datos relativos al<br />
mismo evento u objeto del mundo real queden unidos<br />
entre sí.<br />
Ejemplo:<br />
Temas de la organización -> Clientes, Productos, Ventas …<br />
Áreas de aplicación -> Facturación, Control de Almacén …
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
Ejemplo:<br />
Oracle 9i olap 5<br />
• Integrados: Contienen datos de todos los<br />
sistemas operacionales de la organización.<br />
Introducción Arquitectura<br />
Los datos suelen ser incoherentes<br />
Vista unificada de los datos al usuario<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
Ejemplo:<br />
Oracle 9i olap 6<br />
• Variables en el tiempo: los cambios producidos<br />
en los datos a lo largo del tiempo quedan<br />
registrados para que los informes que se puedan<br />
generar reflejen esas variaciones.
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
Ejemplo:<br />
Oracle 9i olap 7<br />
• No Volátil: Los datos no se modifican ni se<br />
elimina, una vez almacenado un dato, éste se<br />
convierte en información de solo lectura.<br />
Se mantiene para futuras consultas, en lugar de<br />
sustituir la información ya existente.<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
• OBJETIVO<br />
Ejemplo:<br />
Oracle 9i olap 8<br />
Integrar todos los datos en un único almacén en el<br />
cual los usuarios puedan ejecutar:<br />
– Consultas<br />
– Generación de informes y<br />
– Realizar Análisis de los datos
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Almacenes de Datos<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Repositorio de Datos<br />
• Se encuentran los datos primitivos.<br />
• Suministrar datos al sistema.<br />
• Los datos operacionales pueden<br />
ser:<br />
– Precedentes de sistemas<br />
mainframe<br />
– Datos de estaciones de trabajo<br />
o servidores privados.<br />
– Sistemas externos (proveedores,<br />
clientes,… )<br />
– Datos departamentales<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 9<br />
Ejemplo:<br />
Oracle 9i olap 10
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Gestor de Carga<br />
Ventajas e<br />
Inconvenientes<br />
• Encargado de la extracción y carga de<br />
los datos del repositorio de datos<br />
• Realiza transformaciones simples a los<br />
datos<br />
Adaptarlos a las necesidades del<br />
almacén<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 11<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
Fuente de datos<br />
n<br />
Gestor del Almacén de<br />
datos<br />
• Realiza las operaciones de la gestión de<br />
los datos<br />
• Utiliza Herramientas:<br />
<strong>DATOS</strong><br />
-Tablas<br />
-Índices<br />
-Vistas<br />
-Copias de seguridad y<br />
-Archivado de datos<br />
Fuente de datos 1<br />
1<br />
Fuente de datos 2<br />
Fuente de datos 3<br />
Fuente de datos<br />
Fuente de datos n<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 12<br />
Gestor de<br />
Carga<br />
Datos muy<br />
resumidos<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta 1<br />
Herramienta 2<br />
Herramienta n<br />
Garantizar la coherencia de los datos
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Tipos de Datos:<br />
Detallados<br />
• Se accede mediante<br />
agregaciones con menor nivel de<br />
detalle.<br />
• Ocupando mucho espacio<br />
• Se almacenan en disco, para<br />
facilitar el acceso<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Poco resumidos y muy<br />
resumidos<br />
• Acelerar las consultas<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
• Es transitorio, con fin de responder a<br />
las variaciones de las consultas<br />
• POCO RESUMIDOS<br />
1er nivel de agregación<br />
• MUY RESUMIDOS<br />
Nivel más alto de agregación<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 13<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 14<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Datos de Archivo /<br />
Copia de Seguridad<br />
• Donde se guardan los datos<br />
detallados y resumidos para crear<br />
copias de seguridad y archivos de<br />
datos<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Metadatos<br />
Flujos de<br />
Datos<br />
• Describen la estructura de los<br />
datos<br />
• Se utilizan para:<br />
– Mapear las fuentes de datos<br />
– Automatizar la producción de<br />
tablas<br />
– Dirigir una consulta a la fuente de<br />
datos<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ventajas e<br />
Inconvenientes<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 15<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 16<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Sistema Gestor de Bases<br />
de Datos (SGBD)<br />
• Características:<br />
– Buena velocidad de carga<br />
– Procesamiento de carga<br />
– Gestión de la calidad de los datos<br />
– Velocidad de las consultas<br />
– Escalabilidad en el nº de usuarios<br />
– Administración del almacén<br />
– Análisis dimensional integrado<br />
– La funcionalidad avanzada de<br />
consultas<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ventajas e<br />
Inconvenientes<br />
Gestor de Consultas<br />
• Encargado de gestionar las operaciones<br />
asociadas a las consultas que realizan<br />
los usuarios.<br />
• Su complejidad depende de la<br />
funcionalidad de la BBDD y las<br />
herramientas de acceso de usuarios<br />
– Dirige las consultas a las tablas<br />
apropiadas<br />
– Planificar su ejecución<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 17<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 18<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Herramientas de Acceso<br />
para Usuario<br />
• Herramientas específicas para la<br />
toma de decisiones estratégicas<br />
• Tipos:<br />
– Herramientas de consulta y<br />
generación de informes<br />
– Herramientas de desarrollo de<br />
aplicaciones<br />
– Sistemas de información<br />
ejecutiva<br />
– Herramientas de Procesamiento<br />
analítico en línea (OLAP)<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Fuente de datos<br />
1 1<br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ventajas e<br />
Inconvenientes<br />
Mercados de Datos<br />
Ejemplo:<br />
Oracle 9i olap 19<br />
Datos muy<br />
resumidos<br />
Gestor<br />
de<br />
Carga<br />
Metadatos<br />
Gestor del<br />
Almacén de Datos<br />
Datos Detallados<br />
Datos poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de Seguridad<br />
Gestor<br />
de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta<br />
2<br />
Herramienta<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 20<br />
• Subconjunto de datos de un almacén relativos a<br />
los requisitos de un departamento o área de<br />
negocio concretos<br />
• Puede funcionar de forma autónoma o enlazado<br />
al almacén de datos<br />
Diferencia con los Almacenes de datos:<br />
• No contiene datos operacionales detallados<br />
• Más sencillos de utilizar y comprender
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Flujos de Datos<br />
• ENTRADA: Extracción y carga<br />
• ASCEN<strong>DE</strong>NTE: Resumen,<br />
empaquetamiento y distribución<br />
• <strong>DE</strong>SCEN<strong>DE</strong>NTE: Archivado y<br />
creación de copias de seguridad<br />
• SALIDA: Disponibilidad de los<br />
datos a los usuarios<br />
• METAFLUJO: Transferencia de los<br />
metadatos<br />
Introducción Arquitectura<br />
Ventajas e<br />
Inconvenientes<br />
REPOSITORIO <strong>DE</strong><br />
<strong>DATOS</strong><br />
Fuente de datos<br />
2<br />
Fuente de datos<br />
3<br />
Fuente de datos<br />
n<br />
Ejemplo:<br />
Oracle 9i olap 21<br />
Fuente de datos<br />
1<br />
Flujo Entrada<br />
Datos muy<br />
resumidos<br />
Gestor de<br />
Carga<br />
Ventajas e Inconvenientes<br />
• Retorno de la inversión es<br />
garantizado<br />
•Ventaja competitiva<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Metaflujo<br />
Metadato<br />
s<br />
Flujo Descendente<br />
Gestor del<br />
Almacén de Datos<br />
Datos<br />
Detallados<br />
Datos<br />
poco<br />
resumidos<br />
SGBD<br />
Datos de Archivo/<br />
Copia de<br />
Seguridad<br />
Flujo Salida<br />
Gestor de<br />
Consultas<br />
HERRAMIENTAS <strong>DE</strong><br />
ACCESO PARA USUARIOS<br />
FINALES<br />
Herramienta<br />
1<br />
Herramienta 2<br />
Herramienta n<br />
Ejemplo:<br />
Oracle 9i olap 22<br />
VENTAJAS INCONVENIENTES<br />
•Ayudan a los responsables en la toma de<br />
decisiones:<br />
‒ Fácil el acceso a una gran variedad<br />
de datos<br />
‒ Base de datos clasificada por temas<br />
e histórica<br />
‒ Integración de información de<br />
sistemas externos<br />
•Subestimación del tiempo requerido para<br />
extraer, limpiar y cargar los datos<br />
•Problemas con los sistemas de origen de<br />
los datos<br />
•Los datos obtenidos no son suficientes<br />
•Supone muchos gastos de mantenimiento
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Utilidades Almacenes de<br />
Datos<br />
Ejemplo:<br />
Oracle 9i olap 23<br />
• Disponibilidad de información relevante.<br />
• Datos históricos.<br />
• Inconsistencias en la interpretación de los<br />
datos.<br />
• Obtener información de dos sistemas<br />
distintos.<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Dimensional<br />
vs<br />
Entidad-Relacional<br />
Ejemplo:<br />
Oracle 9i olap 24
Introducción Arquitectura<br />
Fact Table<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
• En ella se guardan todos los datos<br />
detallados.<br />
• Crece rápidamente.<br />
Ejemplo:<br />
Oracle 9i olap 25<br />
• Es la tabla más grande del almacén de<br />
datos.<br />
• Se puede elegir el nivel de detalle que<br />
representará. (Granularidad)<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Dimension Table<br />
Flujos de<br />
Datos<br />
• Puede haber muchas.<br />
Ventajas e<br />
Inconvenientes<br />
• Tabla referencia de la Fact Table.<br />
• Guarda los datos estáticos.<br />
• Menos filas que en la Fact Table.<br />
Ejemplo:<br />
Oracle 9i olap 26<br />
• Cómo mínimo cuatro y cómo máximo 20.
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Normalización<br />
Introducción Arquitectura<br />
Ejemplo<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 27<br />
Ejemplo:<br />
Oracle 9i olap 28
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Índice B*Tree<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 29<br />
• Estructuras jerárquicas que permiten búsquedas<br />
rápidas para obtener la dirección de una fila.<br />
• Punteros a filas (RowIds).<br />
• Dos tipos: Unique y Non-Unique.<br />
ALTER IN<strong>DE</strong>X customer_gender_index UNUSABLE;<br />
INSERT /*+ APPEND */ INTO customers ... COMMIT;<br />
ALTER IN<strong>DE</strong>X customer_gender_index REBUILD;<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Índice Bitmap<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 30<br />
• Resolver consultas sobre columnas con<br />
cardinalidad pequeña.<br />
• Potencialmente muchas filas para cada valor.<br />
• El bit es uno si la columna en cuestión de la fila<br />
contiene ese valor.<br />
CREATE BITMAP IN<strong>DE</strong>X<br />
easydw.customer_gender_index<br />
ON customer(sex)
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Índice Bitmap<br />
Introducción Arquitectura<br />
Bitmap Join<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 31<br />
Ejemplo:<br />
Oracle 9i olap 32<br />
• Índice del Resultado de unir una fact table y una o<br />
más dimension tables.
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Bitmap Join<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 33<br />
CREATE BITMAP IN<strong>DE</strong>X easydw.purchase_cust_index<br />
ON purchases (customer.sex)<br />
FROM purchases, customer<br />
WHERE purchases.customer_id = customer.customer_id;<br />
Introducción Arquitectura<br />
Particiones<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 34<br />
• Las tablas y los índices demasiado grandes se<br />
pueden dividir en particiones más pequeñas y<br />
manejables.<br />
• Optimización de consultas.<br />
• Selección de columna para la partición,<br />
normalmente el tiempo: partition_key
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Partición por rango<br />
CREATE TABLE easydw.purchases<br />
(columns)<br />
PARTITION by RANGE (time_key)<br />
(partition purchases_jan2002<br />
values less than (TO_DATE('01‐02‐2002', 'DD‐MM‐<br />
YYYY'))<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 64k pctincrease 0)<br />
tablespace purchases_jan2002,<br />
partition purchases_feb2002<br />
values less than (TO_DATE('01‐03‐2002', 'DD‐MM‐<br />
YYYY'))<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 64k pctincrease 0)<br />
tablespace purchases_feb2002,<br />
partition purchases_mar2002<br />
values less than (TO_DATE('01‐04‐2002', 'DD‐MM‐<br />
YYYY'))<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 64k pctincrease 0)<br />
tablespace purchases_mar2002,<br />
partition purchase_catchall<br />
values less than (MAXVALUE)<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 64k pctincrease 0)<br />
tablespace purchases_maxvalue);<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Partición Hash<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 35<br />
Ejemplo:<br />
Oracle 9i olap 36<br />
CREATE TABLE easydw.purchases<br />
(product_id varchar2(8),<br />
time_key date,<br />
customer_id varchar2(10),<br />
purchase_date date,<br />
purchase_time number(4,0),<br />
purchase_price number(6,2),<br />
shipping_charge number(5,2),<br />
today_special_offer<br />
varchar2(1))<br />
PARTITION BY<br />
HASH(product_id)<br />
PARTITIONS 3;
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Partición List<br />
Flujos de<br />
Datos<br />
CREATE TABLE easydw.regional_sales<br />
(state varchar2(2),<br />
store_number number,<br />
dept_number number,<br />
dept_name varchar2(10),<br />
sales_amount number (6,2) )<br />
PARTITION BY LIST(state)<br />
(<br />
PARTITION northeast VALUES ('NH', 'VT', 'MA',<br />
'RI', 'CT'),<br />
PARTITION southeast VALUES ('NC', 'GA', 'FL'),<br />
PARTITION northwest VALUES ('WA', 'OR'),<br />
PARTITION midwest VALUES ('IL', 'WI', 'OH'),<br />
PARTITION west VALUES ('CA', 'NV', 'AZ'),<br />
PARTITION otherstates VALUES (<strong>DE</strong>FAULT));<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Partición Composite<br />
PARTITION by RANGE (time_key) SUBPARTITION BY<br />
HASH(product_id) SUBPARTITIONS 3 (<br />
partition purchases_jan2002<br />
values less than (TO_DATE('01‐02‐2002', 'DD‐MM‐YYYY'))<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 16k pctincrease 0)<br />
STORE IN (purchases_jan2002, purchases_jan2002_2,<br />
purchases_jan2002_3),<br />
partition purchases_feb2002<br />
values less than (TO_DATE('01‐03‐2002', 'DD‐MM‐YYYY'))<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 16k pctincrease 0)<br />
STORE IN (purchases_feb2002, purchases_feb2002_2,<br />
purchases_feb2002_3),<br />
partition purchases_mar2002<br />
values less than (TO_DATE('01‐04‐2002', 'DD‐MM‐YYYY'))<br />
pctfree 0 pctused 99<br />
storage (initial 64k next 16k pctincrease 0)<br />
STORE IN (purchases_mar2002, purchases_mar2002_2,<br />
purchases_mar2002_3));<br />
Ventajas e<br />
Inconvenientes<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 37<br />
Ejemplo:<br />
Oracle 9i olap 38
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Funciones SQL: Agregación<br />
Ejemplo:<br />
Oracle 9i olap 39<br />
CUBE: Construye todas las posibles combinaciones de las<br />
columnas especificadas en la sección GROUP BY<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Funciones SQL: Agregación<br />
Ejemplo:<br />
Oracle 9i olap 40<br />
RollUp: genera un conjunto de resultados que muestra agregados para una<br />
jerarquía de valores de las columnas seleccionadas.
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Funciones SQL: Agregación<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Funciones SQL: Agregación<br />
Ejemplo:<br />
Oracle 9i olap 41<br />
GROUPING SETS: Proporciona un<br />
mecanismo para la selección<br />
sólo de las combinaciones de<br />
grupos interesantes en lugar<br />
del cubo entero.<br />
Ventajas e<br />
Inconvenientes<br />
GROUPING Y GROUPING_ID: Proporcionan una forma de definir<br />
el nivel de agregación deseado en la salida de la consulta.<br />
Ejemplo:<br />
Oracle 9i olap 42
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Ventajas e<br />
Inconvenientes<br />
Funciones SQL:<br />
Computación Analítica<br />
• Ranking<br />
• Moving Window<br />
• Reporting Aggregates<br />
• Lag and lead<br />
• Statistical<br />
Introducción Arquitectura<br />
Mercados de<br />
Datos<br />
Flujos de<br />
Datos<br />
Minería de Datos<br />
• Asociación<br />
• Clasificación<br />
• Clustering<br />
Ventajas e<br />
Inconvenientes<br />
Ejemplo:<br />
Oracle 9i olap 43<br />
Ejemplo:<br />
Oracle 9i olap 44
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong><br />
• Lenguaje de marcas extensible.<br />
• Definido por el Consorcio WWW, (W3C,2004).<br />
• Deriva de SGML.<br />
Ejemplo: Entorno<br />
XQuery 45<br />
• Permite la representación de datos estructurados (bases<br />
de datos) o semi-estructurados (aplicaciones de<br />
negocio).<br />
• Lenguaje de formato de datos.<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 46<br />
• Lenguaje más utilizado para la representación de datos<br />
semi-estructurados.<br />
• Lenguaje estándar para el intercambio de información,<br />
integración de datos y de aplicaciones.<br />
• ChemML o BSML adaptaciones de <strong>XML</strong> a diferentes áreas.<br />
• <strong>XML</strong> no está diseñado para el almacenamiento de datos<br />
(Alta redundancia debido a la repetición de etiquetas).
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 47<br />
• Ventajas como lenguaje para el intercambio de datos:<br />
– Las etiquetas hacen que los datos estén<br />
autodocumentados<br />
– Capacidad de extensión<br />
– Permite representar estructuras anidadas<br />
– Los documentos <strong>XML</strong> tienen un formato no rígido<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Lenguajes de Datos <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 48<br />
• Lenguaje que permite describir la estructura que van<br />
a tener los datos<br />
• Puede poseer un modelo subyacente y una síntaxis<br />
para descrbir los datos.<br />
• Este modelo puede ser un DTD o <strong>XML</strong> Schema
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Lenguajes de Datos <strong>XML</strong><br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Almacenamiento de Datos <strong>XML</strong><br />
• Gran aceptación de <strong>XML</strong> en diversos campos<br />
• Necesidad de almacenarlos y gestiónarlos<br />
• 1ª Solución: Almacenamiento como fichero plano<br />
– Presenta una serie de problemas<br />
Ejemplo: Entorno<br />
XQuery 49<br />
Ejemplo: Entorno<br />
XQuery 50<br />
• 2ª Solución: Utilizar las ventajas de la tecnología de las bases<br />
de datos
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Almacenamiento de Datos <strong>XML</strong><br />
• Alternativas de almacenamiento de datos <strong>XML</strong>:<br />
– Almacenamiento en ficheros planos<br />
– Almacenamiento en BD<br />
Introducción<br />
• En BD relacionales<br />
– Almacenamiento como cadenas de caracteres<br />
– Representación en árbol<br />
– Asignación a relaciones<br />
Ejemplo: Entorno<br />
XQuery 51<br />
• En BD como ficheros planos: atributo de tipo <strong>XML</strong> en una columna<br />
• Almacenamiento en BD <strong>XML</strong> nativas<br />
– Construidas directamente con un modelo <strong>XML</strong><br />
– Construidas como una capa sobre tecnología existen (OO u OR)<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos Relacionales y<br />
<strong>XML</strong><br />
<br />
Diseño de BD Relacionales<br />
<br />
Adoracion<br />
De Miguel<br />
<br />
<br />
Adoracion<br />
De Miguel<br />
<br />
<br />
Adoracion<br />
De Miguel<br />
<br />
<br />
RA-MA<br />
Madrid<br />
<br />
<br />
Ejemplo: Entorno<br />
XQuery 52
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos Relacionales y<br />
<strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 53<br />
• Almacenamiento como cadenas de caracteres:<br />
Tabla ELEMENTOS<br />
datos<br />
Diseño de BD Relacionales<br />
AdoracionDe Miguel<br />
AdoracionDe Miguel<br />
AdoracionDe Miguel<br />
RA-MAMadrid<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos Relacionales y<br />
<strong>XML</strong><br />
• Representación en árbol<br />
Nodos(id, tipo, etiqueta, valor)<br />
Hijos(id-hijo, id-padre)<br />
Ejemplo: Entorno<br />
XQuery 54
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos Relacionales y<br />
<strong>XML</strong><br />
Nodos Hijos<br />
ID TIPO ETIQUETA VALOR<br />
1 elemento referencia<br />
2 elemento titulo Diseño de BD<br />
relacionales<br />
3 elemento autor<br />
4 elemento nombre Adoración<br />
5 elemento apellidos De Miguel<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos Relacionales y<br />
<strong>XML</strong><br />
• Asignación a relaciones<br />
Referencia<br />
id Tipo<br />
1 libro<br />
Editorial<br />
Título<br />
id nombreE Dirección<br />
3 RA-MA Madrid<br />
id Título<br />
2 Diseño de BD Relacionales<br />
Autor<br />
Id nombre apellidos<br />
4 Adora. De<br />
Miguel<br />
5 Mario Piattini<br />
6 Esperan<br />
za<br />
Marcos<br />
Ejemplo: Entorno<br />
XQuery 55<br />
ID-HIJO ID-PADRE<br />
2 1<br />
3 1<br />
4 3<br />
5 3<br />
Ejemplo: Entorno<br />
XQuery 56<br />
Hijos<br />
subelementos Padre<br />
2 1<br />
3 1<br />
4 1<br />
5 1<br />
6 1
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 57<br />
• Dos tipos (Según WESTERMAN Y KLAS(2003)):<br />
– Bases de datos <strong>XML</strong> nativas<br />
– Extensiones <strong>XML</strong> a las bases de datos<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong> Nativas<br />
Ejemplo: Entorno<br />
XQuery 58<br />
• Los documentos <strong>XML</strong> no se pueden almacenar en<br />
SGBD convencionales debido a su naturaleza<br />
jerárquica y semiestructurada.<br />
• Los productos de bases de datos <strong>XML</strong> nativas,<br />
están centrados en el almacenamiento y gestión<br />
de documentos <strong>XML</strong>
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong> Nativas<br />
• Características:<br />
– Definen un modelo para estructura de los<br />
documentos <strong>XML</strong>.<br />
Ejemplo: Entorno<br />
XQuery 59<br />
– Almacenan y recuperan documentos de acuerdo a<br />
ese modelo.<br />
– Para el almacenamiento final, el gestor puede tener<br />
Introducción<br />
su propio modelo de almacenamiento.<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Bases de Datos <strong>XML</strong> Nativas<br />
Ejemplo: Entorno<br />
XQuery 60<br />
• Dependiendo del modelo de almacenamiento, los gestores pueden<br />
clasificarse en:<br />
– Almacenamiento basado en texto<br />
• Aplican técnicas de compresión<br />
• Mantienen índices adicionales<br />
• Pueden definirse sobre bases de datos o sobre sistemas de ficheros<br />
– Almacenamiento basado en modelo:<br />
• Define un modelo de datos lógico (como DOM) para la estructura<br />
jerárquica de los documentos <strong>XML</strong><br />
• Almacenan los documentos de acuerdo con este modelo usando el<br />
modelo de almacenamiento que se desee
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Extensiones <strong>XML</strong> a las Bases de<br />
Datos<br />
Ejemplo: Entorno<br />
XQuery 61<br />
• Permiten el almacenamiento y la gestión de documentos <strong>XML</strong><br />
en SGBD convencionales<br />
• Existen diferentes aproximaciones para el almacenamiento:<br />
– Almacenamiento no estructurado: los <strong>XML</strong> se almacenan<br />
directamente en formato de texto (ej:CLOB)<br />
– Almacenamiento estructurado: se usa un metamodelo de<br />
documentos <strong>XML</strong> capaz de representar árboles de nodos<br />
de documentos <strong>XML</strong>, que se construye usando primitivas<br />
de modelado del SGBD convencional que hay por<br />
debajo.<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Lenguajes de consulta y<br />
manipulación<br />
Ejemplo: Entorno<br />
XQuery 62<br />
• Elevado número de documentos e información en<br />
formato <strong>XML</strong>.<br />
• Necesidad de recuperar y consultar toda esta<br />
información.<br />
• Se deben permitir la selección de datos, búsqueda de<br />
información y búsqueda mixta como combinación de<br />
información y estructura.<br />
• El resultado es otro documento <strong>XML</strong>.
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Lenguajes de consulta más<br />
extendidos<br />
Ejemplo: Entorno<br />
XQuery 63<br />
• Aunque surgieron diferentes aproximaciones (Lorel,<br />
<strong>XML</strong>-QL, Quilt), se van a destacar los de mayor<br />
aceptación comercial y que han sido más<br />
ampliamente utilizados:<br />
– XPath<br />
– XSLT<br />
– XQuery<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Características comunes a los<br />
lenguajes de consulta <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 64<br />
• Utilización de un modelo de árbol para el documento.<br />
• Un documento <strong>XML</strong> se modela como un árbol con<br />
nodos correspondientes a elementos y atributos:
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Ejemplo de documento <strong>XML</strong><br />
Introducción<br />
<br />
<br />
0001 <br />
Mezzanine <br />
Massive Attack <br />
<br />
01 <br />
Teardrop <br />
4:50 min. <br />
<br />
<br />
<br />
0002 <br />
Third <br />
Portishead <br />
<br />
04 <br />
The Rip <br />
5:31 min. <br />
<br />
<br />
<br />
0003 <br />
El Manifiesto Desastre <br />
Nacho Vegas <br />
<br />
11 <br />
Morir o Matar <br />
5:47 min. <br />
<br />
<br />
<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Ejemplo de documento <strong>XML</strong> en<br />
árbol<br />
1..N<br />
Discografía<br />
Disco<br />
Ejemplo: Entorno<br />
XQuery 65<br />
Ejemplo: Entorno<br />
XQuery 66<br />
1 num_ref 1 título 1..N artista 1..N single<br />
1 1 1<br />
num_track nombre
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
El lenguaje XPath:<br />
Características<br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 67<br />
• Lenguaje de consulta navegacional que permite<br />
recorrer un documento <strong>XML</strong> en base a expresiones de<br />
ruta de acceso.<br />
• Una expresión de ruta, es una secuencia de pasos de<br />
ubicación separados por el operador ‘/’.<br />
• Se compara con las BDOO o las BDOR.<br />
• Se puede utilizar como constructor de otros lenguajes<br />
de consulta (como XSLT y Xquery)<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje Xpath: Ejemplo (I)<br />
Ejemplo: Entorno<br />
XQuery 68<br />
• Tomando el documento <strong>XML</strong> de ejemplo, vamos a realizar una consulta:<br />
– /Discografía/Disco/artista<br />
• Obteniendo el siguiente resultado:<br />
– Massive Attack <br />
– Portishead <br />
– Nacho Vegas <br />
• Podemos poner una condición a la selección con el operador ‘[ ]’ situado en<br />
cualquier parte de la cadena:<br />
– /Discografía/Disco [artista=‘Nacho Vegas’]/singles/nombre<br />
• Acceder a los atributos:<br />
– /Discografía/Disco/@num_ref<br />
• Combinando operadores, podemos realizar la siguiente consulta:<br />
– /Discografía/Disco/singles [@duración=‘5,30 min.’]/@nombre
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje Xpath: Ejemplo (II)<br />
• El operador count, número de nodos devueltos por ruta:<br />
– /Discografía/Disco [count(artista)>1]/titulo<br />
• Operador ‘|’, para indicar uniones de resultados:<br />
– /Discografía/Disco [count(artista)>1]/titulo |<br />
/Discografía/Disco [artista= ‘Portishead ’]/singles/nombre<br />
• Otros operadores:<br />
– And, or, not: operadores lógicos<br />
– Id: operador de deferencia<br />
– //: especifica “todos los descendientes”<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XSLT: Características<br />
Ejemplo: Entorno<br />
XQuery 69<br />
Ejemplo: Entorno<br />
XQuery 70<br />
• No es un lenguaje de consulta específico, es una hoja de<br />
estilo para la especificación de formato en un documento.<br />
• XSLT realiza una transformación sobre un documento <strong>XML</strong><br />
obteniendo otro documento de este tipo mediante reglas<br />
recursivas denominadas plantillas.<br />
• Debido a la potencia de las transformaciones de XSLT, este<br />
lenguaje puede usarse como un lenguaje de consulta. Aún<br />
así su sintaxis y semántica difieren respecto a otros lenguajes<br />
de consulta.
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XSLT: Ejemplo (I)<br />
Ejemplo: Entorno<br />
XQuery 71<br />
• Una plantilla XSLT consta de dos secciones: una de coincidencia (match) y otra de<br />
selección (select):<br />
<br />
<br />
<br />
<br />
• La sección de coincidencia especifica una ruta Xpath para seleccionar nodos, mientras<br />
que devuelve los valores específicados en título.<br />
• En la segunda plantilla devuelve como resultado todos los nodos que no coinciden con<br />
alguna plantilla anterior de una forma recursiva.<br />
• Para insertar nuevas etiquetas, ampliando la profundidad del árbol, se utiliza el<br />
constructor xsl:attribute. Este comando añade el atributo al elemento que le precede:<br />
<br />
<br />
<br />
<br />
<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XSLT: Ejemplo (II)<br />
Ejemplo: Entorno<br />
XQuery 72<br />
• Vemos otros constructores principales para XSLT así como un<br />
resumen de los anteriores:<br />
– : selecciona los nodos a<br />
devolver.<br />
– : devuelve valores de los nodos<br />
seleccionados.<br />
– : Añade un atributo al<br />
elemento precedente.<br />
– : Recursividad estructural<br />
– : Define una clave.<br />
–
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
El lenguaje XQuery:<br />
Características<br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
Ejemplo: Entorno<br />
XQuery 73<br />
• Lenguaje de consulta de propósito general para <strong>XML</strong>.<br />
• Auna funcionalidades de otros lenguajes (XPath, XQL,<br />
<strong>XML</strong>-QL), presentando una sintaxis muy similar a SQL.<br />
• Su principal función es extraer información de un<br />
conjunto de datos organizados como un árbol de orden<br />
n de etiquetas <strong>XML</strong>.<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Consultas<br />
Ejemplo: Entorno<br />
XQuery 74<br />
• Expresión que lee una secuencia de datos en <strong>XML</strong> y devuelve como resultado otra<br />
secuencia del mismo tipo.<br />
• Siguen la norma FLWOR (For, Let, Where, Order by, Return).<br />
For<br />
Let<br />
Where<br />
Vincula una o más variables a expresiones escritas en XPath, creando un flujo de tuplas<br />
en el que cada tupla está vinculada a una de las variable.<br />
Vincula una variable al resultado completo de una expresión añadiendo esos vínculos a<br />
las tuplas generadas por una cláusula for o, si no existe ninguna cláusula for, creando<br />
una única tupla que contenga esos vínculos.<br />
Filtra las tuplas eliminando todos los valores que no cumplan las<br />
condiciones dadas.<br />
Order by Ordena las tuplas según el criterio dado.<br />
Return<br />
Construye el resultado de la consulta para una tupla dada, después de haber sido<br />
filtrada por la cláusula where y ordenada por la cláusula order by.
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Funciones<br />
de entrada<br />
• Dos funciones de entrada:<br />
Ejemplo: Entorno<br />
XQuery 75<br />
– Función doc (URI): devuelve el nodo documento, o<br />
nodo raíz, del documento referenciado por la URI.<br />
– Función collection (URI): devuelve una secuencia de<br />
Introducción<br />
nodos referenciados por una URI, sin necesidad de<br />
que exista un nodo documento o nodo raíz.<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Condicionales y<br />
Cuantificadores<br />
Ejemplo: Entorno<br />
XQuery 76<br />
• Where: en una consulta permite filtrar las tuplas que<br />
aparecerán en el resultado.<br />
• if-then-else:expresión condicional nos permite crear una<br />
u otra estructura de nodos en el resultado que dependa<br />
de los valores de las tuplas filtradas.<br />
• Some: permite definir consultas que devuelva algún<br />
elemento que satisfaga la condición.<br />
• Every: consultas que devuelvan los elementos en los que<br />
todos sus nodos satisfagan la condición.
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Operadores y<br />
funciones<br />
Ejemplo: Entorno<br />
XQuery 77<br />
Matemáticas +, ‐, *, div(*), idiv(*), mod.<br />
Comparación =, !=, , =, not()<br />
Secuencia union (|), intersect, except<br />
Redondeo floor(), ceiling(), round()<br />
F. de agrupación count(), min(), max(), avg(), sum()<br />
concat(), string‐length(), startswith(), ends‐with(),<br />
F. de cadenas<br />
substring(),<br />
upper‐case(), lower‐case(), string()<br />
Uso general distinct‐values(), empty(), exits()<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Ejemplo (I)<br />
Ejemplo: Entorno<br />
XQuery 78<br />
• Obtener todas las referencias cuyo single tenga una<br />
duración superior a 5 minutos. Cada resultado es<br />
guardado en la etiqueta … <br />
for $x in /Discografía/Disco<br />
let $refTime := $x/titulo<br />
where $x/single/duración > ‘ 5 ’<br />
return $refTime
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Ejemplo (II)<br />
Ejemplo: Entorno<br />
XQuery 79<br />
• Podemos crear funciones: devuelve los títulos de los discos con más<br />
de un autor.<br />
function DevTitulos (xsd: string $c)<br />
returns list (xsd: string)<br />
{<br />
for $x in /Discografía/Disco<br />
where $x/count(autor)>1<br />
return $x/titulo<br />
}<br />
Introducción<br />
Lenguaje de definición<br />
de Datos <strong>XML</strong><br />
Almacenamiento de<br />
Datos <strong>XML</strong><br />
El lenguaje XQuery: Herramientas<br />
relacionadas<br />
Ejemplo: Entorno<br />
XQuery 80<br />
•XQueryX es la especificación de una sintaxis alternativa para<br />
XQuery que permite definir una consulta XQuery mediante<br />
etiquetas <strong>XML</strong>.<br />
XQEngine es un motor GPL dedicado al indexado y búsqueda<br />
de información en ficheros <strong>XML</strong> cuya sintaxis de consulta es una<br />
implementación de XQuery.<br />
XQuark Bridge es una herramienta que permite importar y<br />
exportar datos a bases de datos relacionales utilizando <strong>XML</strong>.
Comparativa<br />
• ORIENTACIÓN<br />
– AL Hacen operaciones sobre los datos para extraer información y dar<br />
soporte a la toma de decisiones de una organización<br />
– <strong>XML</strong> Definir un estándar de consulta para integrar información de varias<br />
aplicaciones<br />
• LENGUAJE <strong>DE</strong> CONSULTA<br />
– AL Una extensión de SQL<br />
– <strong>XML</strong> Lenguaje de marcado común a todas las aplicaciones<br />
• PERSISTENCIA <strong>DE</strong> LOS <strong>DATOS</strong><br />
– AL Accede tanto a los datos actuales cómo a los datos históricos<br />
– <strong>XML</strong> Como las bases de datos tradicionales, los datos se sobreescriben<br />
• CARACTERÍSTICAS PROPIAS<br />
– AL Utilizan un sistema intermedio entre el repositorio<br />
– <strong>XML</strong> <strong>XML</strong> no es un lenguaje de bbdd debido a la alta redundacia (repetición<br />
de etiquetas)<br />
• ENTORNO <strong>DE</strong> TRABAJO<br />
– AL Suele estar integrados en aplicaciones normales<br />
– <strong>XML</strong> Están muy ligados a un entorno Web<br />
Bibliografía<br />
•“Tecnología y Diseño de Bases de Datos”, PIATTINI VELTHUIS, MARIO G /<br />
MARCOS MARTINEZ, ESPERANZA / CALERO MUÑOZ, CORAL / VELA<br />
SÁNCHEZ, BELÉN<br />
“Sistemas de Bases de Datos. Un enfoque práctico para diseño,<br />
implementación<br />
y gestión”, THOMAS M. CONNOLLY/ CAROLYN E. BEGG<br />
Oracle9i Data Warehousing Guide Release 2 (9.2):<br />
http://www.mpiinf.<br />
mpg.de/departments/d5/teaching/ss05/is05/oracle/server.920/a96520/toc.htm<br />
http://es.geocities.com/lenguajesde_recuperacion/xquery.htm<br />
http://www.rhernando.net/modules/tutorials/doc/bd/dw.html<br />
http://es.wikipedia.org/wiki/Almac%C3%A9n_de_datos<br />
81<br />
82
Preguntas<br />
¿Por qué esta magnífica tecnología científica, que ahorra trabajo y nos hace la vida mas<br />
fácil, nos aporta tan poca felicidad? La repuesta es esta, simplemente: porque aún no<br />
hemos aprendido a usarla con tino.<br />
Albert Einstein (1879-1955) Científico alemán nacionalizado estadounidense.<br />
83