sql: lezione 10 nataliya rassadko [email protected]

12
SQL: Lezione 10 Nataliya Rassadko [email protected]

Upload: salvatore-graziano

Post on 01-May-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

SQL: Lezione 10

Nataliya [email protected]

Page 2: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Agenda

Timestamp based protocolloEsercizi su

Timestamping Conflict-serializability BCNF

Alcuni note su SQL

Page 3: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Timestamping: Problem statement

Ogni transazione è associata con un numero unico – timestamp Counter System clock

Con ogni elemento di DB ci sono associati RT(X), WT(X), C(X)

Ordine delle transazione è serialeProblemi

Read too late: TS(T)<RT(X), T vuole leggere qualcosa con può leggere più

Write too late: WT(X)<TS(T)<RT(X), T vuole scrivere qualcosa nel elemento che già nel uso

Page 4: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Timestamping: Possibilità

Richesta deve essere garantitaKill T, se T vuole cambiare la realtà, e restart

T con nuovo timestamp – rollbackDelay T e dopo decidere se garantire la

richiesta dal T (e.g., si può garantire dirty read)

Page 5: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Timestamping: Algoritmo per Read(X)

Se TS(T)>=WT(X), T può leggere X If C(X)=true e TS(T)>RT(X), RT(X):=TS(T)

Altrimenti, non cambiare RT(X) If C(X)=false, delay T finchè C(X)=true o transazione

che scrive in X finishe

Se TS(T)<WT(X), T non può leggere X Rollback T

Page 6: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Timestamping: Algoritmo per Write(X)

Se TS(T)>=WT(X) e TS(T)>=RT(X), T può scrivere X T scrive in X WT(X):=TS(T) C(X):=false

Se TS(T)<WT(X) e TS(T)>=RT(X), T può scrivere X Ma solo se C(X)=true Altrimenti delay T

TS(T)<RT(X), T non può scrivere X Rollback T

Page 7: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Timestamping: Esempio

st2;st3;st1;r1(B);r2(A);r3(C);w1(B);w1(A);w2(C); w3(A)

r1(B) –> RT(B):=st1r2(A) -> RT(A):=st2r3(C) -> RT(C):=st3w1(B) –> WT(B):=st1w1(A) -> WT(A):=st1w2(C) -> C è in utilizzo da T3 con st3>st2 -> Abort2w3(A) e RT(A)=st2 -> T3 può scrivere in A ma se C(A):=true

C(A)=false ->delay T3

Page 8: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Esercizi

St1;r1(A);st2;w2(B);r2(A);w1(B)St1;st2;st3;r1(A);r1(B);w1(C);r3(B);r3(C);w2(B);w3(

A)St1;st3;st2;r1(A);r1(B);w1(C);r3(B);r3(C);w2(B);w3(

A)

Page 9: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Conflict-serializability: Esercizi

r1(A);w1(B);r2(B);w2(C);r3(C);w3(A)w3(A);r1(A);w1(B);r2(B);w2(C);r3(C)r1(A);r2(A);w1(B);w2(B);r1(B);r2(B);w2(C);w1(D)r1(A);r2(A);r1(B);r2(B);r3(A);r4(B);w1(A);w2(B)

Selezionarte operazioni sullo stesso elemento XSequenza deve essere preservataGuardare ogni coppia di operazioni selezionate in seqSe almeno una operazione è w, arco deve essere

inseritoArco da operazione più recente a meno recente

Page 10: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

BCNF: Esercizi

ABCD, AB->C, C->D, D->AABCD, B->C, B->DABCD, AB->C, BC->D, CD->A, AD->BABCD, A->C, B->C, C->D, D->AABCDE, AB->C, DE->C, B->DABCDE, AB->C, C->D, D->B, D->E

Page 11: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

SQL

SELECT-FROM-WHERESubquery sono in FROM o WHERE

Attenti al risultato di subquery in WHERE: insieme o valoreJOIN

Natural, INNER, FULL OUTER, LEFT OUTER, RIGHT OUTER NULL

Aggregazione e GROUP BY NULL

HAVING come WHERE ma condizione sul valore aggregato

INTERSECT, UNION, EXCEPT Tutti gli attributi di relazioni-argomenti sono UGUALE

MIN(COUNT) - subquery

Page 12: SQL: Lezione 10 Nataliya Rassadko rassadko@disi.unitn.it

Buon Natale

Ci vediamo al esame!