260 likes | 472 Views
C12. Baze de date distribuite. Sisteme de gestiune a bazelor de date, 2013-2014. C12. SGBD. BDD Tranzactii distribuite Interblocari distribuite. BDD – Controlul concurentei folosind blocari. C12. SGBD. Gestiunea blocarilor in BDD
E N D
C12. Baze de date distribuite Sisteme de gestiune a bazelor de date, 2013-2014
C12. SGBD • BDD • Tranzactii distribuite • Interblocari distribuite
BDD – Controlul concurentei folosind blocari C12. SGBD • Gestiunea blocarilor in BDD • Centralizat (C2PL): gestiunea blocarilor / deblocarilor se efectueaza de la o singura locatie pentru toate obiectele (pentru toate unitatile de acces si (daca exista) replicile acestora) – un singur modul LM gestioneaza toate blocarile / deblocarile. Aceasta solutie este vulnerabila la caderea locatiei respective (nu ofera disponibilitate) si care duce la o incarcare prea mare a server-ului de la locatia respectiva. • Pe copia primara (PC2PL): cate o copie a unui obiect este stabilita ca fiind copie primara => toate cererile de blocare / deblocare sunt gestionate de LM de la locatia copiei primare (indiferent de locatia la care este stocata copia pentru care se solicita blocarea / deblocarea); citirea / scrierea unui obiect necesita in general comunicarea cu doua locatii (a copiei primare si a copiei care trebuie accesata). Pentru a nu se ajunge la situatia anterioara de aglomerare a unui singur LM, se prefera alegerea copiilor primare ale obiectelor diferite la locatii diferite. • Complet distribuit (D2PL): cererile de blocare / deblocare a unei copii a unui obiect se gestioneaza de catre modulul LM al locatiei pe care este memorata copia respectiva; citirea este solutionata direct la locatia copiei respective.
BDD – Controlul concurentei folosind blocari C12. SGBD • Serializabilitate folosind blocari in BDD • Desi local planul de executie al operatiilor este serializabil, este posibil sa nu se obtina un plan de executie global serializabil (posibil ca pentru operatiile trimise spre executie unei locatii sa intre in faza de eliberare a blocarilor inainte ca la o alta locatie sa se termine faza de obtinere a blocarilor). (vezi ex. slide urmator) • Pentru a evita incalcarea 2PL: • Ar trebui sa aiba loc un schimb de mesaje intre locatii – o locatie la care s-a blocat un obiect x sa nu deblocheze x pana nu stie ca tranzactia globala nu va trimite o alta operatie spre a fi executata (catre o alta locatie) => TM global care gestioneaza tranzactia respectiva trebuie sa comunice cu TM locale pentru a asigura respectarea 2PL… sau… • Folosirea lui 2PL strict.
BDD – 2PL & Serializabilitatea C12. SGBD • Ex: 2PL local, nu si 2PL global: T – presupus – lansata la locatia L0, acceseaza date de la locatiile L1 si L2 L1 L2 --------------------------------- R(L1.x) R(L2.y) W(L1.x) (elib. blocari) R(L2.z) W(L2.y) (elib. blocari)
BDD – 2PL & Serializabilitatea C12. SGBD • Ex: 2PL local, nu si 2PL global: • Daca la fiecare locatie se foloseste 2PL strict si comiterea se efectueaza conform 2PC (protocol de comitere care asigura atomicitatea si durabilitatea globala), un plan de executie global (distribuit) este serializabil.
BDD – Marci de timp C12. SGBD • Daca TM-urile asociaza marcile de timp pe baza incrementarii repetate a unui counter sau pe baza timpului curent, atunci exista posibilitatea ca doua tranzactii sa aiba aceeasi marca de timp. • Observatie: Probabilitatea ca doua TM-uri sa genereze aceeasi marca de timp in functie de ceasul sistemului depinde si de granularitatea marcii de timp.
BDD – Marci de timp C12. SGBD • Solutii pentru asigurarea unicitatii marcilor de timp: • generare centralizata a marcilor de timp (o singura locatie distribuie marci de timp); • TM-urile comunica pentru a se asigura ca marca de timp care vor sa o asocieze nu este deja alocata de catre un alt TM; fie ts_g(Ti) = ts(Ti); volum mare de mesaje transmise intre locatii; • (pentru a nu cere TM-urilor sa comunice intre ele pentru a asigura unicitatea marcilor de timp) alaturi de marca de timp a tranzactiei se retine id-ul TM-ului (fiecare locatie este identificata printr-un numar unic);notam ts_l(Ti) = marca de timp locala asociata tranzactiei Ti, ts_g(Ti) = (ts_l(Ti), id(TM)) = marca de timp globala => se asigura unicitatea perechilor (ts_l(Ti), id(TMi)). Relatia de ordine: ts_g(Ti) < ts_g(Tj) ts_l(Ti) < ts_l(Tj) sau (ts_l(Ti) = ts_l(Tj) si id(TMi) < id(TMj))
BDD – Interblocari C12. SGBD • Exemplu: Fie x memorat la locatia L1 si y la L2, fara a fi replicate (x si y sunt considerate doua resurse oarecare). Fie T1, T2, ts(t1) = 1, ts(T2) = 2. T1 T2 ------------------- R1(x) W2(y) W1(y) W2(x) LM1 LM2 ------------------- RL1(x) WL2(y) WL1(y) WL2(x) WFG(L1): T2 <- T1 WFG(L2): T1 <- T2 WFG global: T1 <-> T2
BDD – Interblocari – evitare C12. SGBD • Algoritmi de evitare a interblocarilor distribuite: • Wait-die • Wound-wait
BDD – Interblocari – evitare C12. SGBD • Exemplu: • Fie algoritmii Wait-Die / Wound-Wait la nivelul planificatorilor de la locatiile L1 siL2: L1 L2 W-D W-W --------------------------------------------------- R1(x) W2(y) W1(y) => asteapta T1 => anuleaza T2 W2(x) => anuleaza T2
BDD – Interblocari – detectie C12. SGBD • Detectia interblocarilor distribuite • 1. WFG • La fiecare locatie pe care se gestioneaza blocari se mentine un WFG local => aparitia unui ciclu in graf indica aparitia unei interblocari (locale). • Un WFG local contine noduri pentru toate tranzactiile (locale sau globale) care au obtinut sau solicita blocari ale unor unitati de acces de la locatia respectiva. • Dar – pot sa apara interblocari (globale) fara sa existe interblocari locale => interblocare distribuita. • Trebuie detectata interblocarea distribuita la nivelul unui WFG global.
BDD – Interblocari – detectie C12. SGBD • Exemplu: Fie x si y doua obiecte ale caror copii se gasesc la locatiile L1 si L2, si T = {T1, T2}. Se considera tehnica de actualizare sincrona read-any-write-all. T1 (L1) T2 (L2) ---------------------------------- RL(L1.x) RL(L2.y) R(L1.x) R(L2.y) WL(L1.y) WL(L2.x) Cerere WL(L2.y) Cerere WL(L1.x)
BDD – Interblocari – detectie C12. SGBD • Gestiune WFG global • 1. Centralizat • 2. Ierarhic • (3. Propagarea caii)
BDD – Interblocari – detectie C12. SGBD • 1.1. WGF – Centralizat • Fiecare locatie trimite dupa fiecare actualizare sau periodic WFG-ul local catre o locatie care mentine un WFG global (multimea nodurilor din WFG global este reuniunea nodurilor din WFG-urile locale, si intre doua noduri exista un arc daca exista un arc (pereche ordonata) intre cele doua noduri in cel putin un WFG local) – in acesta sunt cautate ciclurile pentru detectarea interblocarilor. • Observatie: Pentru a reduce volumul mesajelor transmise intre locatii, se trimit catre WFG global doar actualizarile aparute de la ultima actualizare (noduri & arce adaugate / sterse). • Observatie: Metoda are dezavantajul vulnerabilitatii locatiei centrale, care gestioneaza WFG-ul global.
BDD – Interblocari – detectie C12. SGBD • 1.2. WGF – Ierarhic • Locatiile sunt organizate intr-o ierarhie, in general, din considerente geografice. • De exemplu – cate o locatie din fiecare oras este responsabila de locatiile din acel oras; cate o locatie din fiecare judet este responsabila pentru locatiile responsabile pe un oras, o locatie este aleasa responsabila pe tara, peste locatiile din judete. • Fiecare locatie mentine un WFG local a.i. cuprinde si WFG-urile locatiilor subordonate. • Fiecare locatie trimite periodic WFG-ul local catre locatia parinte (sau doar ultimele modificari), care (la o perioada mai mare) trimite WFG-ul sau catre nodul parinte s.a.m.d. • Se considera ca sunt sanse mai mari sa apara interblocare intre locatiile invecinate. Altfel, interblocarile care apar intre locatiile din nivelele superioare ale arborelui sunt identificate mai tarziu.
BDD – Interblocari – detectie C12. SGBD • 1.2. WGF – Ierarhic Exemplu: RO ( CJ ( Cj-N, Dej, Turda ), BN ( Bistrita, Beclean ) ) Cj-N: T1 -> T2 Dej: T2 -> T3 Turda: T3 -> T4 <- T7 Bistrita: T5 -> T6 Beclean: T4 -> T7 -> T6 -> T5 CJ: T1 -> T2 -> T3 -> T4 <- T7 BN: T5 <-> T6 <- T7 <- T4 RO: T1 -> T2 -> T3 -> T4 <-> T7-> T6 <-> T5
BDD – Interblocari – detectie C12. SGBD • Detectia interblocarilor distribuite • 2. Time-out • Ca si in BD centralizate, acest mecanism presupune anularea unei tranzactii care asteapta mai mult decat un timp pre-stabilit. • Exista posibilitatea anularilor inutile, insa, mai ales in BDD eterogene, unde este mai dificil ca locatiile sa-si comunice WFG-urile locale, este o solutie preferata.
BDD – Interblocari – detectie C12. SGBD • Detectia interblocarilor distribuite • Observatii: • Oricare tehnica de detectie a interblocarilor s-ar alege, poate sa apara fenomenul interblocarilor fantoma, care duce la anularea inutila a unor tranzactii. • De exemplu, in cazul gestiunii centralizate a WFG: T = {T1, T2}, la fiecare locatie s-a construit WFG-ul local, care a fost trimis apoi pentru a fi construit WFG-ul global. Se considera ca dupa trimiterea WFG-ului de la locatia L2, tranzactia T2 este anulata din alte motive decat interblocarea (de exemplu – defect intern al tranzactiei) => in realitate nu exista interblocare in care sa fie implicate T1 si T2, dar in WFG-ul global se identifica un ciclu si exista riscul luarii deciziei de a anula T1. • O alta posibilitate – identificarea tarzie a interblocarilor – L1 trimite WFG-ul local in care exista arcul T1 <- T2. Dupa un timp, se primeste WFG-ul local de la L2. Pana cand nu sunt primite toate actualizarile, e posibil sa se intarzie identificarea interblocarii.
BDD – Interblocari – iesire C12. SGBD • Iesirea din interblocare • Precum in BD centralizate, se iau in considerare in alegerea tranzactiei (tranzactiilor) victima parametri precum numarul unitatilor de acces modificate sau costul anularii. • Insa, decizia apartine locatiei unde se detecteaza interblocarea (pt. cazul centralizat, unde se gestioneaza WFG-ul global) => exista posibilitatea ca la locatii diferite sa se detecteze aceeasi interblocare si sa fie alese tranzactii diferite drept victime (pt. protocolul distribuit).
BDD C12. SGBD • Controlul concurentei in BDD folosind marci de timp • Algoritmii de ordonare totala / partiala se aplica precum in BD centralizate, in functie de tipul de protocol de actualizare implementat. • Exemplu: Fie algoritmul de ordonare partiala si ROWA. • La citirea unei unitati de acces x, trebuie comparata marca de timp a tranzactiei cu marca de scriere a unei replici a lui x (daca exista mai multe, marcile lor de scriere sunt egale in cazul ROWA). • La scrierea lui x trebuie comparata marca de timp a tranzactiei cu marcile de citire ale tuturor replicilor, care pot sa difere. Daca cel putin o replica are marca de citire mai mare decat a tranzactiei care vrea sa scrie, tranzactia va fi anulata.
Next – C13. SGBD • Tranzactii in BDD (cont.) • Recuperare in BDD