BASES de DATOS ÁCTIVAS Bibliografía Piattini & Díaz (2000). Advanced Database Technology and Design. Capt. 3 Elmasri & Navathe (2000). Fundamentals of DBS, Capt. 23.1 Garcia-Molina, Ullman & Widom 2002. DBS, Capt. 7.4 Motivación A día de hoy, los SGBD son el corazón de los Sistemas de Información. Nuevas tendencias en BD: GIS, BD Multimedia, BD XML … BD Activas BD convencionales se consideran muertas o pasivas y no pueden manejar ciertas situaciones Ejemplo: actualizar las rutas del autobús con cada incorporación de nuevos alumnos a una escuela 1. Monitorizar cada titulación 2. Comprobar periódicamente las direcciones de los alumnos matriculados Bases de Datos Activas Comportamiento Pasivo El marido sabe cómo cocinar La esposa solicita explícitamente al marido que lo haga Roles: objeto fuente VS objeto receptor (petición) Comportamiento Activo El marido sabe cómo cocinar y cuando cocinar Roles: objeto observador VS objeto observado Comportamiento Activo Comportamiento Activo = CUANDO + QUÉ Ejemplos: Gestión de Stocks: cuando ITEM < 10 entonces solicitar nuevo ITEM al proveedor Productos Perecederos Cuando fecha_caducidad - fecha_actual < 7 entonces reducir el precio del producto Comportamiento Activo Podemos recoger ese comportamiento en las aplicaciones que acceden a la BD APLICACIÓN APLICACIÓN Sistema Matriculación Gestión Campus Vicalvaro SGBD CUANDO …. ENTONCES ….. APLICACIÓN Datos Alumnos Datos Titulaciones Datos Autobús …. Gestión Campus Vicalvaro CUANDO …. ENTONCES ….. CUANDO …. ENTONCES ….. Perdida de Modularidad Semántica distribuida Comportamiento Activo Podemos recoger ese comportamiento en las aplicaciones que acceden a la BD APLICACIÓN Sistema Matriculación APLICACIÓN Gestión Campus Vicalvaro SGBD APLICACIÓN Datos Alumnos Datos Titulaciones Datos Autobús …. Gestión Campus Vicalvaro Mejora la Modularidad Frecuencia de Sondeo?? CUANDO …. ENTONCES ….. APLICACIÓN SONDEO Comportamiento Activo Podemos recoger ese comportamiento en la propia BD BD Activas APLICACIÓN APLICACIÓN Gestión Campus Vicalvaro SGBD Sistema Matriculación Datos Alumnos Datos Titulaciones Datos Autobús …. CUANDO …. ENTONCES … APLICACIÓN Gestión Campus Vicalvaro Mejora la Modularidad Código localizado Reacción Inmediata ↓ Tráfico de Red SGBD Activo Los SGBD Activos proporcionan mecanismos para: SGBD Definir el cuando y el qué Modelo de Conocimiento Realizar un seguimiento del cuando y gestionar el qué Modelo de Ejecución Cuando se procesar las reglas Cómo se gestionan eventos simultáneos SGBD Activo Un sistema de bases de datos activas es un sistema de gestión de bases de datos (SGBD) que contiene un subsistema que permite la definición y la gestión de reglas de producción (reglas activas). Aplicaciones de los SGBD activos Internas: clásicas de la utilización o administración de BD Control de Integridad Mantenimiento de datos derivados (vistas) Administración de Copias Seguridad y Auditoría Gestión de Versiones Externas: reglas de negocio RESTRICCIÓN wire:voltage > any (select max-voltage from wire-type where type 5 wire.type) REGLA ACTIVA on insert into wire if insert.voltage > any (select max-voltage from wire-type where type 5 insert.type) do (action) Modelo de Conocimiento Reglas ECA Evento – Condición – Acción Evento: ◦ Causa qué dispara la acción / Suceso al que debe responder el sistema Condición: ◦ Estado que debe darse ◦ Determina si la acción asociada a la regla se debe ejecutar Acción: ◦ Acciones que debe ejecutar el sistema cuando se produce el evento y la condición es cierta Evento FUENTE: ¿Qué ocasiona la ocurrencia de un evento? una instrucción del LMD (antes o después): Insert, Delete, Select una instrucción para la gestión de transacciones: Commit, Abort una excepción: violación de autorizaciones, bloqueos, etc. el reloj: el 28 de Marzo a las 19:30h. la aplicación GRANULARIDAD: ¿Qué cambios considera UNA ocurrencia del evento? cambios en sólo una tupla (disparadores a nivel de fila) 1 tupla : 1 evento cambios en todas las tuplas (disparadores a nivel de sentencia) n tuplas : 1 evento Condición y Acción CONDICIÓN: Un predicado sobre la BD: consulta ACCIÓN: ¿Qué se puede incluir en la reacción? comandos de SQL comandos de SQL extendido (p.e. PL/SQL) llamadas externas abortar la transacción Ejemplo SGBD Sueldo > Sueldo Jefe INSERT Temporalidad Condición SGBD UPDATE después de insert on empleado Evento si new.salario > (select B.salario from empleado B where B.nombre = new.jefe) do rollback Acción Ejemplo SGBD INSERT Temporalidad Condición SGBD Sueldo > Sueldo Jefe UPDATE después de insert on empleado Evento si new.salario > (select B.salario from empleado B where B.nombre = new.jefe) do update empleado set salario = new.salario where nombre = new.jefe Acción Modelo de Ejecución Ocurrencia de Eventos Fuente de Eventos Señalar Disparar Reglas Disparadas Reglas Evaluadas Reglas Seleccionadas Modos de Acoplamiento ¿Cuándo se evalúa la condición? NOMBRE TIPO SUELDO Juan Empleado 1000 Sara Directiva 1050 Ningún empleado debe ganar más que su jefe Jefa de Juan UPDATE EMPLEADO SET SUELDO = SUELDO * 1.10 NOMBRE TIPO SUELDO Juan Empleado 1100 NOMBRE TIPO SUELDO Sara Directiva 1050 Juan Empleado 1000 NOMBRE TIPO SUELDO Sara Directiva 1155 Juan Empleado 1100 Sara Directiva 1100 NOMBRE TIPO SUELDO Juan Empleado 1100 NOMBRE TIPO SUELDO Sara Directiva 1155 Juan Empleado 1100 Sara Directiva 1200 SOLUCIÓN: comprobación diferida Modos de Acoplamiento Modelo de Acoplamiento Inmediato INICIO de TRANSACCIÓN EVLUACIÓN CONDICIÓN EVENTO FIN de TRANSACCIÓN EJECUCIÓN ACCIÓN Modos de Acoplamiento Modelo de Acoplamiento Diferido INICIO de TRANSACCIÓN EVENTO Se evalúa al terminar la transacción donde se ha activado (tras la sentencia COMMIT) EVLUACIÓN CONDICIÓN FIN de TRANSACCIÓN EJECUCIÓN ACCIÓN SQL y las BD Activas CONSTRAINTS: especificaciones del DDL que se aplican a columnas y se evalúan sobre tuplas. UNIQUE, NOT NULL, REFERENCES, CHECK Conviene darles nombre ALTER TABLE Empleados ADD CONSTRAINT EmpFKDept FOREIGN KEY (dept) REFERENCES Departamento (ID); ASERCIONES (ASSERTIONS): restricción que no tiene por qué estar asociada a una única tabla. CREATE ASSERTION un_presidente CHECK( (SELECT COUNT(*) FROM emp WHERE puesto='PRESIDENTE') < 2); TRIGGERS (DISPARADORES): aserciones con acciones asociadas. BASES de DATOS ÁCTIVAS Bibliografía Piattini & Díaz (2000). Advanced Database Technology and Design. Capt. 3 Elmasri & Navathe (2000). Fundamentals of DBS, Capt. 23.1 Garcia-Molina, Ullman & Widom 2002. DBS, Capt. 7.4