Documente Academic
Documente Profesional
Documente Cultură
TRANZACII
Definiii
Conceptele de; tranzacie, consisten i concuren sunt definite
pentru un sistem de baze de date distribuite. n timpul operaiilor de
actualizare (modificare adugare i tergere) baza de date trece dintr-o stare
n alt stare. Afirmaiile pe care trebuie s le satisfac la anumite momente,
formeaz restriciile de integritate.
O stare a unei baze de date este consistent dac ea satisface la
anumite momente toate restriciile de integritate ale datelor definite asupra
sa.Starea rezultat din orice prelucrare trebuie s fie consistent.
Problemele care se pun sunt:
. Ce se ntmpl dac dou ntrebri ateapt s actualizeze acelai element
de dat sau dac se realizeaz o eroare de sistem pe parcursul execuiei
unei ntrebri de actualizare a aceluiai element, sau dac se realizeaz o
eroare de sistem pe parcursul execuiei unei ntrebri de actualizare a
unui
element. n acest caz, nu putem s restartm execuia unei ntrebri de
actualizare ntrerupt n urma unei erori, deoarece anumite elemente de
date au fost actualizate mai nainte de realizarea acestui eveniment.
. nlturarea efectelor negative a ntrebrilor de actualizare asupra bazei de
date.Din aceste observaii rezult c: Nu exist noiuni de execuie
consistent i n siguran a unei ntrebri. Sigurana se refer la tolerana
fa de erori (pene, defecte etc.) si la capacitatea de recuperare dup
apariia unei erori. Trebuie ca baza de date s rmn ntr-o stare
consistent chiar dac exist un numr mare de cereri de actualizare care o
acceseaz concurent. O alt situaie se refer la cazul cnd baza de date este
replicat i ntr-o stare eventual consistent adic toate copiile elementelor
au aceeai valoare. Conceptul de tranzacie este introdus ca o unitate de
baz a consistenei i a siguranei.
Actualizrile sunt executate ca
tranzacii n timp ce strategiile de execuie sunt determinate de ordinea
operaiilor asupra bazei de date. Este esenial ca atunci cnd se termin
tranzacia asupra bazei de date aceasta s rmna ntr-o stare consistent.
Intuitiv, tranzacia este o succesiune de operaii: de citire, de scriere i de
calcul dintr-o, respectiv ntr-o baz de date ce constituie o unitate de
prelucrare care satisface proprietile A.C.I.D.
Unitatea de prelucrare se execut n totalitate adic tranzacia este
atomic (proprietatea A) i indivizibil (proprietatea I).
Begin
INPUT { NRC, CNPC, OBS }
EXEC SQL
UPDATE cursa
SET CAP=CAP-1
WHERE NR=NRC
EXEC SQL
INSERT INTO rezervare (NR, CNP, OBS)
VALUES (NRC, CNPC, NULL)
OUTPUT (Rezervare efectuat)
End.
Exemplul 2. Rentorcndu-ne la exemplul 1 s-ar putea ca s nu fie
locuri la cursa i data cerut.
TRANSACTION rezervare
Begin
INPUT (NRC, DATAC, NUME_CLIENT)
EXEC SQL
SELECT LOC_LIB, CAPAC INTO Z1, Z2
FROM cursa
WHERE NR=NRC AND DATA=DATAC;
IF Z1=Z2
Then
OUTPUT ( nu exist locuri libere)
ROLLBACK
End
Else
EXEC SQL
UPDATE curs
SET LOC_LIB=LOC_LIB -1
WHERE NRC=NR AND DATA=DATAC;
EXEC SQL
INSERT INTO rezervare (NRC, DATAC, NUME_CL)
VALUES (NRC, DATAC, NUME_CL, NULL)
OUTPUT (Rezervare)
END
COMMIT.
1. Ai Ei Fi Gi
2. () ai,j, ai,k Ei i exist un element de dat x la care acestea se
aplic fie ca:
a ij R (x ) i a ik W (x ) fie
a ij W (x ) i a ik R (x) fie
a ij W (x ) i a ik W (x )
atunci fie aij i aik fie aik i aij
3. aij Ei avem aij i aik Fi
Prima condiie definete domiciliul A al relaiei de preordine .
A doua condiie arat c ntre orice dou operaii conflictuale exist o
ordine de preceden n execuie. Dou operaii sunt conflictuale dac
ambele acceseaz aceiai dat i cel puin una din ele este de tip scriere.
Ordinea de preceden n execuie a operaiilor determin tranzacia.
Condiia 3 arat c toate operaiile tranzaciei trebuie s precead condiia
de terminare.
Exemplul 1. Fie tranzacia T dat de secvena.
READ( a )
READ(b)
bba
WRITE (b)
READ(c )
cca
WRITE (c )
COMMIT
End.
Aceasta este numit tranzacie simpl (plat).
O alt alternativ este ca o tranzacie s includ alte tranzacii cu
puncte proprii de nceput i commit.
Aceste tranzacii sunt numite tranzacii nested.
Begin tranzaction rezervare
Begin
Begin tranzaction cursa
...
End cursa
Begin Hotel
...
End hotel
Begin maina
...
End maina
End
Multe din agenii fac rezervri pe lng bilete i de camere la hotel i de
maini.
10
13
CONTROLUL CONCURENEI
T1: READ A
T2:
READ A
T1: A := A 1
T1: WRITE A
T2:
A := A 1
T2:
WRITE A
n aceast secven atributul A dup terminarea celor dou
tranzacii T1 i T2 ia aceeai valoare. Dac A ar reprezenta un atribut de
rezervare al unui loc atunci aceast secven ar duce la vnzarea unui loc de
mai multe ori.
Anomalia determinat de citiri de date intermediare se ntmpl
de obicei cnd una din tranzacii este anulat. Aceasta este ilustrat de
urmtoarea secven de tranzacii:
1
2
3
4
5
6
7
T1:
T1:
T1:
T2:
T1:
T2:
T2:
READ A
A := A + 1
WRITE A
READ A
ROLLBACK
A := A + 1
WRITE A
15
T2
READ A
A := A + 10
WRITE A
READ B
B := B + 10
WRITE B
READ B
B := B 20
WRITE B
READ C
C := C + 20
WRITE C
T1
T2
READ A
READ B
A := A 10
B := B 10
WRITE A
WRITE B
READ B
READ C
B := B + 10
C := C + 20
WRITE B
WRITE C
Tranzacii seriale
T1
T2
17
READ A
A := A 10
READ B
WRITE A
B := B + 20
READ B
WRITE B
B := B + 10
READ C
WRITE B
C := C + 20
WRITE C
Tranzacie neserial
Evitarea interblocrii i posibilitatea serializrii unor programe sunt
asigurate prin impunerea unor condiii asupra ordinii de efectuare a
fiecrei tranzacii numit protocol. n intervalul de timp dintre efectuarea
unei operaii LOCK A dintr-o tranzacie i urmtoarea operaie UNLOCK
A se spune c tranzacia deine sursa A. Pentru fiecare pereche LOCK A i
UNLOCK A se asociaz o funcie f(A) care arat cum se transform. Dac
s 0 este valoarea iniial n care blocrile i deblocrile lui A au asociate
funciile f 1 ,f 2 ,..., f k d n final pentru A valorile f k (...f 0 (s 0 )).
0 START ATS, Algoritm de testare a serializabilitii
1 INPUT S = T1, T2, ..., Tk
2 CALL DDAG(S; G)
3 IF G cicluri
THEN
3.1 OUTPUT S nu este serializabil
ELSE
3.2 OUTPUT S este serializabil
4 STOP
Exist un protocol simplu care asigur serializabilitatea numit protocol
n dou faze care impune tuturor tranzaciilor de a face nti blocrile i
apoi deblocrile.
Teorema 1 Programarea S este serializabil dac conine tranzacii n
dou faze.
Din algoritm rezult c S conine un graf G care cuprinde un ciclu
T il T ir T is ... T ik T il
ceea ce duce la deblocarea lui T ij , se face dup blocarea lui T ik .
18
19