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 2009 ::
Testo dell'esame dal sito del docente (.PDF)
I guasti a un protocollo two-phase commit possono essere:
Caduta di un RM:
RM esegue la ripresa a caldo e se l'ultimo record era ready deve chiedere al TM, per ogni transazione in dubbio, la decisione finale.
Caduta del TM:
TM esegue la ripresa a caldo e guarda l'ultimo record di log:
Perdita di messaggi:
Quando viene perso il messaggio di prepare o di ready scade il timeout e viene presa la decisione globale di abortire.
Quando viene perso il messaggio commit/abort o di un ack scade il timeout e viene ripetuta la seconda fase.
Partizione della rete:
La transazione avrà successo solo se il TM e gli RM appartengono alla stessa partizione.
Ogni pagina sequenziale ha (assumendo un blocco per pagina):
Le primitive sono:
Il modello multidimensionale permette la rappresentazione dei dati ad alto livello e favorisce l'analisi.
Concetti rilevanti:
Esempio: Catena di negozi
I livelli di isolamento riguardano le letture perché la scritture a ogni livello richiedono 2PL stretto.
I livelli sono:
Testo dell'esame dal sito del docente (.PDF)
Le proprietà di Atomicità e Isolamento sono intaccate dalla distribuzione dei dati.
Esempio Atomicità:
CC(Num,Nome,Saldo) Frammentato in CC1(con num<=1000) e CC2(con num>1000)
Assumiamo trasparenza di allocazione.
Se dobbiamo trasferire 100 Euro dal conto 354 al 1487 dobbiamo riuscire a garantire l'atomicità quindi o entrambe le modifiche sono eseguite o non lo è nessuna.
begin transaction update CC1 set saldo = saldo – 100 where CCNum = '354'; update CC2 set saldo = saldo + 100 where CCNum = '1487'; commit; end transaction
Esempio Isolamento:
In un sistema distribuito una transazione Ti può eseguire più sotto-transazioni a diversi nodi:
T1 = R11(x) W11(x) R12(y) W12(y) T2 = R22(x) W22(y) R21(x) W21(x)
Localmente risultano serializzabili ma globalmente no infatti T1 sul nodo 1 precede T2 mentre T2 sul nodo 2 precede T1.
Per risolvere il problema sono richieste le seguenti modifiche: ottimizzazione di interrogazioni, controllo di concorrenza e controllo di affidabilità.
In molti sistemi reali i lock possono essere chiesti su oggetti a granularità differente.
Su una tupla possiamo chiedere:
Protocollo:
Supporto: Probabilità che siano presenti in una transazione entrambi gli elementi di una regola.
Confidenza: Probabilità che sia presente in una transazione la conseguenza di una regola, essendo presente la premessa.
Esempio: pannolini → birra
Supporto = 0.02: il 2% tra tutte le transazioni contiene sia pannolini sia birra.
Confidenza = 0.30: il 30% delle transazioni che contiene pannolini contiene anche la birra.
Il metodo di lamport si utilizza per garantire la serializzabilità globale nelle base di dati distribuite. Permette di assegnare timestamp che riflettono la precedenza fra eventi in un sistema distribuito.
Timestamp: X.Y (X = contatore locale , Y = identificano un nodo)
ogni volta che due nodi si scambiano un messaggio i timestamp vengono sincronizzati e l'evento ricevente deve avere un timestamp maggiore o uguale all'evento mittente.
Checkpoint: Operazione di sistema svolta dal gestore dell'affidabilità con il coordinamento del buffer manager. Registra nel log le transazioni attive e aggiorna la memoria secondaria rispetto tutte le transazioni complete (è eseguito periodicamente).
Dump: Copia completa della base di dati memorizzata su memoria stabile (backup). Viene creata quando il sistema non è operativo. Alla conclusione del dump viene scritto nel log il record di dump.
Memoria stabile: Memoria resistente ai guasti. E' un astrazione poiché nessuna memoria può avere probabilità di guasto 0. Ma è possibile renderla prossima allo 0 tramite replicazione e protocolli di scrittura robusti.
VSR ma non CSR:
Schedule: r1(x), r2(y),w1(x),w2(y),w1(y)
Testo dell'esame dal sito del docente (.PDF)
Il modello multidimensionale permette la rappresentazione dei dati ad alto livello favorendone l'analisi.
I concetti rilevanti sono:
Le operazioni sono:
La rappresentazione tramite schema a stella ha come componenti:
La rappresentazione tramite schema a fiocco di neve:
Write Ahead Log: La parte BS dei record di log deve essere scritta nel log prima di
effettuare la corrispondente operazione sulla base di dati. Consente undo delle scritture effettuate da transazioni che non hanno fatto commit.
Commit-Precedenza: La parte AS dei record di log deve essere scritta nel log prima di effettuare il commit. Consente redo delle scritture già decise da transazioni che hanno fatto commit, ma le cui pagine modificate non sono ancora stare scritte dal buffer manager su memoria secondaria.
Il deadlock nelle basi di dati distribuite sono circoli di attesa tra due nodi o più nodi e due possibili soluzioni sono il time-out e la rilevazione e risoluzione. La rilevazione può essere fatta con un protocollo asincrono e distribuito. Attivata periodicamente ai vari DBMS del sistema, ogni DBMS:
XML Schema elementi semplici:
Esempio:
<xs:element name="nome" type="tipo" />
XML Schema: elementi complessi
Esempio:
<xs:element name="persona"> <xs:complexType> <xs:sequence> <xs:element name="Cognome" type="xs:string" /> <xs:element name="Nome" type="xs:string" maxOccurs="4" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element>
XML Schema: indicatori
Testo dell'esame dal sito del docente (.PDF)
L'organizzazione fisica regola la disposizione delle tuple all'interno del file:
Strutture sequenziali tipologie:
Scritture seriale:
Scrittura ad array:
Sequenziale ordinata:
Proprietà delle regole attive:
Testo dell'esame dal sito del docente (.PDF)
Two-Phase Locking: Una transazione dopo aver rilasciato un lock, non può acquisirne altri. Ogni transazione ha due fasi una crescente (acqusita i lock) e una decrescente (rilascia i lock). Questa tecnica garantisce serializzabilità.
Two-Phase commit: Permettono a una transazione di raggiungere la decisione corretta di commit o abort su tutti i nodi che partecipano alla transazione.