Documente Academic
Documente Profesional
Documente Cultură
pdf
c2_pbd.pdf
c3_pbd.pdf
c4_pbd.pdf
c5_pbd.pdf
c6_pbd.pdf
c7_pbd.pdf
c8_pbd.pdf
c9_pbd.pdf
Proiectarea bazelor de date
Curs 1
Scopul cursului:
nelegerea i deprinderea modului de proiectare
a bazelor de date i a aplicaiilor de baze de date
Mod de evaluare:
- 50% activitatea din timpul anului
- 50% nota la examenul final
Bibliografie:
- Baze de date. Proiectare. Gestiune. Implementare. Thomas Connolly, Carolyn Begg, Anne Strachan
Ed. Teora 2001
- Baze de date relationale M. Fotache
- Baze de date si gestiunea tranzactiilor R. Dollinger, Ed. Albastr
Avantaje: memorarea convenabil i eficient a datelor i posibilitatea generrii de informaii din volume
mari de date
Eficien i scalabilitate n ceea ce privete accesul la date i regsirea acestora
Independena datelor
Redundan controlat
Posibilitatea de a asigura integritatea i securitatea datelor
Faciliti de acces concurent asupra datelor i posibilitatea recuperrii acestora n cazul unui defect
ncurajarea introducerii standardelor
Administrarea uniform a datelor
Analiza datelor ( tehnici OLAP i Data Mining)
Specialiti Nespecialiti
grad
October 15, 2004 10
Chei relaionale
Supercheie un atribut sau un set de atribute care identific n mod unic un tuplu
(nregistrare) din cadrul unei relaii.
Cheie candidat supercheie pentru care nici o submulime nu este supercheie n
relaia respectiv.
Cheie primar cheia candidat selectat pentru a identifica tuplurile unei relaii
Cheie strin un atribut sau o mulime de atribute din cadrul unei relaii provenite
din propagarea unei chei candidat a unei alte relaii.
Integritate relaional
Integritatea domeniului constrngeri de domeniu
Integritatea entitilor ntr-o relaie de baz nici un atribut al unei chei primare
nu poate fi null
Integritatea referenial orice valoare a unei chei strine dintr-o relaie trebuie
s se gseasc printre valorile cheii candidat din care provine.
Este un graf:
nodurile reprezint tipuri de entiti, tipuri de
legturi i atribute,
Diagrama ER arcele leag tipurile de entiti de atributele lor,
respectiv tipurile de entiti cu simbolurile asocierilor
corespunztoare
Notaie simbolic ce descrie schema unei baze de date
October 15, 2004 15
Exemple de diagrame ER
Constrangere
de cardinalitate
Tip de Cheie
Legatura
Atribut (binara)
sold
Tip de
entitate
telefon Client inchiriaza Videocasete
Atribut cu
valori multiple
pret
Nu_inchirieri adresa Data rating
Data_retur
achiz
Data_inch termen lungime
str
Atribut
derivat Atribut
localit compus
Cod_postal
sotie copil
Nume alternativ
1 M pt. asociere
Casatorit Copilul
Persoana
cu lui
Parinte al
1 1..2
sot cnp parinte
Salariu_ora Ore_lucrate
ISA
contractid
Colab_extern Ang_contract
nume categorie
pre
Produs
Angajai
Sal_ora Ore_lucr
ISA
contractid
Modelarea constrngerilor
Entiti slabe
Principii de proiectare conceptuala
October 15, 2004 1
Modelarea constrngerilor n diagrama ER
Constrngerile - informaii adiionale asupra acelor aspecte ale
realitii care nu pot fi modelate prin entiti i prin legturile
dintre acestea
Constrngeri structurale - restricii impuse asupra legturilor:
constrngeri de cardinalitate
constrngeri de participare
Alte tipuri de constrngeri - legate de atribute
chei
constrngeri de valoare unic
constrngeri de integritate referenial
constrngeri de domeniu
constrngeri generale
Constrngeri de participare
Determin dac existena unei entiti depinde de faptul c aceasta este
asociat unei alte entiti printr-o legtur
constrngeri -
totale - existena unei entiti necesit existena unei entiti asociate
pariale
n diagrame ER constrngerile de participare total sunt simbolizate prin
linii duble (sau ngroate)
Din_data
name
nume dnume
cnp sex did buget
Lucreaza_in
Din_data
October 15, 2004 4
Constrngeri de participare in SQL
Constrngerile de participare pot fi descrise in SQL
pot fi surprinse constrngerile de participare care implic un tip de
entitate dintr-o legtur binar chiar fr a recurge la clauza CHECK
CREATE TABLE Dep_Adm(
did INTEGER,
dnume CHAR(20),
buget REAL,
cnp CHAR(11) NOT NULL,
din_data DATE,
PRIMARY KEY (did),
FOREIGN KEY (cnp) REFERENCES Angajati ,
ON DELETE NO ACTION)
produce
v s.
produce
<100
Produse produce Companie
ar Preedinte Persoan
Concluzii:
tipurile de entiti i atributele trebuie s reflecte realitatea.
legturile trebuie stabilite a.. s aib un sens dat de ceea ce se cunoate
despre realitatea modelat.
Cumpr Magazin
Adresa_pers Nume_pers
Produs
Cumpr Magazin
Persoan
T Entitate vs atribut
T Entitate vs legtur
T Legturi binare vs legturi ternare
nume
cnp sex
din dname
Angajai did budget
Administr2 Departament
ISA
Manageri dbuget
nume
cnp sex cnume ddn
Pensie
pid valoare
Proiectare gresita
Pensionar
Angajai
Furnizor
Beneficiar
Pensie
pid valoare
GESTIUNEA TRANZACIILOR 1
Curs 3
January 5, 2005 1
Gestiunea tranzaciilor
Ce sunt tranzaciile? Exemple
Proprietile ACID
Planificarea tranzaciilor
Execuia concurent a tranzaciilor
Controlul concurenei bazat pe blocri
Controlul concurenei prin marci de timp
Gestiunea interblocrilor n baze de date centralizate
January 5, 2005 2
Ce sunt tranzaciile?
Tranzacia - o aciune sau o serie de aciuni efectuate de ctre un singur
utilizator sau de ctre un program aplicaie, prin care se acceseaz sau se
modific coninutul bazei de date.
unitatea logic de prelucrare din baza de date -asigur coerena i
sigurana.
O baz de date este coerent (consistent) dac respect toate
constrngerile de integritate a datelor definite asupra sa.
garantat indiferent de faptul c tranzacia a fost executat concurent cu alte
tranzacii sau c au aprut defecte n timpul execuiei acesteia.
Sigurana bazei de date se refer la tolerana acesteia fa de defecte
i la capacitatea de recuperare dup apariia unui defect.
January 5, 2005 3
Exemple:
Profesor (pid, nume, funcie, salariu)
Cursuri (codc, numec, pid)
Actualizarea salariului unui profesor, cunoscndu-se
identificatorul acestuia (pid=x).
Read(pid=x, salariu)
Salariu= salariu*1,5
Write (pid=x, salariu)
January 5, 2005 4
tergerea unui profesor, cu identificatorul pid=y (pe lng tergerea
tuplului din relaia Profesor este necesar gsirea tuturor tuplurilor din
relaia Cursuri pe care le susine profesorul respectiv i atribuirea lor altui
profesor - posibil unuia nou, care are pid=z). Secvena operaiilor este
urmtoarea :
Delete(pid=y)
For toate nregistrrile din Cursuri, codcurs
Begin
Read(codc=codcurs, pid)
If (pid=y) then
Begin
Pid=z
Write (codc=codcurs, z)
End
End.
dac nu sunt efectuate toate aceste actualizri baza de date se va afla ntr-o
stare incoerent.
January 5, 2005 5
Urmrirea vnzrilor respectiv stocurilor pentru produsele unei ntreprinderi:
STOC(codpr,den, pret, cant)
CLIENTI (codc, nume,adresa)
VNZRI(codc, codpr, cantv)
-nregistrarea unei vnzri - introduc codc, codpr i cantv n relaia Vnzri.
- secven SQL integrat ntr-un mediu de programare (Pascal), astfel:
Begin_transaction Vinzari
Begin
Input(codprod, codcli, cantit)
Exec SQL
Tranzacia este corect?
UPDATE Stoc; Realitatea este reprezentat
SET cant=cant-cantit; corespunztor?
WHERE codp=codprod
Exec SQL
INSERT INTO Vnzari (codc, codp, cantv);
VALUES (codcli, codprod, cantit)
Output (Vanzare efectuata)
End
January 5, 2005 6
Begin_transaction Vnzari
Begin
Input(codprod, codcli, cantit)
Exec SQL
SELECT cant FROM Stoc WHER codp=codprod INTO temp
If temp.cant=0 then
Begin
Output( Nu mai exist produsul in stoc)
ABORT
End
else
begin
Exec SQL
UPDATE Stoc SET cant=cant-cantit WHERE codp=codprod
Exec SQL
INSERT INTO Vnzari (codc, codp, cantv);
VALUES (codcli, codprod, cantit)
COMMIT
Output (Vanzare efectuata)
End
End
January 5, 2005 7
Caracteristici ale unei tranzacii
tranzacia poate avea dou rezultate
dac aceasta execut cu succes toate operaiile prevzute:
tranzacia a fost efectuat,
January 5, 2005 8
O tranzacie efectuat nu mai poate fi abandonat. Efectul
su, n cazul n care este greit, va fi anulat printr-o alt
tranzacie numit tranzacie compensatoare.
Comanda de validare a unei tranzacii are rol dublu.
indic SGBD-ului momentul de la care efectele tranzaciei pot fi
reflectate n baza de date i devin vizibile altor tranzacii.
marcheaz momentul de la care efectele tranzaciei nu mai pot fi
anulate.
validare este important n cazul sistemelor concurente
previne o serie de fenomene nedorite cum ar fi efectul de domino
January 5, 2005 9
Dac o tranzacie Tj ieste abandonat, toate operaiile executate trebuie
anulate. Mai mult, dac Tj citete un obiect care a fost scris de tranzacia Ti,
Ti trebuie de asemenea abandonat
cele mai multe sisteme evit astfel de abandon n cascad prin meninerea
datelor blocate pn n momentul validrii tranzaciei.
dac Ti scrie un obiect , Tj l poate citi numai dup ce Ti este validat.
January 5, 2005 10
Tranzacii - concluzii
O tranzacie este o aciune a unui utilizator sau a unui program, care este
vzut de SGBD ca o succesiune a urmtoarelor operaii:
READ (citire): obiectul bazei de date este citit de pe disc n pagina de
buffer
WRITEs (scriere) obiectul bazei de date este scris din buffer pe disc
ABORT (abandon):ultima aciune a unei tranzacii care a euat
COMMIT (validare): ultima aciune a unei tranzacii care a fost
efectuat cu succes
efectele unei tranzacii abandonate trebuie anulate complet;
baza de date este modificat permanent numai n urma unor tranzacii
validate.
January 5, 2005 11
Proprietile tranzaciilor (ACID)
Atomicitate: orice tranzacie este o unitate elementar de prelucrare
execuia se face dup regula totul sau nimic -
dac tranzacia este ntrerupt, sistemul trebuie s asigure terminarea
tranzaciei
fie prin completarea execuiei operaiilor rmase de efectuat
fie prin anularea efectului operaiilor deja executate
January 5, 2005 12
Proprietile tranzaciilor (ACID)
Izolare: orice tranzacie are acces doar la strile consistente ale bazei de
date
modificrile fcute de o tranzacie sunt inaccesibile altor tranzacii concurente
pn n momentul validrii acesteia,
T creaz iluzia c fiecare tranzacie este executat singur n sistem.
este asigurat prin algoritmii de control al concurenei.
elimin efectul de domino.
January 5, 2005 13
Gestiunea tranzaciilor
January 5, 2005 14
Admin de Planificato-
- administratorul de tranzacii tranzacii rul
- coordoneaz executarea
tranzac. n numele programelor
de aplicaie; Admin. Admin de
de buffer refacere
- planificatorul -
implementeaz o anumit
strategie de control al
concurenei. Admin de Admin de fiiere
acces
- maximizeaz concurena
fr a permite ca tranzaciile Admin de
efectuate concurent s subsisteme
interfereze.
- administratorul de refacere -garanteaz c, n cazul apariiei unei
pene, baza de date va fi restaurat n starea n care se afla nainte de
nceperea tranzaciei.
- administratorul de buffer - utilizat pentru a transfera datele ntre
capacitatea de stocare pe disc i memoria principal
January 5, 2005 15
Controlul concurenei
Controlul concurenei - procesul de administrare a operaiilor simultane
din baza de date astfel nct acestea s nu interfereze unele cu altele.
T dac cererile de acces sunt de tipul regsire, - secvenializarea
accesului la mediul de memorare
U bazele de date statice, unde mai muli utilizatori interogheaz baza de date
simultan.
T dac unele cereri sunt de tipul actualizare este necesar aplicarea unor
strategii adecvate de tratare a cererilor de acces.
Cea mai simpl cale de a evita interaciunile -execuia independent a
tranzaciilor
minimizeaz eficiena sistemului.
nivelul de concuren - numrul de tranzacii executate concurent
mecanismele de control al concurenei urmresc un compromis ntre
meninerea consistenei bazei de date i obinerea unui nivel de concuren
ct mai ridicat.
January 5, 2005 16
Anomalii de interferen
dou tranzacii Ti i Tj sunt susceptibile la interferen dac
rezultatul execuiei concurente a acestora poate fi diferit de
rezultatul execuiei seriale
dou tranzacii Ti i Tj sunt conflictuale dac ele sunt
concurente i susceptibile la interferen.
anomalii de interferen.
anomalia de actualizare pierdut;
January 5, 2005 17
Actualizarea pierdut
- corespunde unui conflict de tip scriere-scriere
- rezultatul actualizrii efectuate de o tranzacie se
pierde ca urmare a reactualizrii aceleiai date de
ctre o alt tranzacie, fr ca reactualizarea realizat
prin aceata s fie influenat de rezultatul primei
reactualizri.
T1 T2 Valoarea lui A
READ A A
READ A A
A=A-10 A-10
WRITE A A-10
A=A+10 A+10
WRITE A A+10
January 5, 2005 18
Citirea improprie
- corespunde unui conflict de tip scriere-citire i
- apare atunci cnd o tranzacie surprinde o stare temporar
inconsistent a bazei de date
T1 T2 Valoarea
A B C
READ A A
A=A-10 A-10
WRITE A A-10
READ A A-10
READ B A-10 B
C=A+B A-10 B A-10+B
WRITE C B A-10+B
READ B A-10 B
B=B+10 B+10
WRITE B B+10
January 5, 2005 19
Citirea nereproductibil
T corespunde unui conflict de tip citire-scriere i apare atunci cnd aceeai
tranzacie gsete valori diferite la citiri repetate ale aceleiai date
T1 T2 Valoarea
A B C
READ A A
B=A A A
WRITE B A A
READ A A A
A=A+10 A+10 A
WRITE A A+10 A
A
READ A A+10 A
C=A A A+10
WRITE C A
January 5, 2005 20
Primitivele LOCK i UNLOCK
T Permit blocarea temporar, respectiv deblocarea unor valori de ctre o
tranzacie- cel mai simplu mecanism care asigur excluderea mutual.
T LOCK() i UNLOCK() permit sincronizarea tranzaciilor
T Uniti de acces - poriuni ale unei baze de date care pot constitui obiectul
unei operaii de blocare
January 5, 2005 21
Proiectarea bazelor
de date
GESTIUNEA TRANZACIILOR 2
Curs 4
January 5, 2005 1
Planificare
T Planificarea unui set de tranzacii -ordinea de execuie a pailor
elementari (LOCK, READ, WRITE, etc) ai setului de tranzacii
este vorba despre pai din tranzacii diferite
T Dac pentru fiecare tranzacie exist un abort sau commit planificarea
este complet
T1 T2
R(A)
W(A)
R(B)
W(B)
R(C)
W(C)
January 5, 2005 3
Exemplu
Se consider urmtoarele planificri posibile
T1: A=A+100, B=B-100
T2: A=1.06*A, B=1.06*B
January 5, 2005 4
Planificri echivalente i planificri
serializabile
Planificri echivalente: Pentru orice stare a bazei de date, efectul (asupra
unei mulimi de obiecte din baza de date) al execuiei primei planificri este
identic cu efectul execuiei celei de-a doua planificri.
January 5, 2005 5
Algoritmi de control al concurenei
Funcia principal pentru un mecanism de control al concurenei este de a
genera o planificare serializabil pentru execuia tranzaciilor active din
sistem.
Controlul concurenei prin blocare - accesul mutual exclusiv al
tranzaciilor la datele partajate
controlul concurenei prin mrci de timp- ordoneaz execuia
tranzaciilor conform unui set de reguli
January 5, 2005 6
Controlul concurenei prin blocare
Perevenirea executriii unor secvene incorecte de operaii prin punerea n
ateptare a tranzaciilor care execut operaii conflictuale (acceseaz
aceeai dat i cel puin una dintre ele este de tip scriere)
folosete LOCK () i UNLOCK () plus o serie de restricii care elimin
planificrile neserializabile (protocol)
reguli:
o unitate de acces blocat de o tranzacie trebuie deblocat de aceeai
tranzacie
o tranzacie nu ncearc s blocheze o unitate de acces blocat deja
o tranzacie nu ncearc s deblocheze o unitate de acces blocat de o
alt tranzacie
o unitate de acces poate fi blocat la un moment dat de o singur
tranzacie care are acces exclusiv la aceast unitate
planificrile care respect regulile de mai sus = planificri legale
January 5, 2005 7
Exemplu
T1: LOCK A, LOCK B, UNLOCK A, UNLOCK B
T2: LOCK A, UNLOCK A
Ce se poate spune (din punct de vedere al legalitii) despre urmtoarea
planificare:
T1 T2
LOCK A
LOCK B
LOCK A
UNLOCK A
UNLOCK A
UNLOCK B
January 5, 2005 8
Algoritm de testare a serializabilitii
stabilete dac o anumit planificare a unui set de tranzacii este sau nu
serializabil.
examineaz ordinea n care diferitele tranzacii blocheaz fiecare
unitate de acces n cadrul planificrii date.
se poate exprima ca o problem de gsire a ciclurilor dintr-un graf
orientat numit graf de preceden.
1. nodurile grafului sunt tranzaciile
2. arcul orientat de la nodul Ti la nodul Tj, TiTj are
semnificaia c exist o unitate de acces pentru care tranzacia
Ti obine blocarea (LOCK UNLOCK) naintea tranzaciei Tj,
iar ntre Ti i Tj nici o alt tranzacie nu blocheaz aceast
unitate de acces.
TiTj arat c n orice planificare serial echivalent cu planificarea
iniial P, tranzacia Ti se execut naintea tranzaciei Tj.
Dac n graful de preceden exist un ciclu care include tranzaciile Ti i
Tj nu poate exista o planificare serial echivalent cu planificarea dat.
January 5, 2005 9
Algoritm de testare a serializabilitii
Dac graful de preceden nu are cicluri, atunci exist o planificare serial
echivalent
se poate determina o ordonare a tranzaciilor astfel nct Ti se execut
naintea lui Tj dac exist un arc TiTj.
Ordonarea se realizeaz cu ajutorul algoritmului de sortare topologic:
P1. dac graful de preceden nu are cicluri, atunci exist un nod care
nu este extremitate a nici unui arc. Se localizeaz acest nod, se elimin
din graf mpreun cu arcele adiacente iar tranzacia corespunztoare se
trece n lista de tranzacii a planificrii seriale.
P2. se reia P1 pn la epuizarea tuturor nodurilor.
Ordinea de eliminare a nodurilor din graful de preceden este chiar
ordinea de execuie a tranzaciilor n planificarea serial.
January 5, 2005 10
Algoritm de testare a serializabilitii
T1 T2 T3 T4
LOCK A
LOCK B
LOCK C
UNLOCK C
LOCK C
UNLOCK B
UNLOCK C T2
LOCK B
UNLOCK A
UNLOCK B T1
LOCK B T3
UNLOCK B
LOCK A
UNLOCK A T4
January 5, 2005 11
Ce se poate spune despre urmtoarea
planificare?
T1 T2 T3 T4
LOCK A
UNLOCK A
LOCK B
UNLOCK B
LOCK A
UNLOCK A
LOCK C
UNLOCK C
LOCK B
UNLOCK B
LOCK C
UNLOCK C
Este serializabil?
Dac NU de ce?
Dac DA, care este ordinea de execuie a tranzaciilor?
January 5, 2005 12
Forarea serializabilitii unui set de
tranzacii
Protocolul de blocare n dou faze (2PL):
toate operaiile de blocare preced prima operaie de deblocare
nu este necesar ca toate blocrile s se fac simultan
Teorem: Orice planificare legal a unei mulimi de tranzacii n dou faze
este serializabil.
Demo: prin reducere la absurd
Potentiale probleme interblocrile: poate exista un ciclu al tranzaciilor T1,
T2, ... , Tn, n care fiecare Ti ateapt de la predecesoarea sa s deblocheze
unitile de care are nevoie
January 5, 2005 13
Blocarea n dou faze (2PL)
2PL:
dac T acceseaz n scriere sau citire o unitate, obine mai
nti blocarea acesteia
dac T deblocheaz o unitate de acces, nu mai poate obine
o nou blocare
Blocrile sunt realizate automat de SGBD.
De ce este garantat serializabilitatea?
Punct de
blocare
Faza de
descretere
Faza de cretere
January 5, 2005 Timp 14
Tranzacii cu accese de tip read-only i read-write
se pot formula protocoale cu un grad mai nalt de concuren a operaiilor
- RLOCK cerere de blocare pentru citire (read-lock, shared lock)
dac o tranzacie blocheaz o unitate de acces n citire, atunci nici o alt
tranzacie nu poate obine blocarea n scriere a unitii respective, n
schimb, oricte tranzacii pot obine n acest timp blocarea n citire a
aceleiai uniti.
- WLOCK cerere de blocare pentru citire-scriere (read-write lock,
exclusive-lock).
este echivalent cu primitiva LOCK.
dac o tranzacie blocheaz n citire-scriere o unitate de acces, nici o alt
tranzacie nu va putea obine blocarea acestei uniti nici pentru citire nici
pentru citire scriere.
Ambele tipuri de blocare sunt anulate prin executarea primitivei
UNLOCK.
January 5, 2005 15
Mecanismul de blocare:
orice tranzacie care trebuie s acceseze o unitate de acces trebuie ca mai
nti s o blocheze n citire pentru a avea acces la citire sau n citire-scriere
pentru a avea acces att la citirea datelor ct i la modificarea lor;
dac unitatea de acces nu este blocat de alt tranzacie, cererea de blocare
va fi onorat;
dac unitatea de acces este blocat sistemul SGBD stabilete dac cererea
este compatibil cu modul de blocare existent.
U dac este cerut blocarea n citire pentru o unitate care este blocat cu
primitiva RLOCK cererea va fi aprobat. In caz contrar tranzacia trebuie s
atepte pn cnd unitatea de acces este eliberat;
o tranzacie blocheaz o unitate de acces pn cnd o elibereaz n mod
explicit n timpul execuiei sau pn cnd este terminat (efectuat sau
abandonat). Efectele operaiei de scriere vor deveni vizibile pentru alte
tranzacii numai dup ce unitatea de acces a fost deblocat pentru citire-
scriere.
January 5, 2005 16
Planificri legale
January 5, 2005 17
Planificri echivalente
T produc aceeai valoare final pentru toate
datele accesate;
T valorile datelor asupra crora se execut o
primitiv RLOCK sunt aceleai n ambele
planificri.
U valorile citite de diferitele tranzacii sunt aceleai
pentru ambele planificri.
January 5, 2005 18
Algoritmul de testare a serializabilitii
trebuie respectat o anumit ordine relativ a cuplurilor de accese:
se va ine seama de ordonarea relativ a urmtoarelor cupluri de acces:
read-write cu read-write, read-write cu read-only, read-only cu read-write.
Ordinea a dou accese de tip read-only este arbitrar.
Fie Ti i Tj dou noduri ale grafului G. Graful va conine un arc TiTj
dac:
Ti blocheaz n citire-scriere o unitate de acces , iar Tj este prima
tranzacie care blocheaz n citire-scriere aceeai unitate de acces dup
Ti;
Ti blocheaz n citire o unitate de acces , iar Tj este prima tranzacie
care blocheaz n citire-scriere aceeai unitate de acces dup Ti;
Ti blocheaz n citire-scriere o unitate de acces , iar Tj este oricare
dintre tranzaciile care blocheaz n citire aceeai unitate de acces
dup Ti;
Dac cele dou tranzacii blocheaz succesiv aceeai unitate de acces n
citire, ntre ele nu se traseaz nici un arc.
January 5, 2005 19
Exemplu
T1 T2 T3 T4
WLOCK A
RLOCK B
UNLOCK A
RLOCK A
UNLOCK B
WLOCK B
RLOCK A
UNLOCK B
WLOCK B
UNLOCK A
UNLOCK A
WLOCK A
UNLOCK B
RLOCK B
UNLOCK A
UNLOCK B
T1 T2 cicluri:
T1-T4 T3 T1,
T2 T4 T3 T2 i
T4 T1- T2 T4 T3 T1
T3
January 5, 2005 20
Exerciiu
Stabilii dac planificarea tranzaciilor prezentate mai jos este sau nu serializabil.
Dac NU indicai care sunt ciclurile n graful de preceden.
Dac DA gsii planificarea serial echivalent.
T1 T2 T3 T4
RLOCK A
UNLOCK A
RLOCK A
RLOCK B
RLOCK B
UNLOCK B
UNLOCK A
UNLOCK B
RLOCK A
UNLOCK A
WLOCK B
UNLOCK B
WLOCK A
UNLOCK A
January 5, 2005 21
Protocolul de blocare strict n dou faze
Dac T dorete s citeasc o unitate de acces trebuie s obin
mai nti o blocare RLOCK (SLOCK)
dac T dorete modificarea unei uniti de acces obine o
blocare WLOCK (XLOCK)
Pstreaz unitile de acces blocate pn la finalizare, cnd
le deblocheaz pe toate odat.
Garanteaz planificri serializabile i recuperabile!
Evit anomaliile de interferen!
January 5, 2005 23
Tratarea unei cereri de blocare
Accept blocarea
January 5, 2005 24
Mai mult despre logica componentei Lock Manager
January 5, 2005 25
Alte aspecte legate de blocare
Se presupune c T1 blocheaz un set de nregistrri
care satisfac o anumit condiie
ipoteza este valabil dac nu este adugat nici o
nregistrare care respect condiia dat n timp ce se
execut T1!
Sunt necesare mecanisme care garanteaz
validitatea acestei ipoteze blocarea indexului
Serializabilitatea la conflicte garanteaz
serializabilitatea numai n cazul n care mulimea de
obiecte este fix!
January 5, 2005 26
Date
Blocarea indexului Index
cond
Dac exist un index definit pe cmpul pe care se
impune condiia, T1 ar trebui s blocheze pagina de
index care conine intrrile care satisfac condiia
impus
dac nu exist nregistrri care satisfac condiia
dat, T1 trebuie s blocheze pagina de index
unde ar fi putut exista astfel de intrri!
Dac nu exist un index corespunztor, T1trebuie s
blocheze toate paginile i blocheaz fiierul / tabelul
pentru a preveni adugarea de noi pagini i pentru a
garanta c nu vor fi adugate nregistrri care
satisfac condiia impus.
January 5, 2005 27
Protocoale conservative
fiecare tranzacie emite toate cererile de blocare la nceputul execuiei sale
Avantaj:previne apariia interblocrilor
Dezavantaj: reduce nivelul de concuren al sistemului
nfomatare a tranzaciilor
o tranzacie T poate obine blocrile solicitate i poate intra n
execuie dac i numai dac:
toate unitile de acces pe care T dorete s le blocheze sunt deblocate,
nici o alt tranzacie aflat n coada de ateptare nu solicit blocarea unei
uniti de acces solicitate de T.
blocri cu predicat ( blocarea unui subset de tuple satisfcnd o anumit
condiie).
aceast condiie ar putea fi determinat doar n mod dinamic, n timpul
execuiei tranzaciei subsetul de tuple care se cere a fi blocat nu
este cunoscut la nceputul execuiei tranzaciei.
January 5, 2005 28
i protocoale agresive
- fiecare cerere de blocare este emis doar n
momentul cnd se dorete o scriere sau o citire n/din
unitatea de acces corespunztoare.
U Avantaj:un nivel mai ridicat de concuren al sistemului.
U Dezavantaj: nu se previne apariia interblocrilor.
rezolvare:
printr-o metod de detecie i ieire din interblocare;
prevenind interblocarea prin metoda ordonrii.
January 5, 2005 29
Grade de izolare
January 5, 2005 30
Izolare de gradul 1
tranzactia blocheaz pe toata durata executiei sale unitatile de acces in care
face scriere, dar nu blocheaz deloc unittile de acces din care face numai
citiri.
sunt tratate corect conflictele de tip scriere-scriere eliminata anomalia
de actualizare pierdut.
Nivelul de concurenta este ridicat.
tranzactia poate citi datele unor tranzactii nevalidate anomalia de citire
improprie sau de citire nereproductibil.
Izolare de gradul 2
blocheaz unitile de acces in care face scrierea pe toat durata execuiei
sale, in schimb datele care sunt doar citite se blocheaz numai pe durata
operaiei de citire.
trateaz corect conflictele de tip scriere-scriere si scriere-citire.
Nivelul de concurent este mediu.
January 5, 2005 31
Izolare de gradul 3
blocheaz pe toat durata executiei lor orice unitate de acces pe care o
acceseaz fie in scriere fie in citire.
sunt tratare corect toate tipurile de conflict si garanteaz
serializabilitatea planificrilor.
nivelul de concurenta este cel mai redus ( tranzactiile pot fi puse in
asteptare atat pentru operatiile de scriere cat si pentru cele de citire).
implicit in limbajele SQL si SQL2.
Intr-un sistem se pot executa tranzacii cu grade diferite de
izolare.
January 5, 2005 32
Proiectarea bazelor
de date
GESTIUNEA TRANZACIILOR 3
Curs 5
January 5, 2005 1
Controlul concurenei prin mrci de timp
tranzaciile se execut fr a folosi primitivele LOCK i
UNLOCK dac dou sau mai multe tranzacii se execut
concurent pot s apar planificri neserializabile ale acestora.
T nu se ncearc prevenirea apariiei unor planificri neserializabile
se folosesc mecanisme prin care s se poat detecta violarea
ordonrii seriale n cazul unei execuii concurente a unui set de
tranzacii.
dac apare o astfel de situaie, se abandoneaz tranzacia care a
ncercat execuia acelei operaii care ncalc ordinea serial.
pe baza informaiilor din jurnal se anuleaz efectele pariale ale
acestei tranzacii (operaii de tip UNDO) i se pune ntr-o coad
de ateptare n vederea relansrii ulterioare.
tranzacia va fi reluat imediat ce acest lucru este posibil.
January 5, 2005 2
Controlul concurenei prin mrci de timp
Idea: se aloc fiecrui obiect o marc de timp
U sunt asociate att tranzaciilor n curs la un moment dat ct i unitilor
de acces.
U o marc de timp este un numr unic generat de sistem pentru fiecare
cuant de timp pe durata funcionrii acestuia .
U dac se asociaz fiecrei tranzacii marca de timp a momentului
lansrii acesteia, atunci fiecare tranzacie va avea o marc unic.
dubl funcionalitate:
January 5, 2005 3
Valoarea mrcii de timp asociat unei uniti de
acces i poate schimba valoarea atunci cnd o
tranzacie acceseaz unitatea.
aceast valoare este dat de cea mai mare valoare
a unei mrci de timp asociat oricrei tranzacii
care a accesat unitatea respectiv.
T o unitate de acces poart marca celei mai noi
tranzacii care a citit/scris o dat din/n unitatea
respectiv.
January 5, 2005 4
T Mrcile de timp sunt utilizate pentru a fora
serializarea operaiilor efectuate de tranzacii,
T dac acest lucru nu este posibil la depistarea
unei tentative de violare a acestei ordini se
declaneaz procedura de abandonare a
tranzaciei care a cauzat incidentul
T algoritmi de ordonare:
algoritmul de ordonare total
algoritmul de ordonare parial.
January 5, 2005 5
Algoritmul de ordonare total
T Nu face distincie ntre operaiile de citire i cele de scriere.
Condiia de realizare a unei execuii concurente a
tranzaciilor care s fie echivalent cu o planificare serial
este ca accesul la unitile de acces s se fac n ordinea
apariiei acestora n sistem.
o tranzacie poate accesa o unitate de acces dac i numai
dac are o valoare a mrcii de timp asociate mai mare sau
egal cu valoarea mrcii de timp a unitii de acces
January 5, 2005 6
T Ti i Tj - dou tranzacii care vizeaz aceeai unitate de acces i i<j . (i i j
sunt valorile mrcilor asociate tranzaciilor)
T Iniial, toate unitile de acces au asociat o valoare a mrcii mai mic
dect valoarea mrcii oricrei tranzacii n curs.- m.
T m<i<j. Se pot distinge dou cazuri:
Prima tranzacie care face acces la unitate este Ti.
m<i deci se execut operaia cerut de Ti, iar noua valoare a mrcii
unitii de acces devine i.
urmeaz o cerere a tranzaciei Tj.
i<j operaia cerut de aceasta poate fi de asemenea executat.
valoarea mrcii asociate unitii de acces este j
Prima tranzacie care face acces la unitate este Tj.
m<j, se execut operaia cerut de Tj, iar noua valoare a mrcii unitii de
acces devine j.
Ti dar j>i deci operaia cerut de Ti nu poate fi executat. Se suspend
execuia lui Ti , se anuleaz efectele acesteia i se pune ntr-o coad de
ateptare
January 5, 2005 7
Exemplu
T1 T2 Marca valorii A
0
READ A 1
READ A 2
A=A+1 2
A=A+1 2
WRITE A 2
WRITE A Suspendare T1
January 5, 2005 8
Algoritmul de ordonare parial
face distincie ntre operaiile de citire i cele de scriere.
structura mrcilor asociate unitilor de acces este compus
din dou elemente:
- marca de citire ( r ) cea mai mare valoare de marc a
unei tranzacii care a fcut o citire din unitatea de acces:
- marca de scriere ( w ) cea mai mare valoare de marc a
unei tranzacii care a fcut o scriere n unitatea de acces.
January 5, 2005 9
T folosite pentru depistarea unor situaii care nu ar
putea s apar n cazul unei execuii seriale.
Nu este posibil ca o tranzacie s citeasc o valoare care
nu a fost scris nc.
o tranzacie Ti nu poate citi o dintr-o unitate de acces avnd marca
de scriere w>i. Aceast tentativ duce la abandonarea tranzaciei
Ti i la reluarea ei ulterioar.
Nu este posibil ca o tranzacie s scrie o valoare care deja
a fost citit.
o tranzacie Ti nu poate scrie ntr-o unitate de acces cu marca de
citire r>i. In acest caz tranzacia ti va fi abandonat.
January 5, 2005 10
Fie o tranzacie Ti care dorete efectuarea unei operaii op
asupra unei uniti de acces avnd marca de citire r i marca
de scriere w.
dac op=READ i i>=w atunci citete i actualizeaz
marca r la valoarea i.
dac op = WRITE i i>=r i i>=w atunci scrie i
actualizeaz marca w la valoarea i
dac op=WRITE, i>r i i<w atunci nu se face nimic
dac op=READ i i<w atunci abandoneaz Ti
dac op= WRITE i i<r atunci abandoneaz Ti.
January 5, 2005 11
Exemplu
T20 T15 T18 Mrci A Mrci B Mrci C
R=0 R=0 R=0
W=0 W=0 W=0
READ B R=20
READ A R=15
READ C R=18
WRITE B W=20
WRITE A W=20
WRITE C Suspend T15
WRITE A Fr efect
READ B Suspend T18
January 5, 2005 12
Gestiunea interblocrilor n bazele de date centralizate
January 5, 2005 13
Graful ateptrilor - graf unde nodurile sunt reprezentate de
mulimea tranzaciilor concurente care i mpart acelai set de
uniti de acces,
arcele Ti Tj ( cu semnificaia c Ti ateapt pe Tj) - n situaia n care
Ti cere blocarea unei uniti de acces i aceast cerere nu poate fi
acceptat deoarece unitatea respectiv este blocat deja de tranzacia Tj.
conine cicluri dac i numai dac exist interblocri.
T1 T2
January 5, 2005 14
Metodele pentru rezolvarea interblocrilor...
January 5, 2005 15
Metode de prevenire a interlocrilor
Metoda cererilor anticipate (utilizarea protocoalelor de blocare
conservative): fiecare tranzacie blocheaz toate unitile de acces de care
are nevoie n avans (metod neaplicabil n practic)
dac o unitate de acces nu poate fi obinut, nu va fi blocat nici o alt
unitate. Tranzacia ateapt i ncearc la un momemt ulterior blocarea
tuturor unitilor de acces.
Dezavantaj:unitile de acces pot fi blocate o perioad mai
mare dect este necesar -> scade nivelul de concuren n
sistem
apare fenomenul de amnare nedefinit a tranzaciilor
imposibilitatea precizrii anticipate a tuturor unitilor de acces
necesare
January 5, 2005 16
Metode de prevenire a interlocrilor
Metoda ordonrii: stabilirea unei relaii de ordine peste mulimea
unitilor de acces i imposibilitatea tranzaciilor de a bloca unitile altfel
dect n aceast ordine prestabilit.
Se neag condiia de ateptare circular
dezavantaje:
impune restricii programatorilor n elaborarea tranzaciilor -
cererile de acces la date trebuie s respecte ordinea impus de
sistem
se reduce nivelul de concuren al sistemului
January 5, 2005 17
Metode de prevenire a interlocrilor
Metoda ateptrii condiionate: se presupune c Ti ncearc
blocarea unei uniti A, dar acest lucru nu este posibil
deoarece aceasta este blocat de Tj.
ateptarea condiionat : dac Tj nu ateapt s blocheze uniti de
acces blocate de alte tranzaci, atunci Ti este pus n coada de ateptare,
n caz contrar Ti este abandonat.
January 5, 2005 18
Metode alternative...
January 5, 2005 19
Metode de evitare a interlocrilor
nu impun restricii permanente,
acioneaz in momentul cnd este iminent producerea unei interblocri.
mpiedicarea apariiei unui lan circular de ateptare.
se bazeaz pe decizii luate dinamic in momentul in care se detecteaz faptul
c alocarea unei resurse ar putea duce la interblocare. Acest lucru permite
un nivel mai ridicat de concuren n sistem.
sistemele tranzacionale folosesc mrcile de timp asociate tranzaciilor:
realizeaz o prioritate a acestora
rezolv interblocrile prin abandonarea tranzaciilor n raport de
prioritatea acordat.
doi algoritmi de evitare a interblocrilor:
WAIT - DIE
WOUND - WAIT
January 5, 2005 20
Algoritmul WAIT- DIE
Nu abandoneaz niciodat o tranzacie care blocheaz o
unitate de acces solicitat de alt tranzacie
este un algoritm nonpreemtiv
fie tranzaciile Ti i Tj
dac i < j (Ti este mai veche dect Tj) Ti este pus n ateptare
dac i>j (Ti mai recent dect Tj) se abandoneaz Ti (Ti dies)
i se reia mai trziu cu aceeai marc de timp
favorizeaz terminarea tranzaciilor mai tinere cu resursele
deja alocate, in timp ce tranzaciile anterioare acestora ( mai
btrne) pot fi puse n ateptare atunci cnd solicita resurse.
favorizeaz fenomenul de mbtrnire a tranzaciilor - accesul
acestora la resurse este mai dificil dect al tranzaciilor tinere.
January 5, 2005 21
Algoritmul WOUND-WAIT
Versiunea preemptiv a metodei
dac i < j (Ti este mai veche dect Tj) atunci Tj este
abandonat (Ti wounds Tj) i este reluat ulterior cu
aceeai marc de timp
dac i>j (Ti este mai recent dectTj) Ti este pus n
ateptare
favorizeaz tranzaciile mai vechi care pot elimina tranzaciile
mai noi dac acestea controleaz resurse solicitate de primele.
January 5, 2005 22
Cei doi algoritmi:
garanteaz att evitarea interblocrilor (deadlock) cat si
relurile repetate de tranzacii (livelock).
WAIT-DIE
if i<j then Ti asteapt
else abandoneaz Ti
WOUND-WAIT
if i<j then abandoneaza Tj
else Ti asteapt
January 5, 2005 23
Metode de detecie i ieire din interblocare
nu impun nici un fel de restricii n funcionarea sistemului,
cererile de resurse sunt satisfcute oridecte ori acest lucru este posibil.
sistemul funcioneaz la nivelul de concuren maxim i fr costuri
suplimentare de execuie ct timp nu se detecteaz nici o interblocare.
la apariiei unei interblocri (a unei situaii suspecte de interblocare) se
activeaz mecanismul de ieire din interblocare - selectarea uneia sau a
mai multor tranzacii care vor fi abandonate (ruperea lanurilor circulare
de ateptare).
U metod extern: folosirea unui ceas de gard fixat la o valoare prestabilit.
Orice tranzacie care este in ateptare pe o durat mai lunga dect cea
prestabilit va fi abandonata (suspect de implicarea ntr-o interblocare).
T Dezavantaj:este posibil s fie abandonate i tranzacii care pot fi n
ateptare din alte motive dect interblocarea.
U mecanismul intern: examinarea cererilor de blocare. Se construiete graful de
ateptare al tranzaciilor. In cazul depistrii unui ciclu, cel puin una din
tranzaciile implicate n interblocare trebuie suspendat.
January 5, 2005 24
Alegerea ...victimei n interblocri
T Problema :dac se cunoate costul suspendrii oricreia dintre
tranzaciile implicate ntr-o interblocare trebuie ales subsetul
de tranzacii care vor fi suspendate a.. s fie minimizat costul
pe ansamblul operaiei de ieire din interblocare.
T Exist mai multe metode alternative de alegere a tranzaciei
care trebuie suspendat:
U cea care a blocat ultima
U cea mai tnr tranzacie
U tranzacia care utilizeaz cele mai puine resurse
U tranzacia care a realizat cele mai puine blocri
U tranzacia care a fost reluat de cele mai puine ori
U dac s-au format mai multe cicluri, tranzacia care rezolv
mai mult de un ciclu
January 5, 2005 25
Preventie vs. Detectie
Preventia poate duce la abandonarea prea multor tranzacii
Detectia poate permite interblocrilor s consume resurse nejustificat
U acestea pot fi detectate dar sunt consumatoare de timp
Rezultatul:
U este preferat detecia -> interblocrile sunt relativ rare
U dac se manifest interblocri frecvente trebuie reconsiderat schema
de execuie a tranzaciilor!
January 5, 2005 26
Infometarea tranzaciilor
1. O tranzacie este nfometat dac nu se poate executa pe o perioad
nedefinit, n timp ce alte tranzacii din sistem continu mormal.
U Poate s apar dac schema de ateptare a unitilor de acces blocate
nu este corect i acord prioritate unor tranzacii n defavoarea altora.
January 5, 2005 27
Metode de prevenire a nfometrii tranzaciilor
January 5, 2005 28
Proiectarea bazelor
de date
GESTIUNEA TRANZACTIILOR 4
Curs 6
1
REZISTENTA LA DEFECTE
? - toleranta fata de defecte a sistemului - capacitatea unui
sistem de a continua sa functioneze corect n ciuda
manifestarii unor defecte
? - capacitatea de recuperare a unui sistem dupa aparitia unui
defect care a cauzat scoaterea sa temporara din functiune - se
refera la posibilitatea sistemului de a reveni la o stare
consistenta anterioara manifestarii defectului si de a-si relua
functionarea pornind de la aceasta stare, ca si cnd defectul nu
ar fi aparut.
2
Toleranta fata de defecte
? Fiabilitatea unui sistem este probabilitatea ca acesta sa functioneze
fara defecte un interval de timp dat.
? utilizata pentru caracterizarea sistemelor pentru care nu sunt acceptate
ntreruperi in functionare
? Disponibilitatea unui sistem este probabilitatea ca la un moment dat
acesta sa fie n stare de buna functionare.
? este o functie de timp si caracterizeaza acele sisteme care pot fi scoase
temporar din functiune.
? este afectata de doi factori, si anume:
? frecventa de aparitie a defectelor
3
Capacitatea de recuperare (refacere) a bazei de date
? Recuperarea bazei de date este procesul de restaurare a bazei da date
ntr-o stare corecta, n cazul aparitiei unui defect.
? 1. Defecte ale calculatorului (system crash): erori soft sau hard aparute
pe durata executarii tranzactiilor.
? este posibila pierderea continutului memoriei interne.
? 2. Erori de sistem sau erori ale tranzactiilor :
? erori n sistem (depasirea de format sau mpartirea la zero).
? eroarea n tranzactii se poate manifesta datorita parametrilor eronati sau
datorita erorilor logice de programare.
? utilizatorul poate ntrerupe executia unei tranzactii.
? 3. Erori locale sau conditii exceptionale detectate de o tranzactie:
? ?conditii care necesita abandonarea tranzactiilor (stocul de produse solicitate
nu acopera cererea sau este zero)
? -un abandon prin program (ABORT) al tranzactiei poate cauza o eroare
4
? 4. Restrictii impuse de controlul concurentei:
? metodele de control al concurentei pot decide abandonarea unei
tranzactii, pentru a fi reluata mai trziu, datorita violarii serializabilitatii
sau datorita interblocarilor.
? 5. Defecte ale discurilor:
? anumite date pot fi pierdute de pe disc datorita erorilor de citire/scriere
din cadrul unei tranzactii
? 6. Catastrofe naturale sau conditii nefavorabile:
? defecte ale surselor de alimentare,
? defecte ale sistemelor de aer conditionat,
? incendii,
? sabotaje,
? suprascrierea sau stergerea accidentala a discurilor
? recuperarea dupa dezastre
5
Facilitati oferite de un SGBD
? sistemul SGBD pune la dispozitie urmatoarele facilitati de
asistenta a refacerii:
? un mecanism de salvare de siguranta, care sa faca copii de
siguranta periodice ale bazei de date si ale fisierului jurnal;
? facilitati de urmarire a sesiunilor de lucru, care sa pastreze
evidenta starii curente a tranzactiilor si modificarilor din baza de
date;
? facilitati de creare a punctelor de reluare (control) care sa
permita ca reactualizarile n curs din baza de date sa fie facute
permanente
? un administrator de recuperare (refacere) care permite
sistemului sa refaca baza de date ntr-o stare coerenta n urma unei
pene.
6
Administratorul de recuperare (AR)
? functiuni prin care se realizeaza rezistenta la defecte.
? proprietatile de atomicitate si durabilitate a tranzactiilor.
? orice transfer n si din baza de date se face prin intermediul buffer-elor
(memorii tampon)->controlate de catre administratorul de buffer ( pastreaza
in memorie cele mai recente date accesate).
? Fizic, memoria tampon - parte a memoriei principale a calculatorului
(memorie volatila) => partea din baza de date care se gaseste n memoria
tampon este baza de date volatila.
? Restul bazei de date, aflata pe suportul de memorie secundara este baza de
date stabila.
? Memoria tampon ca si baza de date stabila, este mpartita n unitati de
memorare si de acces -> paginile.
7
? Administratorul de recuperare executa operatii de acces la
date n numele tranzactiilor:
? sunt facute din baza de date volatila, iar la un moment
ulterior, acestea sunt transferate n/ din baza de date stabila
de catre administratorul de buffer conform algoritmului
sau propriu de functionare.
? poate solicita administratorului de buffer scrierea fortata a
continutului memoriei tampon n baza de date stabila.
? comanda de tip flush care are ca efect golirea partiala sau
totala a memoriei tampon.
8
Functiuni:
-COMMIT (T) - Transfera permanent si irevocabil paginile actualizate de
T n baza de date. Operatia trebuie sa fie atomica, chiar si n cazul aparitiei
unui defect. Validarea este o operatie irevocabila pentru o tranzactie.
-ABORT(T) - Restaureaza toate datele actualizate la valoarea avuta
anterior lansarii tranzactiei. Este de asemenea o operatie irevocabila.
-RECOVER - recuperare:
?se abandoneaza toate tranzactiile aflate n curs de executie n
momentul aparitiei defectului si care nu au fost validate
?se reconstituie si se transfera n baza de date stabila toate
actualizarile tranzactiilor validate nainte de aparitia defectului.
9
Jurnalul
? Jurnalul este un fisier secvential care contine o istorie a tuturor
actualizarilor pe care tranzactiile le-au facut asupra bazei de date.
? porneste de la ultima arhivare si
? este pastrat ntr-o memorie stabila, care, de regula este diferita de cea n care
este pastrata baza de date.
? ? tranzactie, n paralel cu efectuarea unei operatii de actualizare va scrie o
nregistrare n jurnal, care trebuie sa contina suficiente informatii pentru a
permite fie anularea operatiei de actualizare fie reconstituirea acesteia.
? jurnalul trebuie sa permita administratorului de recuperare sa determine
care sunt tranzactiile existente n sistem, mai precis care dintre acestea
sunt validate si care nu.
? Jurnalul poate fi dublat sau triplat.
? Copiile sunt pastrate pe medii diferite astfel nct daca una este deteriorata
sa se poata folosi o alta.
10
Informatiile minimale din jurnal :
? o nregistrare de tip begin_transaction pentru fiecare tranzactie care intra
n sistem (contine si identificatorul tranzactiei -TRID)
? cte o nregistrare pentru fiecare modificare a bazei de date, care contine:
? identificatorul tranzactiei care a lansat operatia
? un indicator care precizeaza natura operatiei : actualizare, stergere sau
adaugare
? adresa nregistrarii care se modifica
? copia nregistrarii care se modifica -se poate retine copia dinaintea
modificarii ( imagine nainte), copia dupa modificare (imagine dupa) sau
ambele.
? informatii privind momentul lansarii tranzactiei si momentul
executarii operatiei.
? o nregistrare de tip commit sau abort pentru fiecare tranzactie validata
sau abandonata.
11
Abandonarea unei tranzactii
? informatiile din jurnal sunt folosite pentru a anula efectele
tranzactiei n cauza =>pentru o activitate de tip UNDO.
? administratorul de recuperare va parcurge jurnalul n sens
invers, de la coada la cap.
? cnd ntlneste o nregistrare care corespunde unei operatii de
modificare ceruta de tranzactia T, modulul de recuperare va folosi
'imaginea nainte' din jurnal pentru a restaura data corespunzatoare.
? parcurgerea jurnalului se va opri la ntlnirea nregistrarii
begin_transaction corespunzatoare tranzactiei abandonate T.
12
Defect de sistem
? tranzactiile n curs de executie n momentul aparitiei defectului se pot
gasi n una din urmatoarele categorii:
? tranzactii validate (winners) - cele ale caror modificari, desi ncheiate n
memoria volatila nu au fost transferate n baza de date stabila si s-au pierdut n
momentul caderii sistemului.
? trebuie reconstituite toate actiunile tranzactiilor validate pentru a reface valorile
pierdute.
? se parcurge jurnalul nainte si se folosesc 'imaginile dupa' pentru
permanentizarea modificarilor n baza de date stabila. aceasta este o activitate
de tip REDO.
? tranzactii nevalidate (loosers) - nu si-ai ncheiat n totalitate operatiile de
efectuat, dar este posibil ca unele modificari sa se fi propagat n baza de date
stabila.
? nu-si vor putea continua executia dupa o cadere de sistem -> vor trebui
abandonate.
? o activitate de tip UNDO
? se parcurge jurnalul n sens invers si seanuleaza toate efectelor operatiilor
efectuate de tranzactiile nevalidate.
13
Defect al suportului de
memorare
? Actiunile de recuperare - similare celor de dupa o cadere de
sistem.
? Se porneste de la ultima copie arhivata a bazei de date si cu ajutorul
jurnalului se vor reconstitui toarte modificarile efectuate asupra
acesteia.
? Jurnalul folosit si pentru monitorizarea si auditarea
performantelor,
? n jurnal vor fi nregistrate informatii suplimentare ( citiri din baza de
date, nceputul si sfrsitul sesiunilor de lucru ale utilizatorilor etc)
14
TRID Ora Operatia Ob Imagine Imagin Ptr A Ptr U Adr
Inainte e dupa .
T1 BEGIN_TRS 0 2 1
T1 UPDATE R1.C1 val val 1 8 2
veche noua
T2 BEGIN_TRS 0 4 3
T2 INSERT val 3 5 4
noua
T2 DELETE val 4 6 5
veche
T2 UPDATE val val 5 9 6
veche noua
T3 BEGIN_TRS 0 10 7
T1 COMMIT 2 0 8
CHECKPOIN T2, T3
T
T2 COMMIT 6 0 9
T3 INSERT val 7 11 10
noua
T3 COMMIT 10 0 11
15
Protocoale pentru actualizarea jurnalului
Memorie principala
write read
Flush
Buffer de
date
write
( Baza de
read Administrator de buffer read date volatila)
write
Baza de
date stabila write
17
Regula Force_at_Commit
? O tranzactie poate fi validata doar dupa ce
toate imaginile dupa ale nregistrarilor
actualizate se gasesc n baza de date stabila
sau n jurnalul stabil.
? Daca aceasta regula nu ar fi respectata s-ar
mpiedica desfasurarea activitatii de tip
REDO n procesul de recuperare.
18
Tehnici de refacere
? depind de gradul de deteriorare al bazei de date.
? daca baza de date a fost grav deteriorata (distrusa fizic)
? este necesar sa se restaureze ultima copie de siguranta a acesteia
si sa se aplice din nou operatiile de reactualizare a tranzactiilor
efectuate cu ajutorul fisierului jurnal, daca nu a fost distrus
? daca baza de date nu a fost deteriorata fizic ci a devenit
incoerenta
? este necesar sa se anuleze modificarile care au cauzat incoerenta.
? poate fi necesar sa se reia unele tranzactii pentru a garanta ca
reactualizarile efectuate de catre acestea au ajuns pe capacitatea de
stocare secundara.
? se folosesc doua tehnici de refacere si anume :
? reactualizarea amnata
? reactualizarea imediata
19
Tehnici de refacere cu ajutorul reactualizarii amnate
20
? fisierul jurnal este utilizat pentru protejarea bazei de date mpotriva penelor
de sistem n urmatorul mod:
? cnd se ncepe o tranzactie se trece n jurnal o nregistrare de nceput;
? cnd se efectueaza o operatie de scriere, se trece n jurnal o nregistrare
care contine datele corespunzatoare (exclusiv imaginea anterioara a
reactualizarii). Reactualizarea nu se scrie n bufferele bazei de date sau
n baza de date nsasi;
? cnd tranzactia este pe punctul de a fi efectuata, se trece n jurnal o
nregistrare de efectuare a tranzactiei, se scriu pe disc toate
nregistrarile din jurnal corespunzatoare tranzactiei, apoi se efectueaza
tranzactia. nregistrarile din jurnal sunt folosite pentru a efectua
adevaratele reactualizari n baza de date
? daca o tranzactie este anulata se ignora nregistrarile din jurnal
corespunzatoare acesteia si nu se efectueaza actualizarile.
21
? Orice tranzactie care are nregistrari de ncepere a
tranzactiei si de efectuare a tranzactiei trebuie reluata. In
acest scop se efectueaza toate scrierile n baza de date
folosind "imaginile dupa " din jurnal, n ordinea n care au
fost scrise acestea.
? Pentru tranzactiile care au nregistrari de ncepere a
tranzactiei si de abandonare a tranzactiei nu se face nimic,
din moment ce nu a fost efectuata nici o scriere n baza de
date,
22
Tehnici de refacere cu ajutorul reactualizarii imediate
23
Tehnici de refacere cu ajutorul reactualizarii imediate -
continuare
24
Puncte de reluare
? Un punct de reluare = starea sistemului la un moment dat, salvata n
memoria secundara.
? stare este coerenta n raport cu un anumit criteriu a.. n eventualitatea unui
defect poate fi utilizata ca stare initiala pentru procesul de recuperare.
? Frecventa punctelor de reluare:
? este un compromis ntre durata procesului de recuperare si timpul necesar
crearii fiecarui punct de reluare.
? Pt. bazele de date mari, punctele de reluare sunt create la cteva minute, astfel nct
se mentine durata procesului de recuperare sub un minut.
? este data de intensitatea folosirii jurnalului (se va realiza cte un punct de
reluare oridecte ori numarul de nregistrari adaugate n jurnal ajunge la o
valoare prestabilita (1000 nregistrari) sau marimea jurnalului creste cu o
valoare data)
? Exista doua tipuri de puncte de reluare:
? puncte de reluare simple
? puncte de reluare fuzzy
25
Puncte de reluare simple
? presupune salvarea periodica a ntregului continut al memoriei volatile n
memoria stabila.
? se realizeaza sub forma unei operatii sincrone care transfera n memoria
stabila o stare consistenta a sistemului. Presupune urmatorii pasi:
? 1. se suspenda activitatea sistemului prin blocarea tuturor cererilor
referitoare la operatii de actualizare, validare sau abandon
? 2. se construieste o lista a tuturor tranzactiilor active din sistem,
asociind fiecarei tranzactii un pointer la cea mai recenta nregistrare din
jurnal scrisa de acea tranzactie
? 3. se salveaza continutul memoriei volatile n memoria stabila.
? 4. se scrie n jurnal o nregistrare corespunzatoare punctului de reluare.
Aceasta contine lista de tranzactii si pointeri construita la punctul 2.
? 5. se reia activitatea sistemului prin acceptarea de noi cereri pentru
operatii de actualizare, validare sau abandon.
26
Puncte de reluare fuzzy
? Numele de fuzzy provine din faptul ca datele salvate n memoria
stabila s-ar putea sa nu fie mutual consistente.
? Ele nu reprezinta starea sistemului la un moment dat, parti diferite ale
bazei de date corespunznd unor stari din momente diferite de timp.
? orice punct de reluare fuzzy are proprietatea ca poate fi convertit
ntr-un punct de reluare simplu prin aplicarea asupra sa a tuturor
modificarilor nscrise n jurnal pe durata executarii sale. Aceasta
activitate este parte implicita a procesului de recuperare.
27
Generarea unui punct de reluare fuzzy
28
? In procesul de recuperare se va lua n considerare penultimul punct de
reluare deoarece acesta este de fapt ultimul punct de reluare a carui
generare este completa.
29
T1
T2 Exemplu
T3
T4
T5
T6
t0 tc tp
datele corespunzatoare T2 si T3 au fost scrise n capacitatea secundara de
stocare, nainte de aparitia penei.
T1 si T6 nu au fost efectuate n momentul penei ? la reluarea activitatii,
administratorul de recuperare trebuie sa le anuleze .
pentru tranzactiile care au fost deja efectuate, nu este clar n ce masura
modificarile executate s-au propagat n baza de date de pe capacitatea de
stocare nevolatila. (este posibil ca bufferele volatile ale bazei de date sa fi
fost scrise sau nu pe disc) ? AR va fi fortat sa reia T4 si T5.
daca tc este un punct de reluare, atunci se stie ca modificarile efectuate de
tranzactiile T2 si T3 au fost scrise n capacitatea de memorare secundara.
AR va omite operatiile de reluare pentru aceste tranzactii. Totusi, vor
trebui reluate T4 si T5 si anulate T1 si T6.
30
Proiectarea bazelor
de date
Curs 7
SECURITATEA BAZELOR DE
DATE
January 5, 2005 1
Securitatea bazelor de date
se refer la protejarea bazei de date mpotriva ameninrilor intenionate
sau neintenionate, prin utilizarea unor elemente de control bazate sau nu pe
calculatoare
analiza securitii unei baze de date cuprinde:
serviciile furnizate de ctre SGBD
o gam mai larg de probleme asociate securizrii bazei de date i a
mediului acesteia.
consideratiile de securitate nu se aplica numai datelor coninute n baza de
date (deoarece breele din sistemul de securitate pot afecta i alte pri ale
sistemului, care, la rndul lor, pot afecta baza de date).
securitatea bazei de date se refer la:
elemente de hardware i
software,
persoane i date.
January 5, 2005 2
Motive
cresterea cantitatilor de date colective, de importan crucial, care sunt
stocate pe calcuatoare
recunoaterea faptului c orice pierdere sau lips de disponibilitate a
acestora s-ar putea dovedi potenial dezastruoas
baza de date - resurs colectiv esenial
trebuie asigurata corespunztor, utiliznd elemente de control adecvate.
Securitatea bazelor de date trebuie considerat relativ la urmtoarele
situaii:
Furt i frauda ;
Pierderea inetgrittii;
Pierderea disponibilitii.
January 5, 2005 3
Pericole
Pericolul reprezint orice situaie sau eveniment, intenionat sau
neintenionat, care va afecta negativ un sistem, i n ultim instan, o
organizaie.
poate fi cauzat de o situaie sau un eveniment care implic o persoan,
o aciune sau o circumstan care este probabil s duneze unei
organizaii.
Daunele pot fi :
tangibile pierderea de date
January 5, 2005 4
Exemple de pericole
folosirea de ctre un utilizator a mijloacelor de acces ale altor persoane
corectarea sau copierea neautorizat a datelor
alterarea programelor
interceptarea convorbirilor
intrarea ilegal a unui hacker
furtul de date, programe sau echipament
pregtirea necorespunztoare a personalului
vizualizarea i divulgarea neautorizat a datelor
incendiile, inundaiile, bombardamentele
ruperea sau deconectarea cablurilor
introducerea de virui
January 5, 2005 5
Contramasuri
elemente de control bazate pe calculator
autorizarea;
vederile;
copiile de siguranta si refacerea;
integritatea;
criptarea;
procedurile asociate.
January 5, 2005 6
Autorizarea
Autorizarea const n acordarea unui drept sau privilegiu, care permite
unui subiect s aib acces legitim la un sistem sau un obiect dintr-un
sistem.
Controlul autorizrii - implementat n cadrul elementelor de software
poate reglementa:
sistemele sau obiectele la care are acces un utilizator
ce poate face acesta cu ele.
controlul autorizrii mai este numit controlul accesului.
Subiectul se refar la un utilizator sau un program.
Obiectul adreseaz un tabel din baza de date, o vedere, o aplicaie,
procedur sau orice alt obiect care poate fi creat n cadrul sistemului.
January 5, 2005 7
presupune autentificarea subiecilor care solicit acces la
obiecte.
Autentificarea - mecanism care determin dac un utilizator
este cine pretinde a fi.
Administratorul de sistem -acord permisiunea de acces la un
sistem de calcul
creaz conturi individuale pentru utilizatori
fiecrui utilizator i este acordat un identificator unic, care este utilizat
de ctre sistemul de operare pentru a afla cine este acesta.
fiecare identificator are asociat o parol, aleas de ctre utilizator i
cunoscut de sistemul de operare,
nu asigur automat autorizarea accesului la baza de date sau la
programele de aplicaie asociate
January 5, 2005 8
Responsabilitatea de a autoriza utilizarea sistemului SGBD aparine
personalului din administrarea bazelor de date sau administratorului bazei
de date.
trebuie s configureze identificatorii utilizatorilor individuali folosind
posibilittile SGBD-ului ales.
fiecare identificator este asociat cu o parol, cunoscut n exclusivitate de
utilizatorul respectiv, care este folosit de SGBD pentru autentificare.
SGBD-uri care
pstreaz o list a identificatorilor de utilizatori valabili i parolele asociate
diferit de lista sistemului de operare.
pstreaz o list ale crei intrri sunt validate conform cu lista sistemului de
operare, bazat pe identificatorul de ncepere a unei sesiuni de lucru a
utilizatorului.
Avantaj- scutete utilizatorul de a ncepe o sesiune de lucru n sistemul SGBD cu
un nume, dup ce a nceput deja o sesiune de lucru n sistemul de operare folosind
un alt nume.
January 5, 2005 9
Privilegii
O data ce unui utilizator i-a fost acordata permisiunea de a utiliza un sistem
SGBD acestuia i pot fi automat asociate diverse privilegii.
Exemplu:
dreptul de a accesa anumite obiecte din baza de date inclusiv tabelele
selecia sau regsirea de date
de a crea baze de date, tabele, vederi si indexuri sau
de a rula diverse programe utilitare din sistemul SGBD.
sisteme inchise - dei utilizatorii pot fi autorizati sa acceseze sistemul
SGBD, este necesara si autorizatia de a accesa diverse obiecte.
autorizatia este acordata fie de catre administratorul DBA, fie de catre
proprietarii anumitor obiecte.
sisteme deschise - permit utilizatorilor accesul complet la toate obiectele
din baza de date. In acest caz, pentru a controla accesul, este necesar ca
privilegiile sa fie retrase explicit utilizatorilor.
January 5, 2005 10
obiecte din sistemul SGBD deinute de ctre sistem nsui -prin
intermediul unui anumit superutilizator (DBA).
T se ofera proprietarului toate privilegiile corespunzatoare asupra acestora.
regula se aplica i altor utilizatori autorizai, dac acetia au n proprietate
obiecte.
un obiect nou creat devine automat proprietatea celui care l-a realizat, care
capt privilegiile corespuztoare pentru acesta.
cu toate ca un utilizator poate fi proprietarul unei vederi, se poate ca el sa fie
autorizat numai sa o interogheze.
privilegiile pot fi transmise altor utilizatori autorizati.
proprietarul mai multor tabele de baze poate autoriza alti utilizatori sa le
interogheze, dar fara a efectua nici un fel de modificari.
ori de cate ori un utilizator transmite un privilegiu, are posibilitatea de a indica
daca destinatarul le poate transmite mai departe.
SGBD ine evidena tuturor privilegiilor acordate utilizatorilor i de ctre
cine.
January 5, 2005 11
Privilegiile pot fi asociate unor anumii identificatori - care le specific
tipul (Read, Update, Insert, Delete sau All)
Valorile binare sunt sumate n mod corespunztor, iar valoarea total indic
ce privilegii sunt acordate unui anumit utilizator sau grup, pentru un
anumit obiect.
Diversele privilegii acordate utilizatorilor - reinute cu ajutorul matricei de
control a accesului.
January 5, 2005 12
EXEMPLU:
January 5, 2005 13
Controlul accesului n SQL
(autorizarea i acordarea privilegiilor)
SQL ofer faciliti de configurare a securitii tabelelor din baza de date.
mecanismul de securitate se bazeaz pe conceptele de:
U identificatori de autorizare,
U posesie,
U privilegii
fiecare instruciune SQL executat de ctre sistemul SGBD este efectuat
n contul unui anumit utilizator
fiecare obiect creat cu ajutorul limbajului SQL are un proprietar, specificat
prin identificatorul de autorizaie cu ajutorul clauzei AUTORIZATION
plasat n descrierea schemei creia i aparine obiectul.
January 5, 2005 14
Iniial, proprietarul este singura persoan care cunoate existena
obiectului respectiv, ca urmare numai el poate efectua operaii asupra
acestuia.
Privilegiile definite n standardul ISO sunt:
SELECT privilegiul de a regsi datele dintr-un tabel
INSERT privilagiul de a insera nregistrri ntr-un tabel
UPDATE privilegiul de a modifica nregistrri ntr-un tabel
DELETE privilegiul de a terge rnduri dintr-un tabel
REFERENCES privilegiul de a se referi la coloanele dintr-un anumit tabel
n cadrul constrngerilor de integritate
USAGE privilegiul de a utiliza domenii, interclasri, seturi de caractere etc.
INSERT i UPDATE pot fi restrnse numai la anumite coloane ale
tabelului - este permis doar modificarea acestor coloane i este interzis
modificarea celorlalte coloane.
REFERENCES poate fi la anumite coloane - care este permis referirea la
acestea n cadrul constrngerilor (verificare sau de integritate
referenial), atunci cnd se creaz un nou tabel.
January 5, 2005 15
cnd un utilizator creaz un tabel cu CREATE TABLE, devine automat
proprietarul tabelului i primete privilegii complete pentru el.
iniial, pentru acest tabel ali utilizatori nu au privilegii.
pentru a le acorda accesul , proprietarul trebuie s le acorde explicit
privilegiile necesare, folosind instruciunea GRANT.
cnd un utilizator creaz o vedere cu CREATE VIEW, acesta devine
automat proprietarul vederii, dar nu primete automat privilegii complete
pentru ea.
pentru a crea o vedere, utilizatorul trebuie s aib privilegiul SELECT
pentru toate tabelele care o formeaz i privilegiul REFERENCES pentru
coloanele denumite n cadrul vederii.
proprietarul vederii primete privilegiile INSERT , UPDATE i DELETE
numai dac deine aceste privilegii pentru fiecare tabel din cadrul vederii.
January 5, 2005 16
Acordarea de privilegii altor utilizatori
(instruciunea GRANT)
GRANT list_priv ALL PRIVILEGES
ON denumire_obiect
TO list_id_autoriz PUBLIC
[WITH GRANT OPTION ]
January 5, 2005 17
Acordarea privilegiilor complete
pt. tabelul Studeni , utilizatorului
Exemple
cu identificatorul de autorizare Acordarea privilegiului SELECT
Secretar_sef asupra tabelului Student pentru
GRANT ALL PRIVILEGES
utilizatorii Secretar2 i Decan.
ON Studeni GRANT SELECT
TO Secretar_Sef WITH GRANT OPTION ON Student
TO Secretar1, Decan
Acordarea privilegiilor SELECT
i UPDATE asupra coloanelor
nume i pren din tabelul Student Acordarea privilegiului SELECT
pentru utilizatorul cu asupra tabelului Orar pentru toi
identificatorul de autorizare utilizatorii
Secretar1 GRANT SELECT
ON Orar
TO PUBLIC
GRANT SELECT, UPDATE (nume, pren)
ON Studeni
TO Secretar1
January 5, 2005 18
Retragerea privilegiilor utilizatorilor
(instruciunea REVOKE)
Este posibil retragerea tuturor privilegiilor care au fost acordate unui
utilizator sau a unei pri din acestea.
REVOKE [GRANT OPTION FOR] list_priv ALL PRIVILEGES
ON denumire_obiect
FROM list_id_autoriz PUBLIC
[RESTRICT CASCADE ]
January 5, 2005 19
retragerea unui privilegiu asupra unui obiect poate elimina autoritatea care
a permis crearea obiectului respectiv (se spune c obiectul a fost
abandonat)
Instruciunra REVOKE eueaz dac are ca rezultat un obiect abandonat (
de ex. o vedere).
dac a fost specificat cuvntul cheie CASCADE, se emite o opiune DROP
adecvat pentru orice vederi, domenii sau constrngeri abandonate.
privilegiile care au fost acordate unui utilizator de ctre alti utilizatori
dect cel care i retrage privilegiile, nu sunt afectate de ctre aceast
instruciune REVOKE.
dac un utilizator i-a acordat altuia privilegiul care este retras de ctre al treilea
utilizator, permisiunea acordat de ctre primul utilizator i va da voie celui de-
al doilea s acceseze n continuare tabelul.
January 5, 2005 20
January 5, 2005 21
Exemple:
retragerea privilegiului SELECT asupra tabelului Student pentru toi
utilizatorii
REVOKE SELECT
ON Student
FROM PUBLIC
January 5, 2005 22
Salvarea de siguran i refacerea
January 5, 2005 23
. Criptarea
Criptarea este procesul de codificare a datelor printr-un algoritm special,
care face ca acestea s nu poat fi citite de ctre un program, n absena
cheii de decriptare.
protejaz detele transmise prin intermediul liniilor de comunicaie.
tehnici de codificare a datelor:
reversibile,
ireversibile - nu permit cunoaterea datelor originale, dar pot fi utilizate pentru
a obine informaii statistice valabile.
este necesar folosirea unui criptosistem, care cuprinde:
- cheia de criptare pentru a cripta datele
algoritmul de criptare- cu ajutorul cheii de criptare transform textul obinuit
n text cifrat
cheia de decriptare pentru a decripta textul criptat
algoritmul de decriptare folosind cheia de decriptare transform textul cifrat
n text obinuit (lizibil)
January 5, 2005 24
dou tipuri de criptosisteme:
cu criptare simetric - utilizeaz aceeai cheie att pentru
criptare ct i pentru decriptare deoarece se consider c liniile
de comunicaie ofer un anume grad de siguran.
cu criptare asimetric- utilizeaz chei diferite pentru criptare
i decriptare.
criptosistemele cu chei publice, n care se utilizeaz dou chei: una este
public iar cealalt este secret. i algoritmul de criptare poate fi
public, astfel nct oricine dorete s trimit un mesaj utilizatorului
poate folosi cheia cunoscut a acestuia mpreun cu algoritmul
cunoscut, pentru criptare. Apoi numai deintorul unei anumite chei
particulare poate descifra mesajul.
January 5, 2005 25
Procedurile asociate
pentru autorizare i autentificare:
parolele trebuie inute secrete i schimbate la
intervale regulate
parolele nu trebuie afiate n timpul procedurii de
deschidere a unei sesiuni de lucru
toi identificatorii de utilizatori i parolele asociate
trebuie criptate
stabilirea de proceduri prin care numai anumitor
utilizatori li se acord accesul, sub diferite forme la
diferite obiecte.
este foarte util inerea evidenei autorizaiilor
January 5, 2005 26
pentru salvarea de siguran
sunt influenate de:
natura i dimensiunile bazei de date i
de facilitile SGBD-ului folosit.
January 5, 2005 27
pentru refacere
January 5, 2005 28
Contramsuri - elemente de control care nu
sunt bazate pe calculator
politica de securitate a organizaiei i planul pentru
msuri excepionale
controlul personalului
amplasarea echipamentului n condiii de siguran
acordurile ESCROW
acordurile de ntreinere
controlul fizic al accesului
January 5, 2005 29
Securitatea PC-urilor
Caracteristici dimensiuni reduse i amplasamentul
n biroul utilizatorului
potfi uor mutate din loc
acces lor relativ simpl
Msuri suplimentare de protecie
zvoare pentru tastatur
identificatori si parole de acces
plasarea mediilor secundare externe de stocare a datelor in
locuri sigure
utilizarea exclusiv a softurilor autorizate
January 5, 2005 30
Proiectarea bazelor
de date
OPTIMIZAREA INTEROGRILOR 1
Curs 8
January 5, 2005 1
Prelucrarea interogrilor
January 5, 2005 2
Optimizarea interogrilor
T Activitatea de alegere a unei strategii de execuie eficient pentru
prelucrarea unei interogri.
T Scop:
alege din mulimea transformrilor echivalente ale aceleiai
interogri de nivel nalt pe cea care minimizeaz utilizarea resurselor.
T reduce timpul total de execuie a interogrii
January 5, 2005 3
Exemplu:
Furnizori (idf, numef, adresa)
Material (idm, denm, pre, idf)
Care sunt furnizorii care pot furniza materialul M1?
fie |r| - cardinalitatea relaiei r i:
|furnizori|=100
|materiale|=10.000 i exist 50 de nreg. cu referire la M1
VARIANTA 1
SELECT DISTINCT numef
FROM furnizori f, materiale m
WHERE f.idf=m.idf and m.denm=M1
January 5, 2005 4
T Planul de execuie este:
1. Produsul cartezian ntre furnizori i materiale-
100x10.000=1.000.000 op citire de pe suportul secundar de memorie
T relaia rezultat nu poate fi stocat n memorie -> tb scris pe
suportul de memorare secundar
2. Se citesc 1.000.000 nreg i se aplic condiiile de selecie => o
relaie cu 50 de nregistrri - poate fi pstrat n memoria princ.
3. Se proiecteaz relaia de la pct. 2 dup atributul numef
T Execuia presupune:
100+10.000 accesri ale discului pt. a citi relaiile
T o relaie cu 1.000.000 nregistrri scris pe disc
January 5, 2005 5
VARIANTA 2
SELECT DISTINCT numef
FROM furnizori f, ( Select idf
From materiale m
WHERE m.denm=M1
WHERE f.idf=m.idf
Planul de execuie:
se selecteaz din relaia Materiale toate nreg. referitoare la M1
citirea a 10.000 nregistrri i producerea unei relaii cu
cardinalitatea =50 - poate fi reinut n memoria principal
uniunea rezultatului anterior cu relaia Furnizori regsirea a
100 de nregistrri, care (n cel mai defavorabil caz) necesit a fi
citite de 50 de ori
January 5, 2005 6
Planul de execuie:
T se selecteaz din relaia Materiale toate nreg. referitoare la M1 citirea
a 10.000 nregistrri i producerea unei relaii cu cardinalitatea =50 - poate
fi reinut n memoria principal
T uniunea rezultatului anterior cu relaia Furnizori regsirea a 100 de
nregistrri, care (n cel mai defavorabil caz) necesit a fi citite de 50 de ori
T 100*50=5000 operaii de citire
T Statistic:
10.000+5.000 =15.000 operaii de citire de pe disc
50 operaii de scriere pe disc
January 5, 2005 7
Concluzie
secventa de execuie a unei interogri poate fi
mbuntit dac:
seleciile se fac ct mai devreme posibil
produsele carteziene sunt combinate cu selecii pentru a
se obine operaii de jonciune
secvenele operaiilor unare sunt combinate (se aplic
selecii sau proiecii n grup)
subinterogrile comune sunt pre-calculate ( dac se
obin rezultate de dimensiuni reduse i se pot citi de pe
suportul de memorie secundar mai repede dect se
calculeaz )
January 5, 2005 8
Prelucrarea interogrilor
Patru etape :
descompunerea interogrilor
analiza
validarea
optimizarea
generarea codului
execuia
January 5, 2005 9
Interogarea n un limbaj de
nivel nalt (SQL)
Descompunerea Catalogul
Descompunerea
interogrii
interogrii sistemului
Optimizarea
Optimizarea Statistica
Timpul de
interogrii
interogrii
compilare de date
Planul de execuie
Generarea
Generarea
codului
codului
Codul generat
Timpul de Timpulde
Timpul deexecu-
execu- Baza de date
ie aainterogrii
ie interogrii
rulare fizic
January 5, 2005 10
Interogarea este parcurs i analizat d.p.d.v. sintactic
dac exist greeli se genereaz un mesaj de eroare
January 5, 2005 11
Descompunerea interogrilor
T Scop:
U transformarea unei interogri de nivel nalt ntr-o
interogare din algebra relaional
U verific corectitudinea d.p.d.v. sintactic i gramatical
T etape:
U analiza
U normalizarea
U analiza semantic
U simplificarea
January 5, 2005 12
Analiza
T Interogarea- analizat lexical i sintactic cu ajutorul tehnicilor
compilatoarelor
T se verific
dac relaiile i atributele specificate sunt definite n catalogul de sistem
dac toate operaiile aplicate obiectelor bazei de date sunt adecvate
pentru tipurile de obiecte respective
T Rezult o reprezentare intern sub forma unui arbore de
analiz (parse tree)
se creaz cte un nod frunz pentru fiecare relaie de baz din
interogare
se creaz cte un nod intermediar pentru fiecare relaie obinut ca
urmare a unei operaii din algebra relaional
rdcina arborelui reprezint rezultatul interogrii
secvena operaiilor este ndreptat de la frunze ctre rdcin
January 5, 2005 13
Exemplu:
arbore de interogare pentru expresia
x(SxRxQ)
x
S x
R Q
January 5, 2005 14
Normalizarea
T Presupune transformarea interogrii ntr-o form normalizat, care poate
fi manipulat cu uurin
T prin aplicarea unor reguli de echivalen predicatele complexe pot fi
transformate n:
forma normal conjunctiv - conjuncie de disjuncii
[(A or B or C) and (D or E)]
January 5, 2005 15
Analiza semantic
T Obiectiv:
respingerea interogrilor normalizate care sunt formulate incorect sau
contradictoriu
T O interogare este incorect formulat atunci cnd componentele sale nu
contribuie la generarea rezultatului (sunt omise unele specificaii privind
uniunea)
T o interogare este contradictorie dac predicatul nu poate fi satisfcut de
nici un tuplu
T algoritmi de determinare a corectitudinii unei interogri NUMAI pentru
subseturile de interogri care NU conin disjuncii sau negaii:
construcia unui graf de conectare a relaiilor
construcia unui graf normalizat de conectare a atributelor
January 5, 2005 16
Graful de conectare a relaiilor
T Se creaz cte un nod pentru i interogarea
fiecare relaie i un nod pentru SELECT s.nume, s.ddn, c.denc
rezultat FROM stud s, curs c, inscrieri I
T muchii: WHERE c.codc=I.codc AND c.denc=BD
ntre dou noduri care
reprezint o uniune
ntre nodurile care reprezint
sursa operaiilor de proieciei R
nodul rezultat I
dac graful nu este conectat,
interogarea este incorect C
S
formulat
Fie relaiile:
Stud(cods, nume,ddn,cnp...) Nu exist legtur intre S i I
Curs (codc, denc, ) formulare incorect
nscrieri (cods, codc, ...) Explicai de ce !!!
January 5, 2005 17
Graful normalizat de conectare a atributelor
T Se creaz cte un nod pentriu fiecare referire la un atribut sau o constant
(constanta 0)
T se creeaz o muchie direcionat:
ntre nodurile care reprezint o uniune
ntre un nod de atribute i o constant 0 care reprezint o operaie de
selecie
T se pondereaz:
muchiile ab cu valoarea c dac reprezint o condiie de inegaliate
a b+c
muchiile 0a cu valoarea -c dac reprezint condiia de inegalitate
ac
T dac graful conine un ciclu pent ru care suma valorilor este negativ,
interogarea este contradictorie
January 5, 2005 18
Exemplu
T Fie relaiile:
Stud (cods, nume, pren, ...) ab cu c dac a b+c
nota (cods, nota, denc, ...) 0a cu -c dac ac
T i interogarea:
-BD
SELECT s.nume, s.pren, n.nota n.denc
0
s.cods n.cods
Interogarea este contradictorie.
Motivai!! 0
January 5, 2005 19
Simplificarea
T Obiective:
detectarea calificrilor redundante
eliminarea subexpresiilor comune
transformarea interogrii ntr-o form echivalent ca semantic dar
mai eficient calculat
T const n aplicarea regulilor de idempoten din algebra relaional:
P and P = P P or P = P
P and .F. = .F. P or .F. = P
P and .T. =.T. P or .T. =.T.
P and (non P) = .F. P or (non P) = .T.
P and (P or Q) = P P or (P and Q) = P
January 5, 2005 20
Proiectarea bazelor
de date
OPTIMIZAREA INTEROGRILOR 2
Curs 9
January 5, 2005 1
Optimizarea interogrilor
T interogrile sunt restructurate pentru a oferi o implementare mai bun
T Optimizare:
U euristic - sistemul aplic o serie de reguli care i mbuntesc performanele
U sistematic - se estimeaz costul fiecrui plan de execuie i apoi l alege pe
cel mai bun
U semantic- sistemul aplic reguli semantice pentru a reduce spaiul de cutare
T Optimizare:
U dinamic - se efectueaz oridecte ori este rulat interogarea
T av: toate informaiile necesare pentru alegerea unei strategii sunt la zi
T dezav: scade performanele interogrii
U static - interogrile sunt analizate, validate i optimizate o singur dat
T elimin suprasarcina din timpul execuiei
T exist mai mult timp disponibil pentru evaluarea unui numr mai mare
de strategii de execuie
T Optimizare:
U fizic - se refer la metodele de acces fizic utilizate pentru a parcurge o baz
de date - implic tehnici i strategii precum: indexare, sortare, tabele hash
U logic - nlocuirea unei interogri formulate de utilizator cu o interogare
echivalent optim
January 5, 2005 2
Abordarea euristic a optimizrii
interogrilor
January 5, 2005 3
Legile echivalenei din algebra relaional
January 5, 2005 4
Legile echivalenei din algebra relaional
5. Comutativitatea produsului cartezian i a operatorului de jonciune
R1xR2 = R2 xR1
R1 join R2 = R2 join R1
6. Comutativitatea operaiilor de selecie i uniune sau produs cartezian
Dac predicatul seleciei implic numai atribute ale uneia dintre
relaiile care vor fi unite, atunci operaiile de selecie i uniune sau produs
cartezian pot fi comutate.
p( R join S) = (p (R)) join S
p( R x S) = (p(R)) x S
Alternativ, dac predicatul seleciei este o conjuncie de forma (p^q),
unde p presupune numai atribute ale relaiei R iar q numai atribute ale
relaiei S atunci operaiile de selecie i uniune sau produs cartezian pot fi
comutate astfel: p^ q( R join S) = (p (R)) join (q (S))
p^ q( R x S) = (p (R)) x (q (S))
January 5, 2005 5
Legile echivalenei din algebra relaional
7. Comutativitatea operaiilor de proiecie i uniune sau produs cartezian
Dac lista de proiecie este de forma L= L1L2, unde L1 implic
numai atribute ale relaiei R iar L2 numai atribute ale relaiei S, i dac
condiia de uniune conine numai atributele din lista L atunci operaiile de
proiecie i uniune pot fi comutate astfel:
L1L2(R join S) = L1 (R) join L2 (S)
L1L2(R x S) = L1 (R) x L2 (S)
Dac condiia de uniune conine atribute suplimentare, care nu se afl
n lista L, atunci este necasar o operaie final de proiecie.
8. Comutativitatea operaiilor de reuniune i intersecie
R S= S R
R S = S R
January 5, 2005 6
Legile echivalenei din algebra relaional
9. Comutativitatea operaiilor de selecie i a operaiilor cu mulimi (reuniune,
intersecie, diferen)
p (R S) = p (R) p (S)
p (R S) = p (R) p (S)
p (R - S) = p (R) - p (S)
10. Comutativitatea proieciei i a reuniunii
L (R S) = L (R) L (S)
11. Asociativitatea produsului cartezian i a uniunii
(R1x R2) xR3 = R1 X (R2 x R3)
(R1 join R2) join R3 = R1 join (R2 join R3)
12. Asociativitatea reuniunii i interseciei
(R S) T = R (S T)
(R S) T = R (S T)
January 5, 2005 7
Strategii euristice de optimizare
1. Operaiile de selecie se realizeaz ct mai devreme posibil- se reduce
cardinalitatea unei relaii i efortul de prelucrare al acesteia (R. 1,2,4,6,9)
January 5, 2005 8
Algoritm de optimizare a interogrilor bazat pe
arborele algebric
arborele de analiz este restructurat a.. fiecare subarbore
transmite printelui su cantitatea optim de date- se deplaseaz
ct mai jos (ctre frunze) seleciile i proieciile
INTRARE: un arbore reprezentnd o expresie algebric
IEIRE: un arbore algebric reprezentnd expresia algebric optim
P1:regula de cascadare a seleciilor- simplific condiiile complexe din
predicatele de selecie
P2: pt fiecare selecie se utilizeaz legea cascadrii seleciilor, legea
comutativitii seleciilor i a proieciilor i legea comutativitii seleciilor i a
produsului cartezian pentru a muta seleciile ct mai jos n arbore
January 5, 2005 9
Continuare
January 5, 2005 10
Cri(cota, titlu, autor)
Exemplu Edituri(nume_ed, adresa, ora)
Abonai (nr_fia, nume, adresa, ora)
Imprumut (nr_fisa, cota, data)
INFO - vedere care conine informaii despre crile mprumutate
CREATE VIEW INFO AS
SELECT c.cota,c.titlu,c.autor,a.nr_fia, a.nume, a.adresa, a.ora, .data
FROM cri c, abonai a, mprumut
WHERE a.nr_fisa=.nr_fisa AND c.cota=.cota
s (
p (mprumut x abonai x cri)
unde :
s= c.cota, c.titlu, c.autor, a.nr_fia, a.nume, a.adresa, a.ora, .data
titlu
p= a.nr_fisa=.nr_fisa AND c.cota=.cota
Care sunt titlurile crilor mprumutate nainte de 13 iulie 1997?
SELECT titlu data<{13.07.97}
FROM info
WHERE data <{13.07.97} info
data<{13.07.97} (info)
Expresia algebric: titlu (
January 5, 2005 11
Se simplific predicatul dup care se face prima selecie
titlu
Se mping seleciile ct mai jos
titlu posibil cu respectarea regulilor
data<{13.07.97} de echivalen
data<{13.07.97}
Reg 4
s
s
p Reg 1
a.nr_fisa= I.nr_fisa
Reg 4
x Reg 1
c.cota=.cota
x cri Reg 6
x
mprumut abonai Reg 6
x
cri
mprumut abonai
January 5, 2005 12
Se obine:
January 5, 2005 13
Se mpinge proiecia dup titlu ct mai jos n structura arborelui, prin
utilizarea regulii de comutativitate a seleciilor i proieciilor i a regulii de
comutativitate a proieciei i a produsului cartezian.
January 5, 2005 14
titlu
c.cota=.cota
January 5, 2005 15
Proiecia de deasupra tabelului mprumut nu este necesar
=> ea poate fi nlturat
January 5, 2005 16
titlu
Urmeaz faza de
c.cota=.cota
divizare a arborelui
x
data<{13.07.97} abonai
mprumut
January 5, 2005 17
Denormalizarea
Ofer performane mai bune din perspectiva
interogrilor
trebuie fcut cu atenie - urmeaz de regul
unui proces de normalizare
se impune ajustarea aplicaiei pentru a evita
anomaliile de actualizare, adugare i tergere
January 5, 2005 18
Aspecte ale optimizrilor n SQL
1. Trebuie redus volumul comunicaiilor
filtrarea sau alte operaii care reduc cantitatea de date
trebuie fcute n baza de date i nu de ctre aplicaie
SELECT * => suprasarcin pe comunicaii deoarece se
consider toate cmpurile pentru o nregistrare selectat
utilizarea de interogri imbricate solicit suplimentar
sistemul de comunicaie
January 5, 2005 19
2. Evitarea sortrilor inutile
sortarea solicit foarte intens unitatea central de prelucrare
dac se utilizeaz clauza ORDER BY este bine s se limiteze numrul
cmpurilor dup care se face ordonarea
dac se utilizeaz ORDER BY ntr-o operaie de uniune (Join)
cmpurile specificate n aceasta trebuie s aparin aceluiai tabel
se evit utilizarea opiunii DISTINCT
operatorul UNION face ntotdeauna o sortare pt. a elimina duplicatele.
Se va folosi forma UNION ALL pentru a nu se mai elimina duplicatele
clauza NOT IN (subinterogare) produce o sortare. Este indicat
folosirea construciei NOT EXIST
3. Se evit folosirea vederilor ca surse de date pentru
interogrile SQL
4. Se evit efectuarea de calcule n cadrul instruciunilor SQL
5. Un nivel mai sczut de izolare al trenzaciilor crete
performanele interogrilor
January 5, 2005 20
6. Comparaiile
se reduce numrul de comparaii oridecte ori este posibil
ntotdeauna comparaiile care elimin cel mai mare numr de
nregistrri vor fii plasate la nceputul clauzei WHERE
se compar date ale cror tipuri sunt echivalente => nu mai sunt
necesare conversii
BETWEEN este mai eficient dect i dac se face comparaie cu
valori constante
dac se compar o variabil cu coloane din dou tabele este mai
eficient folosirea i
se evit utilizarea operatorului OR pentru comparaii asupra
coloanelor de index. Este preferabil s se divid interogarea n dou
pri care s fie reunite cu operatorul UNION.
January 5, 2005 21