Metode concureniale de acces la baze de date
Metode concurenţiale de acces la baze de date distribuite. Protocoalele 2 -PL, Send-on-Demand. Platformele SQL şi Oracle. Conducător Ştiinţific U. P. B. : Conf. Dr. Ing. ŞTEFAN STĂNCESCU Masterand: Bastea GABRIEL BUCURESTI 2008
Definitii, BD si SGBD • Baza de date – O colectie larga , integrata de date corelate logic si stocate pentru a mentine info si a oferi suport pentru analiza • Modelarea lumii reale : entitati si relatii • Date- fapte inregistrabile din lumea reala ce poseda semnificatie intrinseca : entitati, relatii intre entitati • SGBD – sistem software (colectie de programe) destinat stocarii si managementului bazelor de date – Ofera un mediu convenabil si eficient de utilizare – Gestioneaza diverse aspecte de proiectare/implementare a sistemelor cu BD – Permite crearea de BD si specificarea schemei sale – Ofera suport pentru interogare si modificarea eficienta a datelor – Mentine securitatea datelor la accidente sau acces neautorizat – Controleaza accesul concurent la date BD si SGBD = Sistemul de baze de date
Terminologie • • • Atomicitate Atribut Chei Concurenta Cardinalitate Consistenta DDL/DML Proceduri stocate Tranzactii • • • Data Mining Data Warehouse Diagrame ER Index Izolare Join Metadate Query Replicare Vederi (View)
Aplicatii cu BD • • • Date textuale sau/si numerice Sisteme de gestiune Sisteme bancare Sisteme de rezervari online ( aviatic, hotelier) Comert electronic Viitor? SGBD OO Tipuri de SGBD 80's -- azi n De uz general SGBD obictual-relationalel DBMS n SGBD multimedia 80's n SGBD GIS (Geographic Information Systems) n Sisteme Data Warehouses & Online Analytical 60's & 70's Processing (OLAP) SGBD ierarhice si retea n SGBD timp real n SGBD active - inteligente SGBD Relationale 50's Procesare de fisiere
Modele si BD relationale • Datele si relatiile intre acestea sunt reprezentate ca o colectie de tabele inter-relationate • BD relationala are la baza un model de date relational • SGBD relationale integreaza limbaje specifice de descriere si • manipulare a datelor (DML si DDL) – Cele mai multe din sistemele de baze de date comerciale , relationale utilizeaza SQL ca limbaj de interogare. Modelul cel mai larg mutilizat astazi : conceptul de baza : relatia (tabela cu linii si coloane), orice relatie poseda o schema ce descrie campurile (coloanele) • Caracteristici – Mentine conceptele fundamentale relationale: accesul declarativ la date, dar extinde puterea de modelare – compatibilitate cu limbajele relationale existente Proiectarea corecta a unei BD relationale : identificarea unei colectii bune de scheme de RELATII si corespunzator a unui set de CONSTRANGERI necesare mentinerii integritatii BD • proiectarea deficitara poate conduce la : inconsistente, inabilitatea de a reprezenta anumite informatii
Tranzactii n executia concurenta a programelor utilizator – este esentiala pentru performanta SGBD (accese la disc lente si frecvente in aplicatii cu BD =>este important de mentinut CPU “incarcat”) n Tranzactie – “vederea “ abstracta a SGBD-ului asupra unui program utilizator ( SGBD “vede doar operatii de citire/scriere ) n Definitie : o secventa de operatii ce se executa ca “o singura functie logica” asupra unei BD partajate de mai multi utilizatori n Tranzactia efectueaza transformari consistente asupra starii sistemului mentinand consistenta acestuia BD in stare consistenta Begin Tranz. Executia tranzactiei End Tranz.
Operatii si stari n tranzactia este executia unui program ce include operatii de acces la BD: Begin – transaction, Read, Write, End – transaction, Commit – transaction, Abort – transaction, Undo, Redo Read/Write. . . Begin End Partially committed Committed Abort Active Abort n n n Failed Undo Aborted Active: tranzactia se executa Partially Committed: executata partial (comisa) Committed: dupa verificarea executiei cu succes Failed: executia fireasca nu poate continua Aborted: abandonata ( dupa “rolled back”)
Concurenta in SGBD n utilizatorii/aplicatiile transmit tranzactii considerand ca fiecare tranzactie se executa de sine statator. Concurenta este asigurata de catre SGBD, responsabil cu “intreteserea “ actiunilor (operatii read/write asupra obiectelor din BD) diverselor tranzactii. Fiecare tranzactie trebuie sa lase BD intr-o stare consistenta, daca aceasta a fost intr- o stare consistenta la momentul inceperii tranzactiei SGBD asigura mentinerea constrangerilor de integritate declarate , fara a intelege semantica datelor
Proprietatile tranzactiilor -ACID Atomicitate (all or nothing) Tranzactia este atomica , aceasta executa toate actiunile sale intr-un singur pas, sau nu le executa de loc. Consistenta (nu sunt violate constrangerile de integritate) Tranzactia trebuie sa mentina consistenta BD dupa executie. (responsibilitatea programatorului de a scrie programe corecte) Izolare (modificarile concurente sunt invizibile serializabilitate) Tranzactia este protejata de efectele planificarii concurente a altor tranzactii. Durabilitate (actualizarile comise sunt persistente) Efectul unei tranzactii comise trebuie sa persiste chiar si in situatia unei caderi in SGBD.
Starile unei tranzactii 1. begin: această operaţie marchează începutul execuţiei unei tranzacţii. 2. read sau write: sunt operaţii de citire sau scriere a articolelor în baza de date, executate în cadrul unei tranzacţii. 3. end: această operaţie marchează terminarea operaţiilor de scriere sau citire din baza de date, ceea ce înseamnă că tranzacţia se poate termina; totuşi, este posibil să fie necesare unele operaţii de verificare înainte de validarea (commit) tranzacţiei. 4. commit: această operaţie semnalează terminarea cu succes a tranzacţiei, validarea tuturor modificărilor efectuate în baza de date şi vizibilitatea modificărilor efectuate pentru alte tranzacţii; din acest moment, modificările efectuate nu mai pot fi anulate, nici pierdute printr-o defectare ulterioară a sistemului (bineînţeles, dacă mecanismul de refacere al SGBD-ului funcţionează corect). 5. rollback (sau abort): această operaţie semnalează faptul că tranzacţia a fost abandonată şi că orice efect pe care tranzacţia l-a avut asupra bazei de date trebuie să fie anulat (printr-o “rulare înapoi” a operaţiilor). 6. undo: această operaţie este similară operaţiei rollback, dar se aplică unei singure operaţii, nu unei întregi tranzacţii. 7. redo: această operaţie specifică faptul că unele operaţii ale unei tranzacţii trebuie să fie executate din nou pentru a se putea valida întreaga tranzacţie. Ultimele două operaţii sunt necesare numai în anumite tehnici de refacere.
Specificarea unei tranzactii SET TRANSACTION optiuni COMMIT [WORK] ROLLBACK [WORK] Comanda SET TRANSACTION stabileşte proprietăţile tranzacţiilor şi admite următoarele opţiuni de setare a modului de gestiune a tranzacţiilor: • Nivelul de izolare a tranzacţiilor (ISOLATION LEVEL) cu valorile posibile: READ UNCOMMITTED, READ COMMITTED, REPETABLE READS, SERIALIZABLE. • Modul de acces la articole - cu valorile posibile READ ONLY, READ WRITE. • Modul de refacere a datelor (SET CONSTRAINTS), cu valorile posibile DEFERRED (refacere amânată) şi IMMEDIATE (refacere imediată). Nivelul de izolare reprezintă gradul până la care o tranzacţie trebuie să fie izolată de celelalte tranzacţii.
Atomicitate n o tranzactie se poate comite (commit) dupa completarea tuturor actiunilor sale, sau poate aborta (abort ) , respectiv poate fi abortata de catre SGBD, dupa executia doar a unora dintre acestea. (este asigurata de catre SGBD) n Daca a fost comisa , toate operatiile sale de scriere vor fie realizate, iar in caz de abortare nici o operatie de scriere nu va fi realizata n se poate astfel considera , ca o tranzactie isi executa toate actiunile sale intr-un pas, sau nu executa nici una dintre aceste actiuni. § SGBD mentine in log toate actiunileasupra datelor , astfel incat poate relua (undo) actiunile tranzactiilor abortate. n Asigurarea atomicitatii tranzactiei in prezenta caderilor in sistem este numita recuperare la caderi -crash recovery.
Consistenta n O tranzactie executata asupra unei BD consistente , o lasa intr-o stare consistenta daca BD a fost consistenta la inceperea tranzactiei n Rezulta : Tranzactiile nu violeaza constrangerile de integritate a bazelor de date. n Tranzactiile sunt programe corecte, este responsabilitatea porgramatorului mentinerea corectitudinii lor
Izolare n Daca mai multe tranzactii sunt executate concurent, rezultatul trebuie sa fie similar unei executii in mod serial , intr-o anumita ordine (serializabilitatea tranzactiilor) n. O tranzactie incompleta nu poate determina “vizibilitatea “ operatiilor sale celorlalte tranzactii (concurente) inainte de a fi comisa. n. Izolarea -este o proprietate necesara pentru a asigura implementarea unor mecanisme pentru evitarea abortarilor in cascada a tranzactiilor n este asigurata de catre SGBD
Durabilitate n pentru o tranzactie comisa , sistemul de gestiune (SGBD) va asigura faptul ca rezultatele operatiilor sale nu vor fi pierdute, chiar in conditiile unor caderi in sistem => sunt persistente nasigura suport pentru mecanisme de recuperare a BD la caderi (Database recovery)
Conflicte de operatii n Obs 1: doua tranzactii ce citesc date nu pot fi conflictuale , ordinea acestora nu este importanta n Obs 2: daca doua tranzactii citesc sau scriu doua obiecte de date distincte , acestea nu sunt conflictuale si astfel ordinea de executie nu este importanta n. Daca o tranzactie scrie un obiect de date si o alta citeste sau scrie acelasi obiect , ordinea executiei este importanta=> tipuri de conflicte WR conflict: T 2 citeste un obiect scris anterior de T 1 RW conflict: T 2 scrie un obiect de date citit anterior de catre T 1 WW conflict: T 2 scrie un obiect de date scris anterior de T 1
Abortarea unei tranzactii Daca o tranzactie este abortata , toate actiunile sale trebuie anulate. daca Tj citeste un obiect scris de Ti, Tj va trebui de asemenea abortata! 1. cele mai multe sisteme evita astfel de abortari in cascada prin eliberarea unui lacat al tranzactiei la momentul comiterii acesteia, astfel daca. Ti scrie un obiect, Tj va putea citi obiectul doar dupa comiterea lui Ti. 2. pentru a putea anula anumite actiuni specifice unei tranzactii abortate , SGBD mentine un Log in care sunt memorate operatiile de scriere –log parte din mecanismul de recuperare la erori = > toate tranzactiile active la momentul caderii sunt abortate
Controlul concurentei bazat pe lacate n in practica sunt utilizate lacate pentru a garanta planificari serializabile n Definitie : un protocol de blocare – set de reguli de urmat de catre fiecare tranzactie (mentinut de catre SGBD) pentru a asigura faptul ca si in conditiile in care anumite actiuni al unui set de tranzactii sunt intretesute, efectul executiei este astfel incat tranzactiile sunt intr-o anumita ordine seriala n lacatele asigura acces exclusiv pentru o tranzactie n Blocare : procedura utilizata pentru controlul concurentei accesului la date. Atunci cand o tranzactie efectueaza un acces la BD, un lacat va interzice accesul altor tranzactii , pentru a preveni rezultate incorecte. n Shared Lock (read lock): daca tranzactia poseda un lacat de tip shared asupra unui obiect de date va putea citi obiectul insa nu il va putea actualiza. n Exclusive Lock (write lock): daca o tranzactie poseda un lacat de tip exclusiv asupra unui obiecty de date va putea atat citi cat si scrie acel obiect.
Reguli pentru Algoritmi nlacatele permit procesarea concurenta a tranzactiilor ntranzactiile isi indica intentiile de operare prin solicitarea de lacate de la planificatorul de tranzactii (managerul de lacate). norice tranzactie ce necesita acces la un obiect de date pentru citire/scriere , inaintea accesului efectiv va bloca acel obiect. no tranzactie mentine un lacat pana la eliberarea sa explicita. nlacatele Shared ( S) si Exclusiv (X) sunt conflictuale ( nu pot coexista)
Protocolul 2 PL (Two-Phase Locking) n o tranzactie respecta protocolul 2 PL, daca toate operatiile de blocare , preced prima operatie de deblocare din tranzactie. etapa 1 – solicitarea lacatelor ( pot sa nu fie eliberate) etapa 2 - eliberarea lacatelor ( pot sa nu fie obtinute altele noi) §daca o tranzactie poseda un lacat de tip X asupra unui obiect, nici o alta tranzactie nu va putea prelua un alt lacat asupra sa. § inaintea unei operatii de citire se va obtine un lacat S, iar a unei operatii de scriere un lacat X §o tranzactie trebuie sa obtina un lacat inaintea executiei operatiei dorite , o tranzactie ce a obtinut un lacat nu va mai putea obtine altele
Protocolul 2 PL strict n Toate lacatele detinute de o tranzactie sunt eliberate la terminarea acesteia ( inainte de comitere) n. Acest protocol permite doar planificari serializabile, reprezentabile prin grafuri aciclice
Blocaje n Blocaj -Deadlock: Ciclu de tranzactii ce asteapta eliberarea reciproca a lacatelor. n o tranzactie este blocata ciclic pana la o interventie externa. n anumiti algoritmi de control a concurentei bazat pe lacate =>pot genera blocaje. n Solutii de tratare blocaje ciclice : prevenire - garantarea lipsei de blocaje ciclice, sau detectare inaintea aparitiei lor detectare - acceptare blocaje ciclice si eliminare la aparitie
Exemplu T 1 begin-transaction Write-lock(A) Read(A) A=A-100 Write(A) Write-lock(B) Wait … T 2 begin-transaction Write-lock(B) Read(B) B=B*2. 01 Write(B) write-lock(A) Wait …
Log-ul unei BD n. Actiuni inregistrate in log: Ti scrie un obiect de date – vechea si noua valoare apar in log (logul va fi salvat pe disc inaintea modificarii de pagina de M) Ti comite/este abortata n. Inregistrarile din Log sunt inlantuite bazat pe id-ul de tranzactie => simplu de reluat (redo) /anulat (undo) o anumita tranzactie. n. Log – este duplicat si arhivat pe suportul de stocare. n. Operatiile de control al concurentei tranzactiilor ( protocoale pentru evitare interblocari, acaparare/eliberare lacate, inregistrarile acestora in log) sunt efectuate in mod transparent de catre SGBD
BD Log n contine inregistrari adaugate continuu ca urmare a acceselor din BD n. Pentru refacere BD (recovery) - logul este parcurs inapoi backwards n o intrare in log contine: § § id de tranzactie Tip operatie Obiecte accesate pentru a efectua actiunea vechea si noua valoare a obiectului …. . Intrarile in log sunt utilizate pentru modificari de tip undo in caz de abortare a unei tranzactii : bazat pe id-ul tranzactiei se va putea inlocui valoarea obiectului de date cu cea dinaintea caderii
Puncte de control - checkpoint n in timpul unei caderi , procedura de recuperare trebuie sa poata identifica tranzactiile care sunt inca active pentru a le aborta=> scanare log backward. n. Problema : Cat de departe este necesara scanarea pentru a garanta ca nu mai sunt tranzactii active? npentru a evita scanarea completa backward , a logului este necesr un mecanism care sa asigure oprirea. nse impune o noua intrare in log : punctul de control - Checkpoint. n. Sistemul va adauga periodic inregistrari de tip checkpoint in log ce contine tranzactiile active curente n procesul de recovery va scana cel putin pana la cel mai recent checkpoint n daca T apare intr-un punct de control – T a fost activ la o cadere – se va continua scanarea pana la detectarea unui begin-transaction T
Concluzii n Controlul concurentei si refacerea BD la caderi – cele mai importante functii oferite de SGBD. n Utilizatorii nu controleaza concurenta in sistem : sistemul insereaza automat cereri de blocare/deblocare ( asignare lacate) si planifica actiunile diverselor tranzactii de asa maniera incat sa asigure o executie echivalenta cu o posibila serializare a actiunilor tranzactiilor concurente implicate n Write-ahead logging (WAL) - utilizat pentr actiuni tip undo pentru tranzactiile abortate si pentru refacerea starii sistemului dupa o cadere. Stare Consistenta: sunt vizibile doar efectele tranzactiilor comise. n Scheme diverse de control a concurentei bazat pe lacate (Strict 2 PL, 2 PL). Conflictele intre tranzactii sunt detectate in grafuri de dependenta n managerul de lacate mentine evidenta acestora – blocajele pot fi astfel prevenite sau detectate. n CC prin Timestamp - alternativa la protocoale 2 PL; permit anumite planificari serializabile ce nu pot fi realizate prin protocolul 2 PL = solutie complementara. n asigurarea recuperarii cu stampe de timp necesita de asemenea solutii de blocare pentru articolele de date implicate
- Slides: 27