PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych 2005/2006 Wykład "Podstawy baz danych" 1
Statyczny model pamiętania bazy danych 1. Dane przechowywane są w pamięci zewnętrznej podzielonej logicznie na segmenty składające się z jednostek o stałej długości nazywanej stronami. 2. Każdy plik F(R) rekordów typu R pamiętany jest w jednym segmencie. 3. Spójny obszar pamięci zewnętrznej, w której może być przechowywana jedna strona nazywamy blokiem. 2005/2006 Wykład "Podstawy baz danych" 2
Statyczny model pamiętania bazy danych W pamięci operacyjnej wydzielony jest obszar zwany buforem zdolnym do pomieszczenia jednej strony. Przesyłanie danych pomiędzy pamięciami operacyjną i zewnętrzną przedstawia następujący schemat: 2005/2006 Wykład "Podstawy baz danych" 3
Dynamiczny model pamiętania bazy danych Dynamiczny model pamiętania bazy danych pozwala każdej stronie w różnych momentach przyporządkować różne bloki w pamięci zewnętrznej co pozwala na zmianę rozmiarów segmentów. W metodzie tej dla każdego segmentu S k tworzony jest wektor V k zwany tablicą stron i wektor binarny MAP zawierający tyle pozycji ile bloków istnieje w pamięci zewnętrznej. Model ten można dla dwóch segmentów S 1 i S 2 przedstawić przy pomocy następującego schematu: 2005/2006 Wykład "Podstawy baz danych" 4
Dynamiczny model pamiętania bazy danych gdzie wektory V 1 i V 2 wskazują numery bloków, w których zapamiętane są kolejne strony odpowiednio segmentów S 1 i S 2, a 1 w wektorze MAP oznacza zajętość odpowiedniego bloku. 2005/2006 Wykład "Podstawy baz danych" 5
Dynamiczny model pamiętania bazy danych Dynamiczny model pamiętania bazy danych pozwala na tzw. przysłanianie pamięci, które polega na zablokowaniu części pamięci na czas konieczny na wykonanie pewnych operacji na zapisanych tam danych. Metoda ta pozwala odtworzyć bazę danych, bez konieczności robienia kopii zapasowej bazy w przypadku wystąpienia w niej błędów podczas wykonywania operacji na jej danych. 2005/2006 Wykład "Podstawy baz danych" 6
Dynamiczny model pamiętania bazy danych Omówimy model przysłaniania pamięci na przykładzie dwóch segmentów S 1 i S 2. Realizacja jego wymaga utworzenia dodatkowych wektorów V 11, V 21, CMAP, które są odpowiednio kopiami wektorów V 1, V 2, MAP, oraz wektora STATUS, służącego do oznaczenia, że segment S 1 lub S 2 są zamknięte, tzn. nie jest tworzona jego nowa wersja. Załóżmy, że segment S 1 składa się z k stron. 2005/2006 Wykład "Podstawy baz danych" 7
Dynamiczny model pamiętania bazy danych Stan bazy danych przed wykonywaniem operacji na zapisanych danych można przedstawić przy pomocy następującego schematu: 2005/2006 Wykład "Podstawy baz danych" 8
Dynamiczny model pamiętania bazy danych Przy otwieraniu segmentu S 1 do operacji zmieniającej jego stan należy: 1. Przekopiować wektory V 1, MAP odpowiednio do V 11, CMAP i podstawić STATUS(1) := 1; 2. Np. modyfikowana jest strona 1 zapisana w bloku 2; 3. Dla tej zmodyfikowanej strony szukamy w wektorze CMAP wolnego bloku do zapisania nowego stanu strony (może to być blok (3) i podstawiamy CMAP(3) := 1 oraz V 1 (1) := -3, (znak - oznacza stronę już zmienioną ); 4. Podobne kroki można przeprowadzić np. dla strony 2 (tworzenie nowej strony); 2005/2006 Wykład "Podstawy baz danych" 9
Dynamiczny model pamiętania bazy danych Po tych operacjach stan bazy danych można przedstawić przy pomocy następującego schematu: 2005/2006 Wykład "Podstawy baz danych" 10
Dynamiczny model pamiętania bazy danych 5. Możliwe są teraz dwa przypadki: a) Jeżeli zakończono tworzenie nowej wersji i nie stwierdzono błędu to aktualne przyporządkowanie stron do bloków dane jest w wektorze V 1 ; gdy V 1 (i)<0 i V 11 (i) = j 0 to podstawiamy CMAP(j):= 0 i V 1 (i) := V 1 (i) dla i= 1, 2,..., k; aktualną mapę pamięci otrzymamy podstawiając MAP(i) := CMAP(i) dla i=1, 2,..., N; zamykamy segment S 1 podstawiając STATUS(1) := 0; b) Jeżeli w trakcie tworzenia nowej wersji stwierdzono błąd to wracamy do pierwotnego wektora V 1 podstawiając V 1 (i) := V 11 (i) dla i=1,2,...,k; aktualna mapa pamięci dana jest w wektorze MAP; zamykamy segment S 1 podstawiając STATUS(1) := 0; W obydwu przypadkach segment zawiera stan poprawny. 2005/2006 Wykład "Podstawy baz danych" 11
Odwzorowanie rekordów w na stronie Na każdy rekord należący do pliku F(R):={ r 1,r 2,...,r N } rekordów typu R może być zarezerwowana na stronie stała lub zmienna wielkość pamięci. Niektóre z metod zapisywania rekordów przytoczone są w kolejnym przykładzie. Przykład. Wystąpienie rekordu typu PRACOWNIK( identyfikator, nazwisko, zawód, płaca, wiek ) można zapisać na stronie w następujący sposób: a) każda wartość atrybutu zapisywana jest w polu o stałej długości (podanej w ilości znaków) Długość pola w znakach 3 15 15 5 3 123 Kowalski muzyk 34543 23 2005/2006 Wykład "Podstawy baz danych" 12
Odwzorowanie rekordów w na stronie b) wartości wszystkich atrybutów zapisywane są w kolejnych polach o najmniejszym rozmiarze potrzebnym do ich zapamiętania i odseparowane wyróżnionym znakiem np. % 123 % Kowalski % muzyk % 34543 % 23 % c) wartości wszystkich atrybutów zapisywane są w kolejnych polach o najmniejszym rozmiarze potrzebnym do ich zapamiętania i utworzenie dla każdego rekordu części przedrostkowej składającej się ze wskaźników podających adresy końców poszczególnych pól 2005/2006 Wykład "Podstawy baz danych" 13
Adresowanie rekordów w w bazie danych. Na pliku F(R):={ r 1,r 2,...,r N } rekordów typu R mogą być wykonywane następujące czynności: wprowadzanie rekordu, usuwanie rekordu, modyfikacja rekordu, poszukiwanie rekordu o określonej wartości atrybutu. Dostęp do miejsca zapamiętania w pamięci wystąpienia rekordu można uzyskać np. przy pomocy identyfikatora, którym może być np. kolejny numer przypisany rozważanemu rekordowi przez SZBD ( W Oracle jest to ROWID ). 2005/2006 Wykład "Podstawy baz danych" 14
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Pojęcie B-drzewa. Definicja. Indeksem pliku F(R) nazywamy zbiór I:={ (x,a) ( r F(R) ) (x = key(r) a = kbd(r) ) }, gdzie key(r) jest wartością klucza głównego w wystąpieniu rekordu r a kbd(r) kluczem bazy danych (adresem) wystąpienia rekordu r. Każdą parę (x,a) I nazywamy elementem indeksu. 2005/2006 Wykład "Podstawy baz danych" 15
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Definicja. Niech h 0 i m 1. Drzewo T nazywamy B-drzewem klasy t(h,m), co zapisujemy T t(h,m), gdy T = lub spełnione są następujące warunki: 1. Wszystkie drogi prowadzące z korzenia do liści są jednakowej długości równej h; 2. Każdy wierzchołek, z wyjątkiem korzenia i liści, jest początkiem co najmniej m+1 krawędzi; 3. Korzeń jest liściem lub jest początkiem co najmniej dwóch krawędzi; 4. Każdy wierzchołek jest początkiem co najwyżej 2m+1 krawędzi. Wartość h nazywamy wysokością drzewa. 2005/2006 Wykład "Podstawy baz danych" 16
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Przykład. Przykład B-drzewa klasy t(3,2) 2005/2006 Wykład "Podstawy baz danych" 17
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Organizując indeks pliku F(R) w postaci B-drzewa należy każdemu wierzchołkowi przyporządkować jedną stronę danych w następujący sposób: p 0 x 1 a 1 p 1 x 2 a 2 p 2... x l a l p l gdzie 1. 1 l 2m w przypadku korzenia i m l 2m dla wierzchołków pośrednich i liści; wartość l jest liczbą elementów indeksu na stronie, 2. x i wartością klucza głównego wystąpienia rekordu, a i kluczem bazy danych odpowiadającym wystąpieniu rekordu o wartości klucza głównego x i, 1 i l, 3. p i wskaźnikiem na wierzchołek będącym końcem krawędzi wychodzącej z tego wierzchołka, 0 i l, 2005/2006 Wykład "Podstawy baz danych" 18
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa przy czym dla każdego wierzchołka muszą być spełnione następujące warunki: 1) x 1 < x 2 <... < x l 2) Niech P(p i ) oznacza wierzchołek wskazywany przez wskaźnik p i, 0 i l, a X(p i ) niech będzie zbiorem wartości klucza głównego zawartym w poddrzewie, którego korzeniem jest P(p i ). Wtedy: a) ( x X(p 0 ) ) (x < x 1 ), b) ( x X(p i ) ) (x i < x < x i+1 ), dla 1 i < l, c) ( x X(p l ) ) (x l < x ). 2005/2006 Wykład "Podstawy baz danych" 19
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Przykład. Przykład organizacji indeksu w postaci B-drzewa klasy t(3,2) można przedstawić graficznie w następujący sposób: Dla uproszczenia w wierzchołkach drzewa umieszczono tylko wartości klucza głównego pomijając związane z nim adresy (wartości klucza bazy danych). 2005/2006 Wykład "Podstawy baz danych" 20
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Algorytm wyszukiwania w pliku indeksowym zorganizowanym w postaci B-drzewa Mamy indeks I zorganizowany w postaci B-drzewa i wartość klucza głównego x. Indeks I jest zapamiętany na stronach. Należy wyznaczyć wartość klucza bazy danych a, takiego że (x,a) I lub stwierdzenie, że x nie występuje w indeksie I. W przypadku, gdy wyszukiwanie zakończyło się niepowodzeniem (w indeksie I brak poszukiwanego elementu ) możliwe jest dołączenie elementu x do indeksu I. 2005/2006 Wykład "Podstawy baz danych" 21
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Ma być dołączona para (x,a). Dołączanie to może być bezkolizyjne lub może spowodować przepełnienie strony (tzn. na stronie s zapamiętanych jest już 2m elementów indeksu). W pierwszym przypadku element (x,a) dołączany jest w ten sposób by zachować rosnące uporządkowanie wartości klucza głównego na stronie. W drugim przypadku zastosować należy metodę kompensacji lub podziału. 2005/2006 Wykład "Podstawy baz danych" 22
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Algorytm kompensacji. Metodę tę stosujemy wtedy gdy jedna ze stron sąsiadujących ze stroną s zawiera j elementów indeksu, j<2m. Oznaczmy tą stronę przez s 1. Elementy ze stron s i s 1 z uwzględnieniem dołączanego elementu (x,a) i elementu (x ',a ' ), dla którego wskaźniki po obu stronach wskazują strony s i s 1 porządkujemy w ciąg 2m + j +2 elementów. Element "środkowy" (x i,a i ), gdzie i := entier( (2m + j +2)/2 ) wstawiamy w miejsce elementu (x ',a ' ). 2005/2006 Wykład "Podstawy baz danych" 23
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Strony s i s 1 wypełniamy następująco: 1. Jeżeli s 1 leży na lewo od strony s, to elementy (x k,a k ), k=1,2,...,i-1 wstawiamy na stronę s 1, a elementy (x k,a k ), k=i+1, i+2,..., 2m+j+2 na stronę s. 2. Jeżeli s 1 leży na prawo od strony s, to elementy (x k,a k ), k=1,2,...,i-1 wstawiamy na stronę s, a elementy (x k,a k ), k=i+1, i+2,..., 2m+j+2 na stronę s 1. 2005/2006 Wykład "Podstawy baz danych" 24
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Przykład. Dany jest fragment B-drzewa: Chcemy dołączyć element indeksu o wartości klucza głównego 27. Po uporządkowaniu ciągu wartości klucza głównego otrzymamy ciąg 20, 22, 26, 27, 34, 40, 45, 50. Po zastosowaniu metody kompensacji otrzymamy następujący fragment B-drzewa: 2005/2006 Wykład "Podstawy baz danych" 25
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa 2005/2006 Wykład "Podstawy baz danych" 26
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Algorytm podziału. Niech strona s zawiera 2m elementów. Należy dołączyć element (x,a). W tym celu elementy ze strony s z uwzględnieniem dołączanego elementu (x,a) otrzymując ciąg 2m+1 elementów. porządkujemy rosnąco Elementy o numerach 1,2,...,m umieszczamy na stronie s, a elementy o numerach m+2, m+3,... 2m+1 na nowo utworzonej stronie s 1. 2005/2006 Wykład "Podstawy baz danych" 27
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Element (x m+1, a m+1 ) dołączamy do strony będącej wierzchołkiem krawędzi, której końcem jest wierzchołek odpowiadający stronie s w ten sposób, aby wskaźnik będący po lewej stronie elementu (x m+1,a m+1 ) wskazywał stronę s, a wskaźnik będący po prawej stronie od tego elementu stronę s 1. Może się zdarzyć, że strona ta jest zapełniona (zawiera już 2m elementów). Wówczas należy dokonać jej podziału. 2005/2006 Wykład "Podstawy baz danych" 28
Organizacja dostępu do pliku rekordów w za pomocą B-drzewa Może zaistnieć przypadek, że z podziałem dojdziemy aż do korzenia. Przy podziale korzenia istnieje potrzeba utworzenia dwóch nowych stron (wierzchołków) - jeden s 1 zgodnie z opisanym już algorytmem oraz strony, która będzie nowym korzeniem B-drzewa. Operacja ta spowoduje powiększenie wysokości B-drzewa. 2005/2006 Wykład "Podstawy baz danych" 29
Organizacja dostępu do pliku rekordów w za pomocą B * -drzewa 2005/2006 Wykład "Podstawy baz danych" 30
Indeks bitmapowy Indeks bitmapowy jest zbiorem map bitowych dla każdego indeksowanego atrybutu relacji. Przykład....... Imię... Adam...... Zenon...... Adam...... Jan...... Karol...... Piotr...... Zbigniew...... Jan 2005/2006 Wykład "Podstawy baz danych" 31
Indeks bitmapowy Zbiór map bitowych dla atrybutu Imię Adam Zenon Jan Karol Piotr Zbigniew 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 2005/2006 Wykład "Podstawy baz danych" 32
Indeks bitmapowy Zbiór map bitowych dla atrybutu Imię można zorganizować przy pomocy B * -drzewa 2005/2006 Wykład "Podstawy baz danych" 33
Indeksy z odwróconym kluczem W pliku indeksowym o strukturze B*-drzewa wartości klucza pamiętane są w postaci otrzymanej z pierwotnej wartości klucza przez odwrócenie kolejności bitów. Tak zbudowany plik indeksowy nazywamy plikiem indeksowym z odwróconym kluczem (reverse key index). Przykład. Przykład indeksu o strukturze B*-drzewa i indeksu z odwróconym kluczem w którym widać, że wartości bliskie zostały rozproszone do różnych stron. 2005/2006 Wykład "Podstawy baz danych" 34
Indeksy z odwróconym kluczem Rozproszenie bliskich wartości klucza ma duże znaczenie przy współbieżnych transakcjach operujących na rekordach o bliskich wartościach klucza. 2005/2006 Wykład "Podstawy baz danych" 35
PODSTAWY BAZ DANYCH Wykład 7 5. Architektura Systemu Zarządzania Bazą Danych Oracle 2005/2006 Wykład "Podstawy baz danych" 36
Struktura bazy danych Oracle Baza danych składa się z plików danych, które logicznie podzielone są na pewne obszary zwane przestrzeniami tabel ( tablespace ). Każda przestrzeń tabel składa się z co najmniej jednego pliku danych. Przestrzeń dyskowa zajmowana przez każdy plik danych jest logicznie podzielona na mniejsze jednostki bloki, rozszerzenia, segmenty. W Oraclu obiekty: tabele, indeksy i inne przechowywane są w segmentach. 2005/2006 Wykład "Podstawy baz danych" 37
Przestrzenie tabel ( tablespace ) 2005/2006 Wykład "Podstawy baz danych" 38
Budowa bloku Nagłówek bloku Przestrzeń danych (przechowuje wartości atrybutów) Wolna przestrzeń Dane Wolny obszar bloku jest zarezerwowany na uaktualnianie rekordów znajdujących się w bloku. 2005/2006 Wykład "Podstawy baz danych" 39
Budowa bloku Parametry składowania (storage parametr): 1. PCTFREE liczba - określa rozmiar wolnej przestrzeni bloku w stosunku do rozmiaru całego bloku (wyrażona w % ) Np. PCTFREE 30 2. PCTUSED liczba - określa rozmiar przestrzeni bloku poniżej, którego będzie dozwolone wstawianie nowego rekordu (wyrażona w % ) Np. PCTUSED 50 Omówione parametry określa się przy definiowaniu relacji. Jeżeli rekord nie mieści się w jednym bloku może być przechowywany w wielu blokach. 2005/2006 Wykład "Podstawy baz danych" 40
Budowa bloku 2005/2006 Wykład "Podstawy baz danych" 41
Budowa bloku 2005/2006 Wykład "Podstawy baz danych" 42
Budowa bloku 2005/2006 Wykład "Podstawy baz danych" 43
Budowa bloku 2005/2006 Wykład "Podstawy baz danych" 44
Segment i rozszerzenie Rozszerzenie jest to ciągły obszar bloków, który musi znajdować się w jednym pliku dyskowym. B0 B1 B2 B3 B4 B8 B12 B16 plik1 Rozszerzenie 0 Rozszerzenie 1 B0 B3 B6 B9 plik2 Rozszerzenie 2 Segment 2005/2006 Wykład "Podstawy baz danych" 45
Segment i rozszerzenie 2005/2006 Wykład "Podstawy baz danych" 46
Segment 2005/2006 Wykład "Podstawy baz danych" 47
Adresowanie rekordu w bazie 2005/2006 Wykład "Podstawy baz danych" 48
Architektura systemu 2005/2006 Wykład "Podstawy baz danych" 49
Struktura pamięci SGA (System Global Area ) Bufor danych przechowuje dane odczytane z dysku. Bufor dziennika powtórzeń buforuje informacje o zmianach w bazie danych Bufor bibliotek zawiera między innymi współdzielony obszar poleceń SQL (analizę składniową i plany wykonania poleceń SQL) 2005/2006 Wykład "Podstawy baz danych" 50