Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.:

Similar presentations


Presentation on theme: "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.:"— Presentation transcript:

1 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

2 Definitii, BD si SGBD Baza de date 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 Modelarea lumii reale : entitati si relatii Date- fapte inregistrabile din lumea reala ce poseda semnificatie intrinseca : entitati, relatii intre entitati 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 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

3 Terminologie Atomicitate Atomicitate Atribut Atribut Chei Chei Concurenta Concurenta Cardinalitate Cardinalitate Consistenta Consistenta DDL/DML DDL/DML Proceduri stocate Proceduri stocate Tranzactii Tranzactii Data Mining Data Mining Data Warehouse Data Warehouse Diagrame ER Diagrame ER Index Index Izolare Izolare Join Join Metadate Metadate Query Query Replicare Replicare Vederi (View) Vederi (View)

4 Aplicatii cu BD Date textuale sau/si numerice Date textuale sau/si numerice Sisteme de gestiune Sisteme de gestiune Sisteme bancare Sisteme bancare Sisteme de rezervari online ( aviatic, hotelier) Sisteme de rezervari online ( aviatic, hotelier) Comert electronic Comert electronic Tipuri de SGBD De uz general SGBD multimedia SGBD GIS (Geographic Information Systems) Sisteme Data Warehouses & Online Analytical Processing (OLAP) SGBD timp real SGBD active - inteligente SGBD obictual-relationalel DBMS SGBD obictual-relationalel DBMS 80's -- azi Procesare de fisiere SGBD OO SGBD Relationale SGBD Relationale SGBD ierarhice si retea 50's 60's & 70's 80's Viitor?

5 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

6 Tranzactii 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”) Tranzactie – “vederea “ abstracta a SGBD-ului asupra unui program utilizator ( SGBD “vede doar operatii de citire/scriere ) Definitie : o secventa de operatii ce se executa ca “o singura functie logica” asupra unei BD partajate de mai multi utilizatori Tranzactia efectueaza transformari consistente asupra starii sistemului mentinand consistenta acestuia BD in stare consistenta BD in stare consistenta Begin Tranz. End Tranz. Executia tranzactiei

7 Operatii si stari tranzactia este executia unui program ce include operatii de acces la BD: Begin – transaction, Read, Write, End – transaction, Commit – transaction, Abort – transaction, Undo, Redo tranzactia este executia unui program ce include operatii de acces la BD: Begin – transaction, Read, Write, End – transaction, Commit – transaction, Abort – transaction, Undo, Redo Active Partially committed Committed Aborted Failed Begin Read/Write... End Abort Commit Undo 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”)

8 Concurenta in SGBD 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

9 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) 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.

10 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. Starile unei tranzactii

11 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. Specificarea unei tranzactii

12 Atomicitate 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) 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 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. Asigurarea atomicitatii tranzactiei in prezenta caderilor in sistem este numita recuperare la caderi -crash recovery.

13 Consistenta O tranzactie executata asupra unei BD consistente, o lasa intr-o stare consistenta daca BD a fost consistenta la inceperea tranzactiei Rezulta : Tranzactiile nu violeaza constrangerile de integritate a bazelor de date. Tranzactiile sunt programe corecte, este responsabilitatea porgramatorului mentinerea corectitudinii lor

14 Izolare Daca mai multe tranzactii sunt executate concurent, rezultatul trebuie sa fie similar unei executii in mod serial, intr-o anumita ordine (serializabilitatea tranzactiilor) O tranzactie incompleta nu poate determina “vizibilitatea “ operatiilor sale celorlalte tranzactii (concurente) inainte de a fi comisa. Izolarea -este o proprietate necesara pentru a asigura implementarea unor mecanisme pentru evitarea abortarilor in cascada a tranzactiilor este asigurata de catre SGBD

15 Durabilitate 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 asigura suport pentru mecanisme de recuperare a BD la caderi (Database recovery)

16 Conflicte de operatii Obs 1: doua tranzactii ce citesc date nu pot fi conflictuale, ordinea acestora nu este importanta 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 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: T2 citeste un obiect scris anterior de T1 RW conflict: T2 scrie un obiect de date citit anterior de catre T1 WW conflict: T2 scrie un obiect de date scris anterior de T1

17 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 dacaTi 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

18 Controlul concurentei bazat pe lacate in practica sunt utilizate lacate pentru a garanta planificari serializabile 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 lacatele asigura acces exclusiv pentru o tranzactie 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. 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. 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.

19 Reguli pentru Algoritmi lacatele permit procesarea concurenta a tranzactiilor tranzactiile isi indica intentiile de operare prin solicitarea de lacate de la planificatorul de tranzactii (managerul de lacate). orice tranzactie ce necesita acces la un obiect de date pentru citire/scriere, inaintea accesului efectiv va bloca acel obiect. o tranzactie mentine un lacat pana la eliberarea sa explicita. lacatele Shared ( S) si Exclusiv (X) sunt conflictuale ( nu pot coexista)

20 Protocolul 2PL (Two-Phase Locking) o tranzactie respecta protocolul 2PL, 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

21 Toate lacatele detinute de o tranzactie sunt eliberate la terminarea acesteia ( inainte de comitere) Acest protocol permite doar planificari serializabile, reprezentabile prin grafuri aciclice Protocolul 2PL strict

22 Blocaje Blocaj -Deadlock: Ciclu de tranzactii ce asteapta eliberarea reciproca a lacatelor. o tranzactie este blocata ciclic pana la o interventie externa. anumiti algoritmi de control a concurentei bazat pe lacate =>pot genera blocaje. Solutii de tratare blocaje ciclice : prevenire - garantarea lipsei de blocaje ciclice, sau detectare inaintea aparitiei lor detectare - acceptare blocaje ciclice si eliminare la aparitie

23 Exemplu T1 begin-transaction Write-lock(A) Read(A) A=A-100 Write(A) Write-lock(B) Wait … T2 begin-transaction Write-lock(B) Read(B) B=B*2.01 Write(B) write-lock(A) Wait …

24 Log-ul unei BD Actiuni inregistrate in log: T i scrie un obiect de date – vechea si noua valoare apar in log (logul va fi salvat pe disc inaintea modificarii de pagina de M) T i comite/este abortata Inregistrarile din Log sunt inlantuite bazat pe id-ul de tranzactie => simplu de reluat (redo) /anulat (undo) o anumita tranzactie. Log – este duplicat si arhivat pe suportul de stocare. 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

25 BD Log contine inregistrari adaugate continuu ca urmare a acceselor din BD Pentru refacere BD (recovery) - logul este parcurs inapoi backwards 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

26 Puncte de control - checkpoint in timpul unei caderi, procedura de recuperare trebuie sa poata identifica tranzactiile care sunt inca active pentru a le aborta=> scanare log backward. Problema : Cat de departe este necesara scanarea pentru a garanta ca nu mai sunt tranzactii active? pentru a evita scanarea completa backward,a logului este necesr un mecanism care sa asigure oprirea. se impune o noua intrare in log : punctul de control - Checkpoint. Sistemul va adauga periodic inregistrari de tip checkpoint in log ce contine tranzactiile active curente procesul de recovery va scana cel putin pana la cel mai recent checkpoint 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

27 Concluzii Controlul concurentei si refacerea BD la caderi – cele mai importante functii oferite de SGBD. 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 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. Scheme diverse de control a concurentei bazat pe lacate (Strict 2PL, 2PL). Conflictele intre tranzactii sunt detectate in grafuri de dependenta managerul de lacate mentine evidenta acestora – blocajele pot fi astfel prevenite sau detectate. CC prin Timestamp - alternativa la protocoale 2PL; permit anumite planificari serializabile ce nu pot fi realizate prin protocolul 2PL = solutie complementara. asigurarea recuperarii cu stampe de timp necesita de asemenea solutii de blocare pentru articolele de date implicate


Download ppt "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.:"

Similar presentations


Ads by Google