51
CC3201-1 BASES DE D ATOS PRIMAVERA 2016 Clase 9: SQL (IV) Una nueva esperanza Bases de datos (inter)activas Aidan Hogan [email protected]

CC3201-1 B DATOS PRIMAVERA 2016

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CC3201-1 B DATOS PRIMAVERA 2016

CC3201-1BASES DE DATOS

PRIMAVERA 2016

Clase 9: SQL (IV) Una nueva esperanza

Bases de datos (inter)activas

Aidan Hogan

[email protected]

Page 2: CC3201-1 B DATOS PRIMAVERA 2016

¿Acaso hemos visto todo de SQL?

(no)

Page 3: CC3201-1 B DATOS PRIMAVERA 2016

Lo que exploraremos hoy día

(Bases de datos interactivas)

Page 4: CC3201-1 B DATOS PRIMAVERA 2016

VISTAS

Capítulo 3.6 Database Management Systems,Ramakrishnan / Gehrke (Third Edition)

Page 5: CC3201-1 B DATOS PRIMAVERA 2016

Vistas: Una perspectiva diferente sobre una base de datos

Page 6: CC3201-1 B DATOS PRIMAVERA 2016

Motivación: Metacritic

Page 7: CC3201-1 B DATOS PRIMAVERA 2016

Motivación: Metacritic

Page 8: CC3201-1 B DATOS PRIMAVERA 2016

Metacritic: Evaluaciones de música

Page 9: CC3201-1 B DATOS PRIMAVERA 2016

Agregación de evaluaciones

¿Pero si quisiéramos hacer este tipo de consulta con mucha frecuencia? …

Actualizada.

Page 10: CC3201-1 B DATOS PRIMAVERA 2016

Agregación de evaluaciones

¿Algún problema aquí? …

Page 11: CC3201-1 B DATOS PRIMAVERA 2016

Agregación de evaluaciones dinámicas

Page 12: CC3201-1 B DATOS PRIMAVERA 2016

Vistas: puentes virtuales

Page 13: CC3201-1 B DATOS PRIMAVERA 2016

Vista: una tabla virtual

Page 14: CC3201-1 B DATOS PRIMAVERA 2016

Vista: facilitan consultas más simples

Page 15: CC3201-1 B DATOS PRIMAVERA 2016

¿Cómo funcionan las vistas?

(1) Extender la consulta de conformidad con la vista

(2) Ejecutar la consulta extendida sobre las tablas bases

(0) Crear la vista

Page 16: CC3201-1 B DATOS PRIMAVERA 2016

¿Cómo funcionan las vistas?

Con la vista, guardamos una sub-consulta frecuente para reutilizar en varias consultas.

(No estamos guardando/materializando datos de la tabla virtual. ¡Así no hay problema con actualizaciones en los datos subyacentes!)

Page 17: CC3201-1 B DATOS PRIMAVERA 2016

¡Una vista no es una tabla base/física!

… no hay índices …… no hay llaves …… no ayuda mucho con rendimiento … pero …

Page 18: CC3201-1 B DATOS PRIMAVERA 2016

¿Para qué sirven las vistas entonces?

• Abreviatura/abstracción

– Reducir la complejidad de consultas, evitando repeticiones de patrones comunes

• Seguridad

– Se puede dar acceso a una vista (un subconjunto de los datos) y no a todos los datos

Page 19: CC3201-1 B DATOS PRIMAVERA 2016

Eliminar una vista

Page 20: CC3201-1 B DATOS PRIMAVERA 2016

Eliminar una vista

Page 21: CC3201-1 B DATOS PRIMAVERA 2016

¿Actualizar una vista?

Page 22: CC3201-1 B DATOS PRIMAVERA 2016

¿Actualizar una vista? ¡Ambigüedad!

La idea es actualizar las tablas bases mediante la vista (no la vista misma)

¿Entonces, cuál sería el resultado de esta inserción sobre las tablas bases? …

¡No basta la información para actualizar las tablas bases!

Page 23: CC3201-1 B DATOS PRIMAVERA 2016

Vistas de solo lectura

Cuando la vista permita ambigüedad, la vista es solo lectura: no se puede actualizarla

Page 24: CC3201-1 B DATOS PRIMAVERA 2016

Vistas actualizables

Page 25: CC3201-1 B DATOS PRIMAVERA 2016

Vistas actualizables

Page 26: CC3201-1 B DATOS PRIMAVERA 2016

Vistas actualizables

Una actualización puede afectar sólo la tabla base y no la vista

Page 27: CC3201-1 B DATOS PRIMAVERA 2016

Vistas actualizables

Una actualización puede agregar nulos en lugares donde se permiten nulos (eg., no en columnas llaves o columnas con ‘NOT NULL’)

Page 28: CC3201-1 B DATOS PRIMAVERA 2016

Actualizando una vista

• Es difícil caracterizar precisamente las vistas actualizables, (incluyendo en la teoría de bases de datos) pero una vista es “solo lectura” cuando involucre, por ejemplo:– Agregación u otra forma de crear valores frescos

(como, por ejemplo, aritmético)

– Proyección que elimine una columna que no permita nulos

• Frecuentemente, los motores no soporten vistas actualizables sobre varias tablas

Pero por supuesto, no hay problema actualizar las tablas bases directamente (si uno tiene acceso) …

La vista se actualizará automáticamente

Page 29: CC3201-1 B DATOS PRIMAVERA 2016

¿Para qué sirven las vistas entonces?

• Abreviatura/abstracción

– Reducir la complejidad de consultas, evitando repeticiones de patrones comunes

• Seguridad

– Se puede dar acceso a una vista (un subconjunto de los datos) y no a todos los datos

¿Qué es el costo de mantener una vista?

¡Casi nada con respecto a la gestión de los datos! Pero …

Page 30: CC3201-1 B DATOS PRIMAVERA 2016

El costo de consultas

Son equivalentes pero la consulta extendida es mucho más difícil optimizar

Actualizada.

Page 31: CC3201-1 B DATOS PRIMAVERA 2016

¿… y si el rendimiento nos importara?

Page 32: CC3201-1 B DATOS PRIMAVERA 2016

Vista materializada: guardar tablas virtuales

Page 33: CC3201-1 B DATOS PRIMAVERA 2016

Vista materializada: consultar directamente

Page 34: CC3201-1 B DATOS PRIMAVERA 2016

Vista materializada: actualización

Page 35: CC3201-1 B DATOS PRIMAVERA 2016

Vista materializada: actualización

Page 36: CC3201-1 B DATOS PRIMAVERA 2016

Materializar vistas vs. Crear tablas

¿Cuál es la diferencia más importante entre crear una tabla y crear una vista materializada?

En la vista, se guarda la consulta para facilitar la actualización de la vista en una fase posterior

Page 37: CC3201-1 B DATOS PRIMAVERA 2016

Cambiar vistas?

… se puede usar ALTER posteriormenteo a veces crear índices, etc.

Page 38: CC3201-1 B DATOS PRIMAVERA 2016

Vistas “virtuales” son estándares

Vistas materializadas no son estándares(hay soporte diferente en Oracle y Postgres)

Page 39: CC3201-1 B DATOS PRIMAVERA 2016

DISPARADORES (O GATILLOS/TRIGGERS)

Capítulo 3.6 Database Management Systems,Ramakrishnan / Gehrke (Third Edition)

Page 40: CC3201-1 B DATOS PRIMAVERA 2016

Disparadores: Evento/Condición/Acción

Page 41: CC3201-1 B DATOS PRIMAVERA 2016

Disparadores: Evento/Condición/Acción

¿Qué hace el disparador?

Si intentamos reducir el pm de un álbum, se restaurará el valor previo

¿Dónde están Evento/Condición/Acción?

Actualizada.

Page 42: CC3201-1 B DATOS PRIMAVERA 2016

Disparadores: Evento/Condición/Acción

No cambia.

Actualizada.

Page 43: CC3201-1 B DATOS PRIMAVERA 2016

Disparadores: Evento/Condición/Acción

¿Cómo podríamos actualizar la tabla ÁlbumEval sobre una inserción a Evaluación?

Page 44: CC3201-1 B DATOS PRIMAVERA 2016

Disparadores: Evento/Condición/AcciónActualizada.

Page 45: CC3201-1 B DATOS PRIMAVERA 2016

Disparadores son estándares

!Pero su suporte en varios motores varia muchísimo!

Postgres implementa poco del estándar

Page 46: CC3201-1 B DATOS PRIMAVERA 2016

RESUMEN

Page 47: CC3201-1 B DATOS PRIMAVERA 2016

El mundo cambia …

… las base de datos cambian

Page 48: CC3201-1 B DATOS PRIMAVERA 2016
Page 49: CC3201-1 B DATOS PRIMAVERA 2016

• Vistas:– No hay datos físicos

• Más caro ejecutar consultas• Los resultados no pueden ser obsoletos• Más barato actualizar tablas

• Vistas materializadas:– Las actualizaciones ejecutan a veces

• Más barato ejecutar consultas• Los resultados pueden ser obsoletos• Poco portable entre motores diferentes

• Tablas físicas (sin disparadores)– Hay que actualizar por mano

• Más barato ejecutar consultas• Los resultados pueden ser obsoletos

• Tablas físicas (con disparadores)– Las actualizaciones ejecutan automáticamente

• Más barato ejecutar consultas• Los resultados deberían ser actualizado• Más caro actualizar tablas• Agregan mucha complejidad a la base de datos• Poco portable entre motores diferentes

Page 50: CC3201-1 B DATOS PRIMAVERA 2016

El horario:

• Tendremos un lab:

– El jueves (27 de octubre)

• Un lab: SQL IV

– El jueves (3 de noviembre)

• Un lab: Acceso Programático

Page 51: CC3201-1 B DATOS PRIMAVERA 2016

Preguntas?