• Nie Znaleziono Wyników

Wykład 6

N/A
N/A
Protected

Academic year: 2021

Share "Wykład 6"

Copied!
43
0
0

Pełen tekst

(1)

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

(2)

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ępu

do bazy

danych.

(3)

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.

(4)

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.

(5)

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.

(6)

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.

(7)

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.

(8)

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.

(9)

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.

(10)

2017-01-02 Bazy danych-1 W6 10

(11)

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.

(12)

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.

(13)

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.

(14)

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.

(15)
(16)

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.

(17)

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.

(18)

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.

(19)

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

"zainteresowane" dostępem do tego samego obiektu A.

Możemy mieć wtedy do czynienia z jednym z czterech przypadków:

(20)

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.

(21)

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.

(22)

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

(23)

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.

(24)

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

(25)

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

(26)

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.

(27)

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.

(28)

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

(29)

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)

11

Odczyt b

10

LS(b)

9

UX(b)

8

Zapis b

7

Zapis wstępny b

6

Odczyt a

5

LX(b)

4

Odczyt a

3

LS(a)

2

LS(a)

1

T2 T1

(30)

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

1

i T

2

dział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.

(31)

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

(32)

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

(33)

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.

(34)

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

T1

blokuje jedną krotkę relacji

R1

w trybie wyłącznym.

Załóżmy, że transakcja

T2

też żąda dostępu do tej krotki w trybie wyłącznym.

Ze względu na niezgodność blokad wyłącznych żądanie transakcji

T2

zostanie odrzucone.

Transakcja

T2

może w takiej sytuacji założyć blokadę całej relacji

R1

blokują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

R

w

hierarchii ziaren, żadna inna transakcja nie powinna uzyskać zgodnej z nią

blokady żadnego wierzchołka będącego poprzednikiem

R.

(35)

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 blokady

(36)

2017-01-02 Bazy danych-1 W6 36

Zamierzona blokada współdzielona wierzchołka

R

pozwala na dostęp współdzielony do danych należących do tego wierzchołka i na zakładanie

blokady typu

IS

lub typu

S

wszystkich następników wierzchołka

R

w hierarchii ziaren.

Zamierzona blokada wyłączna wierzchołka

R

pozwala 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, SIX

wszystkich następników wierzchołka

R

w hierarchii ziaren.

Blokada mieszana

SIX

wierzchołka

R

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

(37)

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

(38)

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

Ti

jest 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

Ti

może założyć blokadę

IS

lub

S

wierzchołka, który nie jest

korzeniem wtedy i tylko wtedy, gdy blokuje jego poprzednika blokadą typu

IS

lub

IX.

3) Transakcja

Ti

może założyć blokadę

IX, SIX

lub

X

wierzchołka, ktory nie jest korzeniem wtedy i tylko wtedy, gdy blokuje jego poprzednika blokadą typu

IX

lub

SIX.

4) Wszystkie blokady założone przez transakcję

Ti

neleż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).

(39)

abcd

cd ab

d

b c

a

Przykładowa hierarchia ziaren

(40)

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.

(41)

Tzw.

zmodyfikowany algorytm sygnalizacyjny, przeznaczony jest dla struktury

ziaren 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ę

IS

lub

S

wierzchołka, który nie jest korzeniem wtedy i tylko wtedy, gdy blokuje co najmniej jeden jego poprzednik blokadą typu

IS

lub

IX.

3) Transakcja Ti może założyć blokadę

IX, SIX

lub

X

wierzchołka, który nie jest korzeniem wtedy i tylko wtedy, gdy blokuje jego wszystkie poprzedniki blokadą typu

IX

lub

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

(42)

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

(43)

Ż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

Cytaty