Wykład 6
• Integralność danych w bazie
• Organizacja pamięci zewnętrznej w SZBD
• Zarządzanie współbieżnością transakcji
• Dwufazowy algorytm blokowania
• Hierarchiczny algorytm blokowania
2017-01-02 Bazy danych-1 W6 2
Integralność danych w bazie
Dla utrzymania integralności bazy danych należy:
- zapewnić semantyczną zgodność informacji; np. wartość atrybutu wiek powinna być liczbą z przedziału <0, 120>, ilość_towaru powinna być
wartością nieujemną. Ograniczenia te, kojarzone z obiektami bazy danych, nazywa się więzami (warunkami) integralności;
- z tej samej bazy danych korzysta jednocześnie wielu użytkowników.
Nie wolno dopuścić do tego, aby działania jednych użytkowników szkodziły działaniom innych. Jest to problem odpowiedniego zarządzania
współbieżnością;
- system bazy danych może być zainstalowany na jednym lub wielu
komputerach. W każdym z tych węzłów może nastąpić awaria prowadząca do utraty części lub całości danych. System zarządzania powinien umożliwiać zachowanie bazy danych w stanie spójnym, niezależnie od awarii
sprzętowych czy programowych; jest to problem niezawodności bazy danych;
- poprawność bazy danych mogą naruszyć nieupoważnieni użytkownicy.
Pojawia się zatem problem ochrony danych i
autoryzacji dostępudo bazy
danych.
Więzy integralności są predykatami, które powinny być spełnione przez określony podzbiór danych z bazy. Jeśli odpowiednie predykaty są spełnione, oznacza to, że określona grupa informacji znajduje się w stanie spójnym. System zarządzania bazą danych musi czuwać nad tym, aby po każdej modyfikacji zawartości bazy nadal były spełnione więzy integralności.
W większości relacyjnych baz danych stosuje się następujące klasy więzów integralności:
-Unikalność klucza relacji klucz relacji pełni rolę identyfikatora krotek relacji.
Konieczne jest zatem zapewnienie jego unikalności. W praktyce oznacza to, że zarówno wprowadzanie nowych krotek do relacji, jak i modyfikacja krotek musi
automatycznie wyzwalać procedurę porównania wartości klucza krotki z wartościami kluczy wszystkich pozostałych krotek. Jeżeli zostanie stwierdzona unikalność klucza - operacja zostanie przyjęta, w przeciwnym przypadku zostanie odrzucona.
Ponieważ wartości klucza muszą być unikalne, muszą być również niepuste. System zarządzania bazą danych powinien sprawdzać, czy nie występuje próba wprowadzenia krotek z nieokreślona wartością klucza lub próba modyfikacji krotek polegająca na usunięciu wartości klucza. Problem ten jest dość skomplikowany w przypadku kluczy złożonych.
2017-01-02 Bazy danych-1 W6 4
Więzy integralności krotki
Są to więzy, które muszą być spełnione przez wszystkie krotki niezależnie.
Zwykle umożliwia się nakładanie różnych rodzajów takich więzów.
Podstawowe to:
· - zawężenie dziedziny atrybutu przez jawne wskazanie jego dopuszczalnych wartości, np. 1<= miesiąc <= 12;
· - zawężenie dziedziny atrybutu przez jawne wskazanie listy możliwych wartości, np. płeć {kobieta, mężczyzna};
- więzy wyrażające związek pomiędzy atrybutami, np.
data_rozp_studiów < data_zal_sem_1 < data_zal_sem_2;
- więzy dotyczące formatu wartości atrybutu, np. wszystkie znaki kodu pocztowego, za wyjątkiem trzeciego znaku są cyframi, a trzeci znak jest myślnikiem.
Więzy wewnętrzne relacji
Sprawdzając integralność krotek nie odwołujemy się do wartości atrybutów pozostałych krotek relacji. Czasami zależy nam jednak na porównaniu wartości danego atrybutu z wartościami tego atrybutu w innych krotkach (tzw. pionowe więzy wewnętrzne relacji), lub innych atrybutów (tzw. poziome więzy wewnętrzne relacji).
Przykładem więzów wewnętrznych relacji jest ograniczenie wysokości zarobków każdego pracownika do podwojonego średniego zarobku wszystkich pracowników w jego dziale.
Więzy integralności można również podzielić ze względu na moment ich weryfikacji.
Rozróżniamy więzy odroczone inatychmiastowe.
Więzy odroczone to takie, których weryfikacja jest wykonywana z pewnym opóźnieniem, a nie bezpośrednio po wprowadzeniu nowej krotki do relacji lub po modyfikacji atrybutu (atrybutów), z którymi są związane.
Pojęcie więzów odroczonych wiąże się ściśle z pojęciem transakcji.
Więzy natychmiastowe są więzami, które muszą być spełnione natychmiast po realizacji określonej operacji na krotkach relacji.
2017-01-02 Bazy danych-1 W6 6
Organizacja pamięci zewnętrznej w SZBD
Relacja i krotka są pojęciami abstrakcyjnymi. Nie istnieją one na poziomie fizycznym przechowywania i przetwarzania danych w systemie komputerowym. Kolejnym krokiem w procesie projektowania relacyjnej bazy danych jest przejście od pojęć abstrakcyjnych relacji i krotki do typowych struktur pamięci zewnętrznej - plików i rekordów.
W większości systemów komputerowych pamięć zewnętrzna jest podzielona logicznie na segmenty. Każdy segment stanowi wirtualny obszar złożony z wielu stron.
Strona jest minimalną jednostką przydziału pamięci zewnętrznej i jednostką transmisji pomiędzy komputerem a urządzeniem zewnętrznym. Każda strona ma swój unikalny adres. Każdy plik jest zapisywany w jednym segmencie. Segment może zawierać wiele plików.
Plik jest zbiorem rekordów. Każdy rekord ma swój adres bezwzględny. Adres rekordu może być wyliczany jako złożenie adresu strony, na której się znajduje
i przesunięcia względem jej początku. Każdy rekord składa się z pól. Relacja może być pamiętana w jednym pliku. W wielu rozwiązaniach wszystkie relacje bazy danych wraz z informacjami systemowymi pamiętane są w tym samym pliku. Każdy rekord pliku odpowiada jednej krotce relacji, a pola odpowiadają atrybutom relacji.
Dostęp do danych zawartych w bazie uzyskuje się za pomocą tzw. ścieżek dostępu.
Najczęściej spotykanym w praktyce przykładem ścieżki dostępu do danych jest indeks.
Indeks jest również plikiem. Zawiera on rekordy wskazujące na rekordy pliku z danymi.
Kryterium wyboru metody organizacji plików w pamięci zewnętrznej systemu komputerowego jest liczba rekordów, jakie należy odczytać (uaktualnić) w celu wykonania podstawowych operacji na pliku danych:
- odszukania określonego pliku, - wprowadzenia nowego rekordu, - modyfikacji rekordu,
- usunięcia rekordu.
Im mniejsza jest liczba odczytywanych (uaktualnianych) rekordów w czasie wykonywania podstawowych operacji, tym mniejszy jest oczywiście czas dostępu do nośnika pamięci zewnętrznej oraz czas transmisji pomiędzy komputerem a jego pamięcią zewnętrzną. Im mniejsza jest zatem liczba tych rekordów, tym wyższa jest efektywność systemu zarządzania bazą danych.
2017-01-02 Bazy danych-1 W6 8
Plik nieuporządkowany:
• rekordy są umieszczone kolejno, jeden za drugim na kolejnych stronach; żaden z
rekordów nie może znajdować się na dwóch różnych stronach; na jednej stronie znajduje się na ogól wiele rekordów;
• strony są powiązane ze sobą w listę za pomocą wskaźników lub ich adresy zapisane są w tablicy adresów stron przechowywanej niezależnie od właściwych danych;
• - wyszukanie odpowiedniego rekordu wymaga kolejnego przeglądania wszystkich rekordów (przy każdej operacji jest to średnio połowa liczby rekordów w pliku);
• - nowy rekord wpisuje się na ostatnią stronę, jeśli jest tam wystarczająco dużo miejsca, w przeciwnym przypadku, rekord umieszcza się na początku nowej strony;
• - usuwanie rekordu realizuje się przy użyciu tzw. znacznika zajętości umieszczonego w nagłówku rekordu lub strony.
Plik wymieszanywykorzystuje pojęcie klucza dostępu do rekordu.
Klucz dostępu jest pojedynczym polem lub kombinacją kilku pól, które jednoznacznie identyfikują ten rekord.
Podstawowe założenia organizacji plików wymieszanych są następujące:
- rekordy są rozmieszczone w blokach składających się z jednej lub wielu stron;
- dostępna jest funkcja mieszająca h, która przyporządkowuje danej wartości klucza k liczbę całkowitą b z przedziału od 0 do pewnej wartości maksymalnej;
liczba b określa numer bloku, w którym zapisano rekord o kluczu k.
Wartość funkcji mieszającej h(k) (tzw. funkcja haszująca - ang. hash function) określa się za pomocą różnych algorytmów. Może to być następująca reguła:
- klucz rekordu traktuje się jako łańcuch bitów; jeżeli klucz jest złożony, to
poszczególne jego części pochodzące z kilku pól są łączone w łańcuch; w łańcuchu tym wyróżnia się grupy bitów o stałej długości (np. 16 bitów); sumuje się
poszczególne grupy bitów traktując je jak liczby całkowite, a uzyskaną w ten sposób sumę dzieli się przez liczbę bloków; reszta z tego dzielenia określa numer bloku.
2017-01-02 Bazy danych-1 W6 10
Oszacowanie czasu realizacji podstawowych operacji na pliku wymieszanym, przy założeniu, że tablica bloków jest przechowywana w pamięci zewnętrznej, jest następujące:
- każda operacja wymaga najpierw jednego dostępu do pamięci zewnętrznej w celu określenia, na podstawie tablicy bloków adresu poszukiwanego bloku, a następnie tylu dostępów, ile stron zawiera blok, którego adres określono korzystając z funkcji mieszającej;
- wszystkie operacje, oprócz wyszukiwania, wymagają ponadto dodatkowego dostępu, w czasie którego jest przepisywana zawartość zmodyfikowanej strony pliku;
- przy założeniu, że każdy z bloków składa się średnio z jednej strony, wyszukiwanie danych wymaga dwóch dostępów do pamięci, wprowadzanie, usuwanie i aktualizacja wymaga trzech dostępów.
2017-01-02 Bazy danych-1 W6 12
Zasady organizacji plików indeksowanychsą następujące:
- plik najpierw porządkowany jest według rosnących (malejących) wartości klucza numerycznego, znakowego, kombinowanego; w przypadku klucza numerycznego porządek (rosnący albo malejący) jest oczywisty; w przypadku klucza znakowego wykorzystywany jest porządek alfabetyczny kolejnych znaków łańcucha,
- w drugim kroku tworzony jest drugi plik, tzw. indeks, zawierający pary
(wartość klucza k, adres strony s); dana para wartości (k, s) występująca w indeksie oznacza, że pierwszy rekord na stronie s ma wartość klucza k.
Przeszukiwanie:
- sekwencyjne, - dychotomiczne.
Przeszukiwanie sekwencyjne polega na tym, że z pamięci zewnętrznej pobiera się kolejne strony pliku indeksowego, aż do momentu odnalezienia odpowiedniego adresu strony pliku.
Metoda ta nie jest efektywna w przypadku dużych plików indeksowych ze względu na potencjalnie dużą liczbę przeszukiwanych bloków indeksu.
W przeszukiwaniu dychotomicznymwykorzystuje się fakt uporządkowania par (k, s)
według wartości klucza k. Plik indeksowy jest “połowiony”. Najpierw pobierana jest jego środkowa strona. Jeżeli nie zawiera ona poszukiwanego klucza, poszukiwanie jest
ograniczane do zbioru stron poprzedzających pobraną stronę lub występujących po niej w zależności od tego, czy poszukiwany klucz jest mniejszy od pierwszego klucza na
pobranej stronie lub większy od ostatniego klucza zapisanego na niej.
Proces połowienia i pobierania środkowej strony powtarza się aż do momentu sprowadzenia do pamięci operacyjnej strony zawierającej poszukiwany klucz.
Maksymalna liczba sprowadzanych do pamięci bloków pliku indeksowego nie przekracza wartości log2B gdzie B jest liczbą bloków indeksu.
2017-01-02 Bazy danych-1 W6 14
Indeks, który zawiera klucze do wszystkich rekordów pliku nazywa się indeksem gęstym.
W pliku indeksowym można też pamiętać tylko wybrane wartości kluczy, np. klucze rekordów umieszczonych jako pierwsze na stronie pamięci zewnętrznej.
Taki plik nosi nazwę indeksu rzadkiego.
Szczególnym, najczęściej stosowanym typem indeksu jest indeks o strukturze tzw. B - drzewa.
Wystarczy zauważyć, że ponieważ każdy indeks jest plikiem, to może on mieć z kolei swój plik indeksowy, ten podobnie swój kolejny indeks itd. Powstaje w ten sposób indeks o strukturze hierarchicznej w postaci drzewa.
Dalej pokazano przykładowy schemat indeksacji pliku za pomocą B-drzewa.
Dla uproszczenia, dla każdej strony pliku podano wyłącznie wartości kluczy pierwszego i ostatniego rekordu.
2017-01-02 Bazy danych-1 W6 16
Indeks poziomu trzeciego (podstawowy) zawiera klucze wszystkich rekordów umieszczonych jako pierwsze na kolejnych stronach pliku.
Indeks poziomu 2 zawiera wyłącznie klucze umieszczone na początku stron indeksu trzeciego poziomu.
Analogicznie, indeks pierwszego poziomu - korzeń drzewa, zawiera wyłącznie klucze umieszczone na początku stron indeksu drugiego poziomu.
W celu odszukania dowolnego rekordu pliku niezbędne jest sprowadzenie do pamięci operacyjnej trzech stron indeksu, po jednej z każdego poziomu oraz jednej strony pliku.
Poziomy indeksu zbliżone do korzenia mogą być przechowywane w pamięci operacyjnej.
Zwiększa to jeszcze dodatkowo efektywność metody.
Zarządzanie współbieżnością transakcji
W relacyjnych bazach danych operacją elementarną jest operacja dostępu do jednej lub wielu krotek relacji. Wykonanie pojedynczej operacji elementarnej stanowi, z punktu widzenia systemu pewną akcję.
Każda akcja jest niepodzielna - może być wykonana albo w całości, albo nie być wykonana w ogóle.
Akcji nie można być wykonać częściowo.
Użytkownik manipuluje danymi z bazy za pośrednictwem programów (aplikacji) odwołujących się do systemu zarządzania bazą danych.
Wykonanie aplikacji odpowiada na poziomie systemu zarządzania bazą danych wystąpieniu określonej transakcji.
2017-01-02 Bazy danych-1 W6 18
Transakcję można traktować jako przejście bazy ze stanu S1 do innego stanu S2.
W przypadku transakcji, w czasie której następuje jedynie odczyt danych S1 = S2.
Więzy integralności zdefiniowane dla bazy danych określają warunki początkowe wykonywania aplikacji, stanowią one ponadto jej niezmiennik.
W wyniku wykonania takiej transakcji baza danych przechodzi z jednego stanu spójnego w drugi.
Z każdej bazy danych korzysta wielu użytkowników.
Ze względu na efektywność systemu ważne jest, aby kilka transakcji można było wykonywać równocześnie - współbieżnie.
System zarządzania bazą danych musi sprawować kontrolę nad przebiegiem transakcji, nie dopuszczając do wzajemnej blokadyposzczególnych transakcji lub do stanu
niespójności bazy danych.
Każda z transakcji wykonuje operację odczytu, zapisując w odpowiednich obszarach pamięci operacyjnej wartości pobrane z bazy danych.
W przypadku zapisu, określona wartość z pamięci operacyjnej jest przepisywana do bazy w miejsce już nieaktualnej wartości.
Każda transakcja podczas wykonywania, w każdej chwili dysponuje określonym obrazem bazy różniącym się lub nie, od rzeczywistego stanu bazy.
Sytuacje konfliktowe mogą wystąpić wtedy, gdy dwie transakcjeT1 oraz T2 są
"zainteresowane" dostępem do tego samego obiektu A.
Możemy mieć wtedy do czynienia z jednym z czterech przypadków:
2017-01-02 Bazy danych-1 W6 20
Odczyt - odczyt. Współdzielenie danych.
Obydwie transakcje T1iT2żądają odczytu wartościA. Każda z nich uzyskuje taką samą wartość A.
Nie występuje żaden konflikt. W przypadku odczytu dostęp współdzielony do obiektu jest zawsze możliwy.
Zapis - zapis. Utrata aktualizacji.
Utrata aktualizacji nastąpi wtedy, gdy transakcjaT2 dokona zmiany wartości pewnej danej przed zakończeniem transakcjiT1, nie uwzględniając aktualizacji dokonanej przezT1.
Zapis - odczyt. Odczyt niewłaściwy.
Sytuacja taka zdarza się wtedy, gdy transakcjaT2odczytuje wartość zmienioną przezT1, po czym transakcjaT1zostaje anulowana z dowolnego powodu. TransakcjaT2 odczytała zatem wartość niewłaściwą - niepotwierdzoną. Wszystkie modyfikacje dokonane przezT1 zostały anulowane.
Odczyt - zapis. Odczyt niepowtarzalny.
Jeżeli transakcjaT1wykonuje kilkakrotnie odczyt wartości pewnego obiektuA, przy każdym z kolejnych odczytów powinna uzyskiwać tą samą wartość. Sytuacja taka ma miejsce wtedy, gdy T1 jest jedyną transakcją korzystającą z bazy danych. Jeśli jednak pomiędzy kolejnymi odczytami
wartościAinna transakcjaT2 dokona zmiany tej wartości, to w wyniku następujących po sobie odczytów transakcjaT1 uzyska dwie różne wartościA.
Podstawowym problemem związanym ze współbieżnym wykonywaniem
transakcji jest określenie takiego porządku wykonywania akcji poszczególnych transakcji, przy którym dane pozostają spójne.
W przypadku sekwencyjnego wykonywania poszczególnych transakcji, baza danych będzie zawsze w stanie spójnym - będzie przechodzić kolejno w wyniku wykonania każdej z transakcji z jednego stanu spójnego w inny stan spójny.
Do określenia poprawnego porządku akcji współbieżnie wykonywanych transakcji stosuje się metody z następujących trzech grup:
• porządkowania według etykiet czasowych,
• walidacji,
• blokowania.
2017-01-02 Bazy danych-1 W6 22
Za sterowanie współbieżnym przetwarzaniem transakcji w DBMS odpowiada moduł zwany planistą (ang. scheduler)
Menedżer transakcji
Planista
Bufory
Żądanie odczytu/zapisu
Odczyty i zapisy
Planista pobiera od transakcji żądania odczytu i zapisu i albo wykonuje je w buforze albo je opóźnia
W większości komercyjnych systemów zarządzania bazami danych znalazła zastosowanie praktyczne jedynie metoda blokowania.
W metodzie tej z każdą danąx jest związana blokada.
Blokadą może być objęta jednostka dostępu do danej, np. strona pamięci wirtualnej zawierająca całą daną lub jej część.
Zakłada się, że każda transakcja przed odczytem lub zapisem danej musi założyć
odpowiednią blokadę na tej danej oraz, że wszystkie blokady założone przez transakcję zostaną zdjęte przed zakończeniem jej wykonywania.
Zakładanie blokad danych, do których transakcja żąda dostępu, eliminuje dostęp do nich z innych transakcji w czasie, gdy ograniczenia integralnościowe mogą być przejściowo naruszone.
2017-01-02 Bazy danych-1 W6 24
Wyróżnia się dwa typy blokad: blokadę współdzieloną, którą dalej oznaczamy jako S (z ang. Shared lock) oraz blokadę wyłączną oznaczaną dalej X (z ang. eXclusive lock).
Operacje, które nie powodują uaktualnienia danej powinny być poprzedzone założeniem na niej blokady współdzielonej.
Operacje uaktualniające daną (np. zapis) powinny być poprzedzone założeniem na niej blokady wyłącznej.
Dwie blokady są zgodne, jeżeli mogą być jednocześnie założone na tą samą daną przez dwie różne transakcje. W przeciwnym razie mamy do czynienia z blokadami niezgodnymi. Tablica zgodności blokad dla klasycznej metody blokowania ma postać:
nie nie
X
nie tak
S
X
S
W związku z procesem zakładania i zdejmowania blokad należy rozszerzyć zbiór operacji elementarnych o następujące cztery operacje:
LS(a) - żądanie założenia blokady współdzielonej S danej a, LX(a) - żądanie założenia blokady wyłącznej X danej a,
US(a) - zdjęcie blokady współdzielonej S z danej a, UX(a) - zdjęcie blokady wyłącznej X z danej a.
Transakcję zdefiniowaną na tak rozszerzonym zbiorze operacji elementarnych nazywamy transakcją blokującą. Dalej, o ile nie będzie to prowadziło do niejasności, pod pojęciem transakcji będziemy rozumieć transakcję blokującą.
2017-01-02 Bazy danych-1 W6 26
Dwufazowy algorytm blokowania
Najczęściej stosowanym algorytmem blokowania jest algorytm blokowania dwufazowegooznaczany symbolem 2PL.
Istotą tego algorytmu jest wymaganie, aby wykonywanie każdej transakcji przebiegało w dwóch fazach: w fazie blokowaniaoraz w fazie odblokowania.
W fazie blokowania transakcja musi uzyskać blokady wszystkich danych, do których będzie dokonywać dostępu. Moment założenia wszystkich żądanych blokad,
równoznaczny z zakończeniem fazy blokowania, nazywa się punktem akceptacji (ang.
commit point). Po nim następuje faza odblokowywania.
W algorytmie 2PL odczyt danej jest możliwy natychmiast po założeniu blokady tej danej, a więc jeszcze w fazie blokowania. Zapis jest możliwy dopiero po osiągnięciu przez transakcję punktu akceptacji, a więc dopiero w fazie odblokowywania.
Dokładniej przebieg operacji zapisu jest następujący:
założenie blokady wyłącznej jest równoznaczne z wykonaniem tzw. zapisu wstępnego w obszarze roboczym związanym z zapisywaną daną.
Zapis właściwy następuje dopiero w fazie odblokowania, w momencie zdejmowania blokady tej danej na podstawie zawartości obszaru roboczego.
Taka procedura gwarantuje niepodzielność transakcji.
Schemat przebiegu wykonywania transakcji zgodnie z algorytmem 2PL pokazano na rysunku.
2017-01-02 Bazy danych-1 W6 28
Początek transakcji
Blokada S + odczyt
Blokada X + zapis wstępny
Zdjęcie blokady S
Zapis właściwy i zdjęcie blokady X
Koniec transakcji
Faza blokowania
Punkt akceptacji
Faza odblokowania
Przebieg transakcji wg algorytmu 2PL
Przykładowy przebieg wykonania dwóch transakcji T1 oraz T2 według algorytmu 2PL.
pokazano na rysunku. Transakcja T1 odczytuje daną a, a następnie zapisuje daną b.
Transakcja T2 odczytuje obie dane, najpierw a, potem b.
US(a)
11Odczyt b
10LS(b)
9UX(b)
8Zapis b
7Zapis wstępny b
6Odczyt a
5LX(b)
4Odczyt a
3LS(a)
2LS(a)
1T2 T1
2017-01-02 Bazy danych-1 W6 30
Zagrożenie zakleszczeniem (ang. deadlock).
Blokowanie dwufazowe nie rozwiązuje problemu tzw. zakleszczenia
Powstaje wtedy, gdy planista zmusza kilka transakcji do oczekiwania na zasób – dane zablokowane przez jeszcze inną transakcję.
Przykład:
Dwie transakcje T
1i T
2działają w następujący sposób:
T1
czyta daną a, zmienia jej wartość i zapisuje, a następnie czyta daną b zmienia jej wartość i zapisuje
T2
czyta daną b, zmienia jej wartość i zapisuje z powrotem, a następnie
czyta daną a, zmienia jej wartość i zapisuje.
Hierarchiczny algorytm blokowania
Zarządzanie współbieżnością transakcji - problem tzw.
ziarnistości blokad.Jak na dobrać rozmiar blokowanej jednostki, przy sprzecznych wymaganiach co do efektywności transakcji.
Transakcje żądają dostępu do małej lub dużej liczby danych. Wykonanie np.
transakcji żądającej dostępu do trzech danych wymaga założenia i zdjęcia trzech blokad, a do tysiąca danych - założenia i zdjęcia tysiąca blokad. Wynika stąd problem określenia optymalnego rozmiaru blokowanej jednostki.
Maksymalizacja współbieżności zbioru małych transakcji wymaga drobnej
“ziarnistości” blokad, a minimalizacja kosztu blokowania danych dla dużych
transakcji wymaga “grubej ziarnistości” blokad. Powstała w związku z tym
2017-01-02 Bazy danych-1 W6 32
Baza danych jest widziana jako hierarchia jednostek blokowania zwanych ziarnami.
Hierarchię tą można przedstawić w postaci acyklicznego grafu skierowanego, którego wierzchołki odpowiadają ziarnom, a łuki odpowiadają relacjom zawierania się jednych ziaren w drugich. Rys.6.3 przedstawia przykładową hierarchię ziaren.
BD
R1 R2 Rn Relacje
Krotki
Hierarchia ziaren nie ma nic wspólnego ze strukturą danych w bazie. Struktury są reprezentacją związków semantycznych pomiędzy danymi lub fizycznej organizacji danych.
"Hierarchię ziaren" wprowadza się niezależnie od semantyki w celu minimalizacji kosztu zakładania i zdejmowania blokad.
W hierarchicznych algorytmach blokowania rozróżnia się blokady podstawoweoraz zamierzone(intencjonalne, ostrzegawcze).
Blokady podstawoweto takie same rodzaje blokad, co w niehierarchicznej metodzie blokowania. Istnieje zatem blokada podstawowa współdzielona(S) oraz blokada podstawowa wyłączna(X).
Zakładając blokadę podstawową na określonym poziomie hierarchii ziaren blokujemy również wszystkie następniki tej jednostki w hierarchii.
2017-01-02 Bazy danych-1 W6 34
Stosując jedynie mechanizm blokad podstawowych i gwarantując
nienaruszalność warunku zgodności tych blokad nie możemy zapewnić,
że w przypadku współbieżnej realizacji transakcji spójność bazy danych zostanie zachowana.
Niech np. transakcja
T1blokuje jedną krotkę relacji
R1w trybie wyłącznym.
Załóżmy, że transakcja
T2też żąda dostępu do tej krotki w trybie wyłącznym.
Ze względu na niezgodność blokad wyłącznych żądanie transakcji
T2zostanie odrzucone.
Transakcja
T2może w takiej sytuacji założyć blokadę całej relacji
R1blokując w ten sposób również jej krotki.
W rezultacie naruszyłoby to zarówno warunek niezgodności blokad wyłącznych, jak i ewentualne ograniczenia integralnościowe nałożone na bazę danych.
Po założeniu przez transakcję blokady podstawowej danego wierzchołka
Rw
hierarchii ziaren, żadna inna transakcja nie powinna uzyskać zgodnej z nią
blokady żadnego wierzchołka będącego poprzednikiem
R.Jednym z możliwych rozwiązań tego problemu jest model zaproponowany przez Gray’a [
Gray J., Lorie R., Putzolu G., Granularity of Locks and Degrees of Consistency in a Shared Database, IBM Research Laboratories, SanJose, 1975]
Zaproponował on mechanizm
blokad ostrzegawczych(ang.
intention lock).Założenie blokady ostrzegawczej na danym poziomie hierarchii ziaren oznacza, że na niższym poziomie jest założona blokada podstawowa.
Typy blokad ostrzegawczych zależą bezpośrednio od typów blokad podstawowych.
W swoim modelu Gray wyróżnia trzy typy blokad zamierzonych:
- zamierzoną blokadę współdzieloną, oznaczaną dalej
IS,- zamierzoną blokadę wyłączną
IX,- blokadę mieszaną
SIX, która jest połączeniem podstawowej blokady2017-01-02 Bazy danych-1 W6 36
Zamierzona blokada współdzielona wierzchołka
Rpozwala na dostęp współdzielony do danych należących do tego wierzchołka i na zakładanie
blokady typu
ISlub typu
Swszystkich następników wierzchołka
Rw hierarchii ziaren.
Zamierzona blokada wyłączna wierzchołka
Rpozwala zarówno na dostęp współdzielony, jak i wyłączny do danych należących do tego wierzchołka i na zakładanie blokady typu
IX, X, IS, S, SIXwszystkich następników wierzchołka
Rw hierarchii ziaren.
Blokada mieszana
SIXwierzchołka
Rpozwala na dostęp współdzielony do danych
należących do tego wierzchołka i do wszystkich jego następników oraz pozwala
na zakładanie na nich blokad wyłącznych.
nie nie
nie nie
SIX tak
nie nie
tak nie
S tak
nie nie
nie tak
IX tak
nie tak
tak tak
IS tak
X SIX
S IX
IS
Schemat zgodności blokad w hierarchicznej metodzie blokowania
2017-01-02 Bazy danych-1 W6 38
Algorytm blokowania, który wykorzystuje blokady ostrzegawcze to
algorytm sygnalizacyjny.Przeznaczony jest dla drzewiastej struktury ziaren.
Mówimy, że transakcja
Tijest wykonywana zgodnie z algorytmem sygnalizacyjnym wtedy, gdy spełnione są następujące warunki:
1) Pierwszym wierzchołkiem, do którego
Tiżąda dostępu, jest korzeń drzewa ziaren.
2) Transakcja
Timoże założyć blokadę
ISlub
Swierzchołka, który nie jest
korzeniem wtedy i tylko wtedy, gdy blokuje jego poprzednika blokadą typu
ISlub
IX.3) Transakcja
Timoże założyć blokadę
IX, SIXlub
Xwierzchołka, ktory nie jest korzeniem wtedy i tylko wtedy, gdy blokuje jego poprzednika blokadą typu
IXlub
SIX.4) Wszystkie blokady założone przez transakcję
Tineleży zdjąć po
zakończeniu jej wykonywania, albo w trakcie jej wykonywania w kolejności
odwrotnej do kolejności zakładania blokad (od liści do korzenia drzewa).
abcd
cd ab
d
b c
a
Przykładowa hierarchia ziaren
2017-01-02 Bazy danych-1 W6 40
Przykład
Niech transakcja T1 odczytuje daną b i zapisuje dane c i d. Zgodnie z algorytmem sygnalizacyjnym, transakcja T1 zakłada nastepujące blokady:
IS(abcd), IS(ab), S(b), IX(abcd), X(cd)
Współbieżnie z transakcją T1 są wykonywane transakcje T2 i T3, z których pierwsza zamierza odczytać dane a oraz b, a druga odczytać daną c. Żądanie transakcji T2 będzie spełnione ze względu na zgodność zakładanych przez nią blokad
IS(abcd), S(ab)
z blokadami transakcji T1.
W przypadku transakcji T3 konieczne jest założenie następujących blokad:
IS(abcd), IS(cd), S(c)
Blokada
IS(cd)jest niezgodna z założoną przez transakcję T1 blokadą
X(cd).Żądanie transakcji T3 zostanie odrzucone.
Tzw.
zmodyfikowany algorytm sygnalizacyjny, przeznaczony jest dla strukturyziaren typu acyklicznego grafu skierowanego z korzeniem (drzewa).
Transakcja Ti jest wykonywana zgodnie z tym algorytmem wtedy, gdy spełnione są następujące warunki:
1) Pierwszym wierzchołkiem, do którego Ti żąda dostępu jest korzeń grafu ziaren.
2) Transakcja Ti może założyć blokadę
ISlub
Swierzchołka, który nie jest korzeniem wtedy i tylko wtedy, gdy blokuje co najmniej jeden jego poprzednik blokadą typu
ISlub
IX.3) Transakcja Ti może założyć blokadę
IX, SIXlub
Xwierzchołka, który nie jest korzeniem wtedy i tylko wtedy, gdy blokuje jego wszystkie poprzedniki blokadą typu
IXlub
SIX.4) Wszystkie blokady założone przez transakcję Ti należy zdjąć po zakończeniu
jej wykonywania, albo w trakcie jej wykonywania w kolejności odwrotnej do
2017-01-02 Bazy danych-1 W6 42
Współbieżność transakcji i poziomy izolacji
Brudny odczyt: Transakcja T1 modyfikuje pewien wiersz. Następnie transakcja
T2 pobiera dane z tego wiersza, po czym transakcja T1 zostaje wycofana.
Wówczas transakcja T2 widziała wiersz, który już nie istnieje i w pewnym sensie nigdy nie istniał (ponieważ transakcja T1 praktycznie nigdy nie zaszła).
Niepowtarzalny odczyt: Transakcja T1 czyta pewien wiersz. Następnie
transakcja T2 aktualizuje ten wiersz, a transakcja T1 ponownie czyta „ten sam"
wiersz. W tej sytuacji transakcja T1 uzyskała dwa różne zestawy danych w wyniku przeczytania „tego samego" wiersza
Fantomy: Transakcja T1 pobrała zestaw wszystkich wierszy spełniających
pewne warunki (np. wiersze opisujące tylko tych dostawców, których miastem jest Paryż). Następnie transakcja T2 wstawia nowy wiersz speł-niający ten sam warunek. Jeżeli teraz transakcja T1 powtórzy to wyszukiwanie, to zobaczy
wiersz, którego nie było poprzednio, czyli „fantom".
Żadne z powyższych zjawisk nie mogłoby oczywiście wystąpić przy szeregowym wykonaniu transakcji (jedna po drugiej) i żadne z nich nie może wystąpić, jeżeli wszystkie transakcje działają na poziomie izolacji SERIALIZABLE.
W warunkach dopuszczających wystąpienie naruszenia szeregowalności definiuje się różne
poziomy izolacji. Poniższa tabela zawiera ich zestawienie („Tak"oznacza, że wskazywane naruszenie może wystąpić, „Nie" - że wystąpić nie może).
Tak Nie
Nie Repeatable read
Tak Tak
Nie Read commited
Tak Tak
Tak Read uncommited
Fantom Niepowtarzalny
odczyt Brudny odczyt
Poziom izolacji