Sei sulla pagina 1di 6

1) Base di dati attiva + granularit, valutazione ed esecuzione dei trigger:

Una base di dati si dice attiva quando dispone di un sottosistema integrato ore
definire e gestire regole di produzione secondo il paradigma Evento-CondizioneAzione.
La granularit pu essere ROW LOVEL, se il trigger viene attivato, verificato ed
eseguito per ogni tupla del target coinvolta nell'evento;
STATEMENT-LEVEL, se il trigger viene eseguito una sola volta per tutte le tulle
coinvolte.
Le modalit di valutazione sono BEFORE, AFTER e DEFERRED.
La parte esecutiva costituita da uno StatementSQL racchiuso tra BEGIN e END;

2) Descrivere albero B con modalit di ricerca + differenze con B+


Un albero B una struttura dati gerarchica per l'accesso ai dati ottimizzata per la
ricerca. E' organizzato in modo tale che ogni nodo i a sinistra di un nodo con chiave K
sia caratterizzato da un valore Ki < K (dualmente, a destra, Ki > K): ci rende l'albero
bilanciato. Ogni nodo non foglia contiene quindi, oltre che i valori delle proprie chiavi,
tutti i puntatori ai sotto-alberi di sua competenza. Con una struttura di questo tipo, la
ricerca di una tupla con chiave V consiste semplicemente nel seguire il cammino per
cui:
- se V < K1: si segue il puntatore P0
- se V > Kf: si segue il puntatore Pf
- se Ki < K < K(i+1): si segue il puntatore Pi
in maniera iterativa.
Nel B+ tree, invece, tutti i dati sono conservati nelle foglie (i nodi interni contengono
solo chiavi e puntatori) e queste sono collegate tra loro come una lista secondo
l'ordine della chiave.

3) Descrivere Osservazione nella basket analysis e come si calcolano supporto e


confidenza
Una osservazione nella basket analisi una occorrenza di una transazione di acquisto
Il supporto la probabilit che in una osservazione siano presenti la premessa e la
conseguenza di una regola associativa
La confidenza la probabilit che sia presente la conseguenza essendo gi presente la
premessa

4) Locking a 2 fasi + differenze col 2PL stretto


Il 2PL serve a garantire l'isolamento nell'esecuzione parallela di pi transazioni. Esso
prescrive che, una volta rilasciato un loco, una transazione non pu acquisirne altri ->
fase crescente (di acquisizione), fase calante (di rilascio).

Il 2PL stretto prescrive che una transazione pu rilasciare un loco solo dopo aver
effettuato correttamente il commit/abort.
IL 2PL prevede i livelli di isolamento: read uncommitted, rea committed, repeatable
read, serializable.

3) Schema a stella e a fiocco di neve


Lo schema a stella organizzato con un Fatto centrale in collegamento 1:N con
numerose Dimensioni, che non possono essere collegate tra loro. La sua struttura
regolare e non dipende dal problema considerato.
Lo schema a fiocco di neve serve a strutturare le dimensioni in maniera gerarchica,
per aumentare la normalizzazione e ridurre le ridondanze. Le dimensioni possono
quindi essere collegate tra loro in cascata (es. Citt -> Regione -> Zona)

4) Illustrare i livelli di isolamento di SQL

5) Operatori unari dell'algebra relazionale


SELEZIONE: la relazione risultante mantiene lo schema di partenza, ma contiene solo
le tulle che soddisfano la condizione di selezione. La cardinalit quindi, in genere,
diminuisce. E' commutativa.
PROIEZIONE: lo schema risultante un sottoinsieme di quello di partenza e contiene
solo gli attributi specificati. Anche la cardinalit in genere si modifica perch vengono
eliminati i duplicati. Non commutativa.
RIDENOMINAZIONE: permette di rinominati uno o pi attributi della relazione. I valori
degli attributi rimangono invariati.

6) Impedence mismatch e come si risolve (VERIFICARE)


Esiste un "disaccoppiamento di impedenza" tra base di dati e linguaggi di
programmazione perch SQL opera su relazioni, mentre i linguaggi su variabili e
oggetti. Gli approcci usati sono SQL Embedded, Call Level Interface, Stored Procedures
e l'uso di Cursori.

7) Struttura dei file di log + UNDO() e REDO()


Il file di log viene memorizzato su memoria considerato stabile ed scritto in modo
ordinato e sequenziale. Contiene i log di transazione (BEGINE, COMMIT, ABORT +
UPDATE, INSERT, DELETE) e i log di sistema (CHECKPOINT, DUMP).
La primitiva UNDO() serve a disfare le azioni eseguite su di un oggetto.
La primitiva REDO() serve a rifare le operazioni eseguite su un oggetto.

Entrambe sono utilizzate in caso di guasti (ripresa a caldo/freddo) e assicurano il


corretto funzionamente del ripristino grazie alla propriet di idempotenza:
UNDO(UNDO(x)) = UNDO(x); REDO(REDO(x)) = REDO(x)

8) Sintassi del trigger + granularit


La sintassi dei trigger non definita nello standard, ma generalmente segue la forma:
CREATE TRIGGER Nome Modalit Evento on Tabella [referencing Ref] [Granularit]
[when (Condizione)] StatementSQL
dove:
- Modalit = BEFORE | AFTER | DEFERRED
- Evento = INSERT | UPDATE | DELETE (o una combinazione di questi)
- Tabella = nome tabella da osservare per attivare il trigger
- Granularit = FOR EACH ROW | FOR EACH STATEMENT
- Condizione = condizione SQL da valutare per ogni tupla (disponibile solo se FOR
EACH ROW)
- StatementSQL l'insieme di comandi SQL da eseguire, racchiuso tra BEGIN e END;

9) Propriet ACID
ATOMICITA': una transazione una unit indivisibile di lavoro: un errore prima del
commit provocher l'UNDO delle operazioni eseguite, un errore dopo il commit
provocher il REDO delle operazioni. La base di dati non pu essere lasciata in uno
stato indecidibile.
CONSISTENZA: Una transazione non pu violare i vincoli di integrit della base di dati.
ISOLAMENTO: ogni transazione deve essere indipendente da ogni altra. L'effetto di una
collezione concorrente di transazioni deve essere equivalente a quello di una arbitraria
esecuzione in sequenza di ciascuna transazione
DURABILITA': gli effetti di una transazione devono permanere indefinitamente nel
tempo.

10) Architettura di un DataWarehouse + descrizione dei suoi moduli


Un DataWarehouse utilizza dati provenienti da pi DB eterogenei attraverso
importazioni di dati asincrone e periodiche. E' organizzato in:
- loader: carica i dati nella DW attraverso operazioni in batch quando la DW non
utilizzata. Viene usato se i dati sono pochi
- refresh: propaga in maniera incrementale le modifiche alle data suore;
l'aggiornamento pu essere fatto tramite data shipping oppure transaction shipping
- accesso ai dati: si occupa dell'analisi dei dati, effettua in maniera ottimizzata query
e join, implementa le operazioni di roll up, drill down e data cube

- data mining: realizza algoritmi per la ricerca di relazioni "nascoste" tra i dati
- export dei dati: permette l'esportazione dei dati da una DW ad un'altra

11) Struttura ad Hash


Realizza un accesso associativo ai dati: assegnato un campo (in genere chiave della
tabella) vi si applica una funzione di hashing che ritorna l'indirizzo del blocco sul disco.
Esiste per un problema dovuto alle collisioni: assegnati cio due valori distinti di
ricerca, l'hash generato pu essere uguale. Si risolve tale problema inserendo nella
cella "collidente" una catena di overflow, un puntatore cio al nuovo record con lo
stesso hash: lo svantaggio per quello di rallentare la ricerca.

12) Deadlock e sua gestione


Si verifica un deadlock quando due transazioni sono in attesa l'una dell'altra.
Si pu gestire tramite l'uso di un timeout, scaduto il quale il lock rifiutato (bisogna
stare attenti a definire correttamente il timeout).
Si pu prevenire tramite l'uso di timestamp: la transazione attende solo se esiste una
precedenza tra i timestamp.
Per rilevare un deadlock si attua un controllo periodico delle tabelle di loco e all'analisi
del grafo delle attese tra transazioni.

13) Vista aggiornabile + clausola "check option"


Una vista aggiornabile una vista per la quale esiste una corrispondenza univoca tra
le proprie tuple e quelle della tabella di partenza: ci rende possibile la propagazione
delle modifiche dalla vista alla tabella base.
L'opzione "with [cascaded | local] check option" serve quando si prevede
l'aggiornamento della vista, per verificare se i valori della nuova tupla soddisfano
ancora il predicato di definizione della tupla stessa (consizioni del WHERE).
Local indica che il controllo deve limitarsi alla sola vista interessata, cascaded indica
che il controllo deve essere effettuato anche su tutte le eventuali viste a monte.

14) Ripresa a caldo


Si effettua quando si verifica un errore di sistema (soft failure). Si cerca l'ultimo
checkpoint nel file di log; si construiscono gli insieme UNDO-SET (operazioni da
disfare, cio che non hanno superato il commit) e il REDO-SET (operazioni da rifare,
che hanno gi superato il commit). Si applicano le azioni dell'UNDO-SET ripercorrendo
all'indietro il file di log. Infine si applicano le azioni del REDO-SET.

15) Dipendenza funzionale + assiomi di Armstrong


Una dipendenza funzionale un vincolo tra due insiemi di attributi di una base di dati.

Siano X, Y sottoinsiemi non vuoti dello schema di una relazione R. Esiste una
dipendenza funzionale X --> Y se: per ogni t1, t2 istanza di R, Px(t1) = Px(t2) -->
Py(t1) = Py(t2)
Gli assiomi di Armstrong sono:
- riflessivit: X contenuto Y implica X --> Y
- incremento: X --> Y implica XZ --> YZ
- transitivit: X --> Y, Y --> Z implica X --> Z
Altre regole:
- unione: X --> Y, X --> Z implica X --> YZ
- decomposizione: X --> YZ implica X --> Y, X --> Z

16) Primitive del buffer manager


- FIX: usata per richiedere e caricare una pagina nel buffer, restituisce un puntatore
alla pagina.
1. se la pagina gi nel buffer, ritorna il puntatore
2. se esiste una pagina libera, si salvano le modifiche in memoria di massa
3. se non esistono pagine libere:
--- steal: si scarica una pagina vittima nella memoria di massa
--- no steal: si aspetta che si liberi una pagina, poi si procede come al punto 2
4. si incrementa il contatore di utilizzo della pagina
- SET DIRTY: indica che la pagina stata modificata
- USE: accede all pagina caricata
- UNFIX: segnala che si finito di usare la pagina (decrementa il puntatore)
- FORCE: trasferisce in maniera SINCRONA la pagina dal buffer alla memoria
secondaria
- FLUSH: trasferisce in modo ASINCRONO le pagine

17) Vista aggiornabile + Sintassi per creare una vista


CREATE VIEW Nome [(Lista di attributi)] as SelectSQL [with [cascaded|local] check
option]

18) Sintassi dei Cursori


DECLARE Nome [SCROLL] CURSOR FOR SelectSQL [FOR <read only | update [of
Lista_attributi]>]
OPEN Nome

FETCH [Posizione FROM] Nome into Variabili


- Posizione = next | prior | first | last | absolute Numero | relative Numero
DELETE FROM Tabella WHERE CURRENT OF Nome_cursore
CLOSE CURSOR Nome

19) Operazioni binari dell'algebra relazionale


- UNIONE (U = R unito S): la nuova relazione include tutte le tuple di quelle di
partenza.
Grado(U) = Grado(R) = Grado(S). Card(U) <= card(R) + card(S)
- INTERSEZIONE (I = R inters S): la nuova relazione contiene solo le tuple presenti sia
in R che in S.
Grado(I) = Grado(R) = Grado(S). Card(I) <= min(Card(R), Card(S))
- DIFFERENZA (D = R - S): D include le tuple di R non presenti in S.
Grado(D) = Grado(R) = Grado(S). Card(D) <= card(R)

Unione, Intersezione, Differenza richiedono che R ed S siano UNION-COMPATIBILI, cio


esista una corrispondenza 1:1 tra i loro attributi.

- PRODOTTO CARTESIANO (P = R x S): P composta dalla combinazione di ciascuna


tupla ri R con ciascuna tupla di S.
Grado(P) = Grado(R) + Grado(S). Card(P) <= Card(R) * Card(S)
- JOIN: operazione "di convenienza". Implementa efficientemente una selezione sul
prodotto cartesiano.

Potrebbero piacerti anche