13.08.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!