Basi di dati attive. Una base di dati che offre regole attive Si parla normalmente di trigger Trigger presentati rapidamente in precedenza Si vogliono.

Slides:



Advertisements
Presentazioni simili
Ricorsione in SQL-99.
Advertisements

Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
1 Basi di dati attive. 2 Sommario Preliminari Approcci architetturali Linguaggi per la specifica di regole – Eventi – Condizioni – Azioni – Ulteriori.
DOCUMENTAZIONE DI SCHEMI E/R
Biglietti e Ritardi: schema E/R
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Principale limitazione di AR e SQL-92: interrogazioni ricorsive IMPIEGATO NOMENOMECAPO RossiVerdi NeriVerdi DeSio TucciDeSio DeLucaDeSio Lazio selezionare.
Asserzioni, Viste & Triggers
Basi di dati attive Dispongono di un sottosistema integrato per definire e gestire regole di produzione (regole attive) Regole di tipo: Evento-Condizione-Azione.
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Elementi di PL/SQL.
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Corso di Informatica (Programmazione)
Risorse e Stallo.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Basi di dati attive Paolo Atzeni.
SQL: Lezione 7 Nataliya Rassadko
SQL Per la modifica di basi di dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Le transazioni Itis Max Planck.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Modello E-R Generalizzazioni
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Daniel Stoilov Tesi di Laurea
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
MODELLO LOGICO DEI DATI
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
SQL (IV) Data Definition Language/ Data Manipulation Language.
FUNZIONI Dichiarazione: Definizione:
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Elementi di PL/SQL. Pl/Sql Il PL/SQL (Procedural Language/Structured Query Language) è un linguaggio di programmazione procedurale di Oracle che costituisce.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Progettazione di basi di dati: metodologie e modelli
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Approfondimenti SQL.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Le basi di dati.
Linguaggi per basi di dati Linguaggi di definizione dei dati Utilizzati per definire gli schemi e le autorizzazioni per l’accesso Linguaggi di manipolazione.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Transcript della presentazione:

Basi di dati attive

Una base di dati che offre regole attive Si parla normalmente di trigger Trigger presentati rapidamente in precedenza Si vogliono descrivere in modo più approfondito: –definizione in SQL:1999 –varianti ed evoluzioni –terminazione e progetto –diversi esempi duso

Struttura di base dei trigger Paradigma di base: Evento-Condizione-Azione –quando capita un evento –se è vera la condizione –si esegue lazione Il modello a regole è un modo intuitivo per rappresentare una computazione Altri esempi di regole nel mondo dei DBMS: –vincoli di integrità –regole Datalog –business rules Problema: difficile realizzare sistemi complessi

Evento-Condizione-Azione Evento –normalmente una modifica dello stato della base di dati: INSERT, DELETE, UPDATE –Quando avviene levento, il trigger viene attivato Condizione –Un predicato che identifica le situazioni in cui è necessaria lapplicazione del trigger –Quando si valuta la condizione il trigger viene considerato Azione –Un generico comando di modifica o una stored procedure –Quando si elabora lazione il trigger viene eseguito Un DBMS mette già a disposizione tutti i componenti necessari. Si tratta solo di integrarli

Sintassi SQL:1999 dei trigger SQL:1999 (anche detto SQL-3) propone una sintassi simile a quella offerta da Oracle Server e IBM DB2 I sistemi tenderanno a uniformarsi a essa Ogni trigger è caratterizzato da –nome –nome della tabella che viene monitorata –modo di esecuzione (BEFORE o AFTER) –levento monitorato (INSERT, DELETE o UPDATE) –granularità (statement-level o row-level) –nomi e alias per transition values e transition tables –lazione –il timestamp di creazione

Sintassi SQL:1999 dei trigger create trigger NomeTrigger { before | after } { insert | delete | update [ of Colonne] } on Tabella [ referencing {[ old table [ as ] AliasTabellaOld] [ new table [ as ] AliasTabellaNew] } | {[ old [ row ] [ as ] NomeTuplaOld] [ new [ row ] [ as ] NomeTuplaNew] }] [ for each { row | statement }] [ when Condizione] ComandiSQL

Esecuzione di un singolo trigger Modo di esecuzione: –BEFORE Il trigger viene considerato ed eventualmente eseguito prima che venga applicata sulla base di dati lazione che lo ha attivato Di norma viene utilizzata questa modalità quando si vuole verificare la correttezza di una modifica, prima che venga applicata –AFTER Il trigger viene considerato ed eventualmente eseguito dopo che è stata applicata sulla base di dati lazione che lo ha attivato È il modo più comune, adatto a quasi tutte le applicazioni È più semplice da utilizzare correttamente

Granularità degli eventi Modo statement level (modo di default) –Il trigger viene considerato ed eventualmente eseguito una volta sola per ogni comando che lo ha attivato, indipendentemente dal numero di tuple modificate –È il modo più vicino allapproccio tradizionale dei comandi SQL, che sono di norma set-oriented Modo row-level (opzione for each row ) –Il trigger viene considerato ed eventualmente eseguito una volta per ciascuna tupla che è stata modificata dal comando –Consente di scrivere i trigger in modo più semplice –Può essere meno efficiente

Clausola referencing Il formato dipende dalla granularità –Per il modo row-level, si hanno due transition variables old e new, che rappresentano rispettivamente il valore precedente e successivo alla modifica della tupla che si sta valutando –Per il modo statement-level, si hanno due transition tables old table e new table, che contengono rispettivamente il valore vecchio e nuovo di tutte le tuple modificate Le variabili old e old table non sono utilizzabili in trigger il cui evento è insert Le variabili new e new table non sono utilizzabili in trigger il cui evento è delete Le variabili e le tabelle di transizione sono importanti per realizzare i trigger in modo efficiente

Esempio di trigger row-level create trigger MonitoraConti after update on Conto referencing old as old new as new for each row when (old.NomeConto = new.NomeConto and new.Totale > old.Totale) insert values (new.NomeConto,new.Totale- old.Totale) into SingoliVersamenti

Esempio di trigger statement- level create trigger ArchiviaFattureCanc after delete on Fattura referencing old table as SetOldFatture insert into FattureCancellate (select * from SetOldFatture)

Esecuzione di più trigger e loro proprietà

Conflitti tra trigger Se vi sono più trigger associati allo stesso evento, SQL:1999 prescrive questa politica di gestione –Vengono eseguiti i trigger BEFORE statement-level –Vengono eseguiti i trigger BEFORE row-level –Si applica la modifica e si verificano i vincoli di integrità definiti sulla base di dati –Vengono eseguiti i trigger AFTER rwo-level –Vengono eseguiti i trigger AFTER statement-level Se vi sono più trigger della stessa categoria, lordine di esecuzione viene scelto dal sistema in un modo che dipende dallimplementazione

Modello di esecuzione SQL:1999 prevede che i trigger vengano gestiti in un Trigger Execution Context (TEC) Lesecuzione dellazione di un trigger può produrre eventi che fanno scattare altri trigger, che dovranno essere valutati in un nuovo TEC interno In ogni istante possono esserci più TEC per una transazione, uno dentro laltro, ma uno solo può essere attivo Per i trigger row-level il TEC tiene conto di quali tuple sono già state considerate e quali sono da considerare Si ha quindi una struttura a stack –TEC0 -> TEC1 ->... -> TECn Quando un trigger ha considerato tutti gli eventi, il TEC si chiude e si passa al trigger successivo È un modello complicato, ma preciso e relativamente semplice da implementare

Esempio di esecuzione

Gestione dei salari MatricolaNomeSalarioNDipNProg 50Rossi Verdi Bianchi NroProgObiettivo 10NO 20NO Impiegato Progetto NroDipMatricolaMGR 150 Dipartimento

Trigger T1: Bonus Evento: update di Obiettivo in Progetto Condizione: Obiettivo = SI Azione:incrementa del 10% il salario degli impiegati coinvolti nel progetto CREATE TRIGGER Bonus AFTER UPDATE OF Obiettivo ON Progetto FOR EACH ROW WHEN NEW.Obiettivo = SI BEGIN update Impiegato set Salario = Salario*1.10 where NProg = NEW.NroProg; END;

Trigger T2: ControllaIncremento Evento: update di Salario in Impiegato Condizione: nuovo salario maggiore di quello del manager Azione: decrementa il salario rendendolo uguale a quello del manager CREATE TRIGGER ControllaIncremento AFTER UPDATE OF Salario ON Impiegato FOR EACH ROW DECLARE X number; BEGIN SELECT Salario into X FROM Impiegato JOIN Dipartimento ON Impiegato.Matricola = Dipartimento.MatricolaMGR WHERE Dipartimento.NroDip= NEW.NDip; IF NEW.Salario > X update Impiegato set Salario = X where Matricola = NEW.Matricola; ENDIF; END;

Trigger T3: ControllaDecremento Evento: update di Salario in Impiegato Condizione:decremento maggiore del 3% Azione:decrementa il salario del solo 3% CREATE TRIGGER ControllaDecremento AFTER UPDATE OF Salario ON Impiegato FOR EACH ROW WHEN (NEW.Salario < OLD.Salario * 0.97) BEGIN update Impiegato set Salario=OLD.Salario*0.97 where Matricola = NEW.Matricola; END;

Attivazione di T1 NroProgObiettivo 10SI 20NO Progetto Evento: update dellattributo Obiettivo in Progetto MatricolaNomeSalarioNdipartNProg 50Rossi Verdi Bianchi Azione: si incrementa del 10% il salario di Verdi Condizione: vera Update Progetto set Obiettivo = SI where NroProg = 10

Attivazione di T2 Evento: update di Salario in Impiegato MatricolaNomeSalarioNdipartNProg 50Rossi Verdi Bianchi Azione: si modifica il salario di Verdi rendendolo uguale a quello del manager Rossi Condizione: vera (il salario dellimpiegato Verdi supera quello del manager Rossi) Si attiva nuovamente T2 - condizione è falsa Si attiva T3

Attivazione di T3 Evento: update dellattributo salario in Impiegato MatricolaNomeSalarioNdipartNProg 50Rossi Verdi Bianchi Azione: si decrementa il salario di Verdi del solo 3% Condizione: vera (il salario di Verdi è stato decrementato per più del 3%) Si attiva nuovamente T3 - condizione è falsa Si attiva T2 – condizione vera

Attivazione di T2 Matrico la NomeSalarioNdipartNProg 50Rossi Verdi Bianchi Attivazione di T3 La condizione del trigger è falsa Il salario è stato decrementato per meno del 3% Lattivazione dei trigger ha raggiunto lo stato di terminazione

Progettazione

Proprietà dei trigger 3 proprietà classiche –Terminazione Per qualunque stato iniziale e qualunque sequenza di modifiche, i trigger producono uno stato finale (non vi sono cicli infiniti di attivazione) –Confluenza I trigger terminano e producono un unico stato finale, indipendente dallordine in cui i trigger vengono eseguiti La proprietà è significativa solo quando il sistema presenta del non- determinismo nella scelta dei trigger da eseguire –Determinismo delle osservazioni I trigger sono confluenti e in più producono la stessa sequenza di messaggi La proprietà più importante è di gran lunga la terminazione

Analisi di terminazione Si usa il il grafo di attivazione (triggering graph) –Un nodo per ogni trigger –Un arco da un nodo ti a un nodo tj se lesecuzione dellazione di ti può attivare il trigger tj (si può fare con una semplice analisi sintattica) Se il grafo è aciclico, si ha la garanzia che il sistema è terminante –non vi possono essere sequenze infinite di trigger Se il grafo ha dei cicli, cè la possibilità che il sistema sia non-terminante (ma non è detto)

Esempio con due trigger T1: create trigger AggiustaContributi after update of Stipendio on Impiegato referencing new table as NuovoImp update Impiegato set Contributi = Stipendio * 0.8 where Matr in (select Matr from NuovoImp) T2:create trigger ControllaSogliaBudget after update on Impiegato when < (select sum(Stipendio+Contributi) from Impiegato) update Impiegato set Stipendio = 0.9*Stipendio

Triggering graph per i trigger precedenti T1 T2 Vi sono 2 cicli. Il sistema è però terminante.

Grafo di Terminazione per i trigger di gestione dei salari T1T2T3 Il grafo è ciclico, ma lesecuzione ripetuta dei trigger porta comunque allo stato di quiescenza

Problemi nel disegno di applicazioni dei trigger Il potenziale dei trigger è molto elevato –possono essere uno strumento che arricchisce la base di dati e porta allinterno di essa aspetti relativi alla gestione dei dati che altrimenti vengono distribuiti su tutte le applicazioni che usano i dati... ma questo potenziale è poco sfruttato I trigger sono usati per realizzare servizi innovativi da parte dei produttori di DBMS, introducendo meccanismi per la generazione automatica di trigger.Ad esempio: –gestione di vincoli –replicazione dei dati –mantenimento di viste

Tecniche e metodologie per il disegno di trigger Proposte per il progetto su piccola scala e su scala più ampia –per il progetto su piccola scala, conviene sfruttare gli strumenti di analisi disponibili (triggering graph e altri) –per il progetto su scala più grande, conviene far riferimento a tecniche e metodologie apposite La modularizzazione è una tecnica che prevede di organizzare i trigger in moduli destinati a un obiettivo specifico –Se ciascun modulo realizza correttamente il proprio obiettivo e se linterferenza con gli altri moduli è innocua (da dimostrare in modi diversi), si ha la garanzia che il sistema è corretto

Applicazioni delle basi di dati attive

Applicazioni classiche: regole interne alla base di dati –Trigger generati dal sistema e non visibili allutente –Principali funzionalità: Gestione dei vincoli di integrità, la computazione di dati derivati, la gestione dei dati replicati; –Altre funzionalità: Gestione di versioni, privatezza, sicurezza, logging delle azioni, registrazione degli eventi, … Regole esterne (o regole aziendali) –Esprimono conoscenza di tipo applicativo

Gestione dellintegrità referenziale Strategie di riparazione per le violazioni dei vincoli di integrità referenziale –Il vincolo è espresso come predicato nella parte condizione Es: CREATE TABLE Impiegato( … FOREIGNKEY(NDip) REFERENCES Dipartimento(NroDip) ON DELETE SET NULL, … …); Operazioni che possono violare questo vincolo: –INSERT in Impiegato –UPDATE di Impiegato.NDip –UPDATE di Dipartimento.NroDip –DELETE in Dipartimento

Azioni nella tabella Impiegato CREATE TRIGGER ControllaDipImpiegato BEFORE INSERT ON Impiegato FOR EACH ROW WHEN (not exists select * from Dipartimento where NroDip = NEW.NDip) BEGIN raise_application_error(-20000, Dipartimento non valido); END; Evento: inserimento in Impiegato Azione: si inibisce linserimento, segnalando un errore Condizione: il nuovo valore di Ndip non è tra quelli contenuti nella tabella Dipartimento Per la modifica di NDip in Impiegato il trigger cambia solo nella parte evento

Cancellazione nella tabella Dipartimento CREATE TRIGGER ControllaCancDipartimento AFTER DELETE ON Dipartimento FOR EACH ROW WHEN(exists select * from Impiegato where NDip = OLD.NroDip) BEGIN UPDATE Impiegato SET Ndip=NULL WHERE Ndip = OLD.NroDip; END; Evento: cancellazione in Dipartimento Condizione: il valore di NroDip che si intende cancellare è tra quelli contenuti nella tabella Impiegato Azione: si setta a NULL la chiave esterna

Modifiche nella tabella Dipartimento CREATE TRIGGER ControllaModificaDipartimento AFTER UPDATE OF NroDip ON Dipartimento FOR EACH ROW WHEN(exists select * from Impiegato where NDip = OLD.NroDip) BEGIN update Impiegato set NDip = NEW.Nrodip where NDip = OLD.NroDip; END; Evento: modifica dellattributo NroDip in Dipartimento Condizione: il vecchio valore di NroDip è tra quelli contenuti nella tabella Impiegato Azione: si modifica anche Ndip in Impiegato

Trigger per il mantenimento di viste materializzate Consistenza delle viste rispetto alle tabelle sulle quali sono state definite –Le modifiche sulle tabelle di base devono essere propagate sulle viste Gestione della replicazione: CREATE MATERIALIZED VIEW ReplicaImpiegato REFRESH FAST AS SELECT * FROM Il mantenimento delle viste materializzate è gestito tramite trigger

Gestione della ricorsione Trigger per la gestione della ricorsione –Ricorsione non ancora supportata dai DMBS correnti Es.: rappresentazione di una gerarchia di prodotti –Ogni prodotto è caratterizzato da un super-prodotto e da un livello di profondità nella gerarchia, rappresentabile tramite una vista ricorsiva (costrutto with recursive in SQL 99) –In alternativa: uso dei trigger per la costruzione ed il mantenimento della gerarchia Prodotto( Codice, Nome, Descrizione, SuperProdotto, Livello) Gerarchia rappresentata tramite SuperProdotto e Livello Prodotti non contenuti in altri prodotti: SuperProdotto = NULL e Livello = 0

Cancellazione di un prodotto In caso di cancellazione di un prodotto è necessario cancellare anche tutti i sottoprodotti che lo compongono CREATE TRIGGER CancellaProdotto AFTER DELETE ON Prodotto FOR EACH ROW BEGIN delete from Prodotto where SuperProdotto = OLD.Codice; END;

Inserimento di un nuovo prodotto In caso di inserimento è necessario calcolare il valore appropriato per lattributo Livello CREATE TRIGGER LivelloProdotto AFTER INSERT ON Prodotto FOR EACH ROW BEGIN IF NEW.SuperProdotto IS NOT NULL UPDATE Prodotto SET Livello = 1 + (select Livello from Prodotto where Codice NEW.SuperProdotto) ELSE UPDATE Prodotto SET Livello = 0 WHERE Codice = NEW.Codice; ENDIF; END;

Controllo degli accessi I trigger possono essere utilizzati per rinforzare il controllo sugli accessi E conveniente definire solo quei trigger che corrispondono a condizioni che non possono essere verificate direttamente dal DBMS Uso del BEFORE per i seguenti vantaggi: –Il controllo dellaccesso è eseguito prima che levento del trigger sia eseguito –Il controllo dellaccesso è eseguito una sola volta e non per ogni tupla su cui si verifica levento del trigger

Trigger InibisciModificaSalario CREATE TRIGGER InibisciModificaSalario BEFORE INSERT ON Impiegato DECLARE non_nel_weekend EXCEPTION; non_in_oreDiLavoro EXCEPTION; BEGIN /*se weekend*/ IF (to_char(sysdate, 'dy') = 'SAT' OR to_char(sysdate, 'dy') = 'SUN') THEN RAISE non_nel_weekend; END IF; /* se al di fuori dellorario di lavoro(8-18) */ IF (to_char(sysdate, 'HH24') < 8 OR to_char(sysdate, 'HH24') > 18) THEN RAISE non_in_oreDiLavoro; END IF;

Trigger InibisciModificaSalario (cont.) EXCEPTION WHEN non_nel_weekend THEN raise_application_error(-20324,non e possibile modificare la tabella impiegato durante il weekend'); WHEN non_in_oreDiLavoro THEN raise_application_error(-20325,' non e possibile modificare la tabella impiegato al di fuori dellorario di lavoro'); END;

Evoluzione dei trigger

Eventi Eventi di sistema e comandi DDL –Sistema: servererror, shutdown, etc. –DDL: Modifiche di autorizzazioni –In entrambi i casi alcuni DBMS mettono già a disposizione questi servizi, che consentono la realizzazione di monitoraggi sofisticati Eventi temporali (anche periodici) –Esempio: il 23/7/04 alle ore 12:00; ogni giorno alle 4:00 –Sono di interesse in diverse applicazioni –È difficile integrarli perché operano in un contesto transazionale autonomo –Si possono comunque simulare con componenti software esterne al DBMS che usano i servizi di gestione del tempo del sistema operativo per produrre un opportuno evento interno al DBMS

Eventi/2 Eventi definiti dallutente –Esempio: TemperaturaTroppoAlta –Sono di interesse in alcune applicazioni, ma non sono normalmente offerti –Sono anchessi facilmente simulabili Interrogazioni –Esempio: chi legge gli stipendi –È di norma troppo pesante gestirli

Espressioni su eventi Combinazioni booleane di eventi –SQL:1999 consente di specificare più eventi per un trigger, in disgiunzione è sufficiente un evento qualsiasi tra quelli elencati –Alcuni ricercatori hanno proposto modelli di composizione più sofisticati Sono molto complicati da gestire Non vi sono forti motivazioni che giustifichino il costo della loro introduzione

Clausola instead of è una modalità alternativa a BEFORE e AFTER non si esegue l'operazione che ha attivato l'evento, ma unaltra azione è implementata in diversi sistemi, spesso con forti limitazioni –in Oracle si può usare esclusivamente per eventi di modifica su viste, risolvendo il problema del view update per viste generiche

Esempio in SQL server -- Trigger maxGare ----EVENTO: inserimento nuova riga in tblAnagraficaTOtblGara ----VERIFICA: controlla che ad ogni iscritto siano associate al max 3 gare. ----AZIONE: non permette l'inserimento in caso di nroGare>3. ALTER TRIGGER maxGare ON tblAnagraficaTOtblGara FOR INSERT AS BEGIN int FROM anniFdr WHERE idAnnoFdr IN (SELECT MAX(idAnnoFdr) FROM anniFdr) count(T.fkidAnagrafica) FROM tblAnagraficaTOtblGara as T WHERE T.fkidAnagrafica IN (SELECT fkIDAnagrafica FROM inserted) AND T.fkidAnnoFdr IN (SELECT fkidAnnoFdr FROM inserted) IF ) BEGIN --ELIMINO LA RIGA INSERITA E MOSTRO L'ERRORE DELETE FROM tblAnagraficaTOtblGara WHERE fkidAnagrafica IN (SELECT fkIDAnagrafica FROM inserted) AND fkidAnnoFdr IN (SELECT fkidAnnoFdr FROM inserted) AND fkidGara IN (SELECT fkidGara FROM inserted) RAISERROR ('Inserimento Interrotto: MAX 3 specialità. Ultimo inserimento eliminato.',10, 1) END

Instead of …. -- Trigger maxGare ----EVENTO: inserimento nuova riga in tblAnagraficaTOtblGara ----VERIFICA: controlla che ad ogni iscritto siano associate al max 3 gare. ----AZIONE: non permette l'inserimento in caso di nroGare>3. ALTER TRIGGER maxGare ON tblAnagraficaTOtblGara INSTEAD OF INSERT AS BEGIN int FROM anniFdr WHERE idAnnoFdr IN (SELECT MAX(idAnnoFdr) FROM anniFdr) count(T.fkidAnagrafica) FROM tblAnagraficaTOtblGara as T WHERE T.fkidAnagrafica IN (SELECT fkIDAnagrafica FROM inserted) AND T.fkidAnnoFdr IN (SELECT fkidAnnoFdr FROM inserted) IF ) BEGIN FROM inserted FROM inserted FROM inserted INSERT INTO tblAnagraficaTOtblGara END ELSE BEGIN RAISERROR ('Inserimento Interrotto: MAX 3 specialità.',10, 1) END

Priorità, attivazione e gruppi Definizione di priorità –Permette di specificare lordine di esecuzione dei trigger quando ve ne sono diversi attivati contemporaneamente –SQL:1999 specifica che prima un ordine che si basa sul modo di esecuzione e sulla granularità del trigger; a pari modo, la scelta dipende dallimplementazione –Nei sistemi spesso si usa lordine temporale di definizione Trigger attivabili e disattivabili –Non presente nell standard, ma spesso disponibile nei sistemi Trigger organizzati in gruppi – Qualche sistema offre meccanismi di raggruppamento dei trigger, per attivare e disattivare per gruppi

Modi di esecuzione 3 alternative classiche –immediato (immediate) Il trigger viene considerato ed eseguito con levento che lo ha attivato Ad esempio: trigger che verificano immediatamente il rispetto di vincoli di integrità –differito (deferred) Il trigger viene gestito al termine della transazione Ad esempio: trigger che verificare il rispetto di vincoli di integrità che richiedono lo svolgimento di diverse operazioni –distaccato (detached) Il trigger viene gestito in una transazione separata Ad esempio: si vogliono gestire in modo efficiente le variazioni del valore di indici di borsa in seguito a numerosi scambi

Data Streams DBMS Convenzionali: i dati costituiscono collezioni finite e presistenti In molte applicazioni: i dati sono streams continui, rapidi, infiniti, dipendenti-dal tempo –Controllo del traffico in rete –Sicurezza –Gestione delle chiamate telefoniche –Applicazioni finanziarie –Log del web e analisi di click-streams –Dati estratti da reti di sensori

DSMS Memoria Lidea Stream in input Query registrata Stream Risultato Tabellare Archivio Tabelle

Applicazione tipo Query di controllo della rete DSMS Memoria Misure del traffico, tracce dei pacchetti Warning sulle intrusioni Valutazione online delle prestazioni Archivio Tabelle

Quale la relazione con i database attivi Nei database attivi: levento è una query, il sistema di trigger svolge la reazione In un stream database: levento è un flusso di dati, il sistema di gestione dello stream svolge la reazione –I sistemi per gestire data streams controllano in modo massivo molteplici eventi data-driven

Architettura Utente/ApplicazioneUtente/Applicazione Query Registrate Stream Query Processor Risultato Memoria a disposizione (Main/Disk) Data Stream Management System (DSMS)

Gestione degli stream Come esprimere query –Linguaggi ispirati a SQL –Linguaggi ispirati ai dataflow (grafici) Tempo di registrazione delle query –Predefinito –Ad-hoc Problemi semantici –Operatori blocking: aggregazioni, order-by –Streams interpretati come insiemi o liste Ottimizzazione multi-query –Trovare le parti comuni delle query –E possibile perché le query non cambiano

Architettura Input Data Streams Gli utenti fanno query continue e ad-hoc Gli amministratori controllano lesecuzione tramite parametri a run-time Le applicazioni registrano query continue Output stream X X Waiting Op Ready Op Running Op Punti-osservazione Query Plan

Finestra dati Porzione di stream, per rendere finito uno stream (potenzialmente infinito) Le finestre sono definite tramite: tempo iniziale e finale, numero di tuple, o tramite valori di breakpoint Finestre sullo stesso stream possono avere una intersezione non vuota

Problemi di valutazione di query: Approssimazione Perchè lapprossimazione? –Gli streams arrivano troppo velocemente –Risposte esatte richiedono memoria illimitata o risorse computazionali eccessive –Quando è coinvolta lintera storia Problemi con lapprossimazione –Come contollarla? –Come farla capire allutente? Ce un trade-off tra accuratezza-efficienza- memoria

Problemi di valutazione di query: Adattatività Perchè la adattatività? –Le queries restano presenti a lungo, ma possono cambiare le loro caratteristiche (p.e.: il loro carico) –Larrivo degli stream può avere fluttuazioni importanti Problemi di adattività –Allocazione adattativa delle risorse (memoria, calcolo) –Piani di esecuzioni adattativi delle query

Applicazioni tipiche/1 Gestione della rete e del traffico (p.e., Sprint) –Streams di misure e tracce di pacchetti –Query: trovare anomalie, modificare il routing Sicurezza delle reti informatiche (e.g., iPolicy, NetForensics/Cisco, Netscreen) –Streams di richieste di risorse –Query: filtro di URL, ricerca intrusioni, attacchi e viruses Dati sulle chiamate telefoniche (e.g., AT&T) –Streams di record relativi alle chiamate –Query: scoperta di frodi, ricerca di pattern ricorrenti tra le chiamate

Applicazioni tipiche/2 Applicazioni finanziarie (e.g., Traderbot) –Stream di dati di titoli e trading –Query: ricerca di opportunità finanziarie Web tracking e personalizzazione (e.g., Yahoo, Google, Akamai) –Streams di click e di record di log –Query: monitoring, analisi, personalizzazione Dati massivi (e.g., Astronomy Archives) –Stream che può venir analizzato solo durante il flusso di dati –Query: operano al meglio, caso per caso