Torna alla pagina di Basi di Dati Complementi
Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! È SERVITA A QUALCOSA, NO?! ;)
:: Basi di Dati Complementi - Risposte Esami 2010 ::
2 Febbraio 2010
Testo dell'esame dal sito del docente (.PDF)
Risposta 1
Il 2-phase-commit è un protocollo per il commit distribuito e permette a una transazione di prendere la decisione corretta di commit o abort su tutti i nodi che partecipano alla transazione.
Distinguiamo tra:
- RM - I server che partecipano alla decisione: gestori di risorse
- TM – Processo coordinatore: gestore della transazione
Si distinguono 2 fasi:
Fase 1:
TM
scrive il record prepare (contiene l'identità di tutti i processi RM) nel suo log e manda un msg prepare a tutti gli RM; imposta il timeout.
RM
Possono essere in 2 stati:
- Affidabile (ha i lock su tutte le risorse che devono essere scritte): scrive il record ready (indica di voler partecipare al protocollo) e trasmette il msg ready.
- Non Affidabile: invia msg non-ready e termina la partecipazione al protocollo
TM
Raccoglie i messaggi di risposta e se sono tutti ready iscrive nel log global commit altrimenti scrive global abort.
Fase 2:
TM
Trasmette la decisione (commit o abort) agli RM; imposta il timeout.
RM in stato ready
Scrivono nel log il record relativo alla decisione e mandano un ack al TM.
Eseguono in loco la decisione globale.
TM
Ricevuti tutti gli ack scrive il record complete (fine protocollo di commit a 2 fasi) nel log.
Risposta 2
Nel locking a due fasi ogni transazione ha due fasi:
- Crescente – acquisisce i lock
- Decrescente – rilascia i lock
Una transazione dopo aver rilasciato un lock non può acquisirne altri (garantisce serializzabilità).
Uno Schedule 2PL base consiste in transazioni ben formate rispetto al locking, gestione dei lock basata sui conflitti e locking a due fasi.
Le varianti sono:
- 2PL stretto:
Una transazione può rilasciare i lock solo dopo il commit/abort (elimina possibilità di letture sporche).
- 2PL conservativo:
Una transazione deve acquisire tutti i lock prima di iniziare le operazioni (garantisce no deadlock).
Esempio di schedule non 2PL base:
S: r1(x) w1(x) r2(x) w2(x) r3(y) w1(y)
Risposta 3
Il trigger, nelle basi di dati attive, è una procedura eseguita in maniera automatica in coincidenza di un determinato evento.
Se a seguito di un evento la condizione è soddisfatta esegue l'azione.
La creazione dei trigger fa parte del Data Definition Language.
I componenti sono:
- Evento: primitive SQL per la manipolazione dei dati (insert, delete, update).
- Condizione: predicato booleano espresso in SQL.
- Azione: sequenza di primitive SQL generiche o procedura.
Livelli di granularità:
- Tupla: l'azione avviene per ogni tupla coinvolta nell'evento.
- Primitiva: l'attivazione avviene una sola volta per ogni evento e si applica a tutte le tuple coinvolte nell'evento.
Modalità attivazione:
- Immediata: valutazione immediatamente dopo o prima dell'evento che lo ha attivato.
- Differita: valutazione avviene alla fine della transazione.
12 Gennaio 2010
Testo dell'esame dal sito del docente (.PDF)
Risposta 1
Le proprietà ACIDe sono Atomicità, Consistenza, Isolamento e Durabilità.
Atomicità:
Una transazione è una unità atomica di lavoro.
Non può lasciare la base di dati in uno stato intermedio e un errore prima del commit causa l'UNDO del lavoro fatto fino a quel momento, mentre dopo il commit causa il REDO del lavoro.
Consistenza:
L'esecuzione di una transazione non deve violare i vincoli d'integrità definiti sulla base di dati. Il controllo dell'integrità può essere immediato (durante la transazione, l'operazione che causa la violazione è rifiutata) oppure differito (alla fine della transazione se vengono violati dei vincoli, l'intera transazione è rifiutata).
Isolamento:
L'esecuzione di una transazione deve essere indipendente da quella di tutte le altre transazioni concorrenti.
Durabilità:
Gli effetti di una transazione che ha eseguito commit non devono essere persi.
La distribuzione dei dati l'isolamento e l'atomicità possono essere compromesse e sono richieste delle modifiche a:
- Ottimizzazione di interrogazioni
- Controllo di concorrenza (isolamento)
- Controllo di affidabilità (atomicità)
Controllo concorrenza: Una transazione può eseguire più sotto-transazioni a diversi nodi.
Atomicità: Può essere compromessa da guasti o malfunzionamenti.
Risposta 2
Risposta 2.1
Permette di assegnare timestamp che riflettono la precedenza fra eventi in un sistema distribuito. I timestamp hanno due gruppi di cifre X.Y (X identifica l'evento che accade al nodo e Y identifica un nodo). Ogni volta che i nodi si scambiano un messaggio, i timestamp vengono sincronizzati: l'evento ricevente deve avere un timestamp maggiore o uguale dell'evento mittente (può richiedere l'incremento del contatore locale al nodo ricevente).
Risposta 2.2a
Prevenzione deadlock:
- Preemptive (interrompenti): uccidono la transazione che possiede la risorsa.
- Non-preemprive (non interrompenti): uccidono la transazione che richiede la risorsa.
Risposta 2.2b
Le transazioni uccise devono ripartire con lo stesso timestamp (altrimenti rischierebbero di essere sempre uccise (starvation).
Risposta 2.3
La frammentazione dei dati applica delle operazioni algebriche su una relazione R per
dividerla in frammenti.
Frammentazione orizzontale:
Ogni frammento ha come tuple un sottoinsieme delle tuple della relazione e può essere interpretato come il risultato di una selezione sulla relazione (i frammenti sono disgiunti quindi non hanno tuple in comune).
Frammentazione verticale:
Ogni frammento ha come schema un sottoinsieme degli attributi della relazione e può essere interpretato come il risultato di una proiezione sulla relazione (i frammenti includono la chiave primaria per garantire la ricostruibilità).
Proprietà di correttezza:
- Completezza: ogni dato della relazione deve essere presente in un qualche suo frammento.
- Ricostruibilità: deve essere interamente ricostruibile a partire dai suo frammenti.
Torna alla pagina di Basi di Dati Complementi