To tylko jedna z 4 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Pojęcie transakcji
Transakcja jest to pewien ciąg czynności na bazie danych (np. pojedyncze wyszukiwanie informacji). Transakcja może być zapisana z poziomu programu lub w trybie konwersacyjnym
Współbieżność w rozproszonej bazie danych
Zapewnienie szeregowalności zachowania transakcji w środowisku rozproszonym jest znacznie utrudnione. Wynika to z faktu, że transakcje mogą być wykorzystywane w różnych węzłach i mogą mieć dostęp do danych w wielu węzłach. Jeśli do sterowania współbieżnością zastosować metody blokowania, to zazwyczaj przesyła się o wiele więcej komunikatów dotyczących samego blokowania niż przenoszonych danych. Ponieważ przesyłanie nawet krótkich komunikatów jest kosztowne, w środowisku rozproszonym zalecana jest lepsza gruba ziarnistość blokowania; oznacza to, że jednostki do blokowania powinny być dużymi obiektami, być może całymi relacjami, tak by liczba blokad nakładanych na transakcję nie była duża. Zakłada się, że w środowisku rozproszonym istnieje wiele węzłów lub miejsc, w których mogą być przechowywane dane i wykonywane transakcje. Może istnieć wiele kopii każdej jednostki danych zapamiętanych w różnych węzłach i jeśli tak, to częścią problemu sterowania współbieżnością jest zapewnienie identyczności wszystkich kopii. Zakłada się dalej, że operacjami na BD są transakcje READ i WRITE oraz, że transakcja może zablokować jednostkę. Transakcje są dwufazowe - to znaczy mają zapewnione wszystkie blokady jednostek, których chciały, dokonują na nich tych akcji których powinny dokonać, a następnie zdejmują blokady. Blokowanie należy interpretować tak, jak gdyby transakcje pojawiały się w chwili, w której zapewniono jej wszystkie blokady. Pogwałcenie szeregowalności może wystąpić wtedy gdy jedna transakcja blokuje zapis, a druga blokuje całkowicie tę samą jednostkę w tym samym czasie.
Metody blokowania w rozproszonej bazie danych
Całkowite blokowanie wszystkich - blokada zapisu jednej
Zakładamy, że cała rozproszona baza danych znajduje się w określonej ilości węzłów i określona jednostka znajduje się w określonej ilości węzłów. Transakcja blokuje zapis jednostki A, gdy blokuje ona zapis dowolnej kopii tej jednostki. Transakcja całkowicie blokuje jednostki A, gdy całkowicie blokuje wszystkie jej kopie. Blokowanie zapisu można zapewnić dotąd, aż żadna transakcja nie blokuje całkowicie jednostki. Jednostka A nie może być jednocześnie blokowana całkowicie i blokadą zapisu. Wprowadzamy oznaczenia: n - liczba węzłów w bazie danych; dla każdej jednostki bazy danych jest n kopii jednostki. Rozważmy przepływ komunikatów w rozproszonej sieci. Gdy zakładamy blokadę na jednostkę A nie wiemy ile jest jej kopii. Aby wykonać WLOCK A musi być wysłana blokada zapisu do jednej kopii. Jeżeli ma być blokada całkowita, to trzeba wysłać komunikat do wszystkich węzłów zawierających jednostkę. Trzeba następnie czekać na odpowiedź z węzłów, że jest to możliwe. Potem przesyłamy nową wartość i komunikat o odblokowaniu. Komunikat przesyłający nową wartość będzie komunikatem długim. W rezultacie - przy blokowaniu całkowitym wysyłamy 3n komunikatów krótkich i n komunikatów długich. Jeżeli do komunikatu długiego dołączymy komunikat o odblokowaniu jednostki, to zaoszczędzimy 1n komunikatów krótkich (czyli będzie 2n komunikatów krótkich).Jeżeli żądanie blokady zapisu zostało odrzucone, to nie szukamy następnej kopii jednostki w bazie danych.
(…)
…. Ta metoda obowiązuje dal k>n/2 . Tak dobieramy k aby impas występował najrzadziej.
Metoda kopii pierwotnej Zakładamy , że zarządzanie blokadami jest powierzone konkretnemu węzłowi. W szczególnym przypadku jeden węzeł sieci odpowiada za zarządzanie blokadami w całej sieci. Wszystkie blokady są zakładane na kopii pierwotnej jednostki.
Metoda żetonu w formie pierwotnej
Modyfikacją powyższej jest metoda…
... zobacz całą notatkę
Komentarze użytkowników (0)