Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi
Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu 3 - wprowadzenie Odszukiwanie w B-drzewie
Bazy danych Plan wykładu Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Baza danych - uporządkowany zbiór danych przechowywany w pamięci komputera. Dane reprezentowane są przez rekordy danych stanowiące uporządkowany zbiór elementów dowolnego typu umieszczony w tzw. polach, które zawierają klucz rekordu oraz jego atrybuty.
Podstawowe problemy baz danych Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 1 Problem rozmieszczenia polega na podaniu takiego algorytmu A, który na podstawie klucza K i zawartego w rekordzie R i przydzieli miejsce (adres) dla tegoż rekordu w określonej strukturze S. 2 Problem odszukania rekordu R i w strukturze S polega na ustaleniu adresu tego rekordu, na podstawie klucza K i i algorytmu A. 3 Problem wyszukania występuje, gdy na podstawie atrybutów innych niż klucz należy wyszukać odpowiedni rekord 1. 1 rozwiązanie tego problemu polega na przetestowaniu pól wszystkich rekordów i porównaniu ich zawartości z wartością zadanego atrybutu
Struktury danych Plan wykładu Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Podstawowe struktury danych to: struktury stałe ich rozmiar jest niezależny od zebranych w nich elementów, ustalony z góry i niezmienny w czasie wykonywania operacji na strukturze, m.in. tablice struktury dynamicznie zmienne ich rozmiar zależy od liczby zgromadzonych w nich elementów, m.in. listy, drzewa, sieci. Rekordy w takich strukturach mają jedno lub kilka dodatkowych pól, zwanych polami łącznikowymi lub wskaźnikowymi, zwykle zawierające adresy elementów połączonych z danym rekordem.
Drzewa Plan wykładu Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Drzewo struktura, w której element może posiadać wiele następników, lecz tylko jednego poprzednika. Drzewo binarne liczba następników wynosi zero, jeden lub dwa. Drzewo BST (ang. Binary Search Tree) drzewo binarne, w którym lewe poddrzewo każdego węzła zawiera wyłącznie elementy o kluczach mniejszych niż klucz węzła a prawe poddrzewo zawiera wyłącznie elementy o kluczach większych. Drzewo AVL (Adelsona-Velskiego oraz Landisa) zrównoważone binarne drzewo poszukiwań (BST), w którym wysokość lewego i prawego poddrzewa każdego węzła różni się co najwyżej o jeden.
Przykłady drzew binarnych Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej
Średni czas odszukania Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Średni czas odszukania opisuje wzór: L = gdzie: N c i p i, i=1 c i liczba prób wykonanych w celu odnalezienia i-tego rekordu, p i prawdopodobieństwo odwołania do i-tego rekordu, N wielkość przeszukiwanego zbioru danych.
Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Średni czas odszukania - wyszukiwanie liniowe Założenia: prawdopodobieństwo odwołania do każdego z rekordów jest jednakowe. L = N c i p i = i=1 N i=1 i N = N + 1 = O(N) 2
Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Średni czas odszukania - wyszukiwanie binarne Odszukanie rekordu w przypadku: optymistycznym wymaga 1 próby, pesymistycznym wymaga log 2 (N + 1) prób. Średni czas odszukania rekordu: N L = c i p i = O(log 2 (N)). i=1
Średni czas odszukania - drzewo BST Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Wyszukiwanie w drzewie binarnym w przypadku: optymistycznym wymaga 1 próby, pesymistycznym wymaga N prób drzewo degeneruje się do listy, np. dla posortowanych danych. Średnio liczba prób wynosi: gdzie γ 0.577 jest stałą Eulera. L = 2(log 2 (N) + γ) 3, Drzewo wyważone skraca nam drogę poszukiwań średnio o 39%.
Drzewa binarne w pamięci dyskowej Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Gdy drzewo binarne przechowywane jest na dysku, z każdym krokiem związany dostęp do dysku. Dla drzewa AVL - maksymalna liczba kroków log 2 N (wysokość drzewa).
Drzewa binarne w pamięci dyskowej Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Gdy drzewo binarne przechowywane jest na dysku, z każdym krokiem związany dostęp do dysku. Dla drzewa AVL - maksymalna liczba kroków log 2 N (wysokość drzewa).
Drzewa binarne w pamięci dyskowej Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Gdy drzewo binarne przechowywane jest na dysku, z każdym krokiem związany dostęp do dysku. Dla drzewa AVL - maksymalna liczba kroków log 2 N (wysokość drzewa).
Drzewa binarne w pamięci dyskowej Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Gdy drzewo binarne przechowywane jest na dysku, z każdym krokiem związany dostęp do dysku. Dla drzewa AVL - maksymalna liczba kroków log 2 N (wysokość drzewa).
Drzewo wielokierunkowe Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej Własności drzewa: dla każdego składnika, z wyjątkiem pierwszego istnieje dokładnie jeden składnik poprzedni (poprzednik), każdy składnik posiada co najwyżej n (n 2) składników następnych (następników), pierwszy składnik (korzeń) nie posiada poprzednika, wszystkie składniki ostatnie (liście) nie mają następnika. Jeśli n = 2 to drzewo nazywamy drzewem binarnym. Gdy n > 2, drzewo nazywamy wielokierunkowym rzędu n. Każdą strukturę dającą się przedstawić w postaci drzewa wielokierunkowego można także przedstawić w postaci równoważnego drzewa binarnego.
Drzewo wielokierunkowe Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej
Sformułowanie problemu Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu wielokierunkowego Znalezienie takiej struktury drzewa wielokierunkowego, by dla danej objętości bazy V, czas odszukania rekordu danego kluczem był minimalny. Oznaczenia: h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i, T D czas odczytu strony z dysku, T P czas realizacji operacji testu na danych w pamięci operacyjnej.
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Zależność objętości bazy od wysokości drzewa h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i. V = m 1 + (m 1 + 1) m 2 (m 1 + 1) (m 2 + 1) m 3 + (m 1 + 1) (m 2 + 1) (m 3 + 1) m 4 +... (m 1 + 1) (m 2 + 1) (m 3 + 1)... (m h 1 + 1) m h
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Zależność objętości bazy od wysokości drzewa h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i. V = (m 1 + 1) + (m 1 + 1) m 2 (m 1 + 1) (m 2 + 1) m 3 + (m 1 + 1) (m 2 + 1) (m 3 + 1) m 4 +... (m 1 + 1) (m 2 + 1) (m 3 + 1)... (m h 1 + 1) m h 1
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Zależność objętości bazy od wysokości drzewa h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i. V = (m 1 + 1) (1 + m 2 (m 2 + 1) m 3 + (m 2 + 1) (m 3 + 1) m 4 +... (m 2 + 1) (m 3 + 1)... (m h 1 + 1) m h ) 1
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Zależność objętości bazy od wysokości drzewa h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i. V = (m 1 + 1) (m 2 + 1) (1+... ) 1 m 3 + (m 3 + 1) m 4 + (m 3 + 1)... (m h 1 + 1) m h
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Zależność objętości bazy od wysokości drzewa h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i. V = (m 1 + 1) (m 2 + 1) (m 3 + 1)... ) 1 (1+ m 4 +... (m h 1 + 1) m h
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Zależność objętości bazy od wysokości drzewa h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i. V = (m 1 + 1) (m 2 + 1) (m 3 + 1)... (1 + m h ) 1 = h (m j + 1) 1 j=1
Maksymalny czas dostępu Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Maksymalny czas dostępu wyraża się wzorem: h T max = h T D + T P m j. j=1 Przy założeniu, że T D = αt P oraz T P = 1 h h T max = h α + m j = (α + m j ). j=1 j=1 h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i, T D czas odczytu strony z dysku, T P czas realizacji operacji testu na danych w pamięci operacyjnej.
Maksymalny czas dostępu Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Maksymalny czas dostępu wyraża się wzorem: h T max = h T D + T P m j. j=1 Przy założeniu, że T D = αt P oraz T P = 1 h h T max = h α + m j = (α + m j ). j=1 j=1 h liczba poziomów drzewa, m i liczba elementów na stronie poziomu i, T D czas odczytu strony z dysku, T P czas realizacji operacji testu na danych w pamięci operacyjnej.
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Znaleźć przy ograniczeniu min T max = min m 1,m 2,...,m h,h m 1,m 2,...,m h,h h (α + m j ) j=1 h (m j + 1) 1 V = 0 j=1
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu Znaleźć przy ograniczeniu min T max = min m 1,m 2,...,m h,h m 1,m 2,...,m h,h h (α + m j ) j=1 h (m j + 1) 1 V = 0 j=1 Jest to problem minimalizacji funkcji z ograniczeniami typu równościowego, które rozwiązuje się metodą mnożników Lagrange a.
Sformułowanie problemu Zależność objętości bazy od wysokości drzewa Maksymalny czas dostępu - rozwiązanie Zakładając, że wysokość drzewa h jest stała, struktura będzie optymalna, gdy rozmiary stron na każdym z poziomów będą takie same. Wtedy: Podsumowując: V = (m + 1) h 1 oraz T max = h(α + m). im większy współczynnik α tym bardziej opłaca się budować duże strony, czyli obniżać wysokość drzewa, większy rozmiar strony to większe zapotrzebowanie na pamięć operacyjną, konieczny jest rozsądny kompromis między zajętością pamięci a czasem odszukiwania rekordu.
Wady drzew BST - wprowadzenie Odszukiwanie w B-drzewie Drzewa BST, nawet w wersjach zrównoważonych, nie najlepiej nadają się do przechowywania na dysku komputera. Specyfika pamięci dyskowej polega na tym, że czas dostępu do niej jest znacznie (o kilka rzędów wielkości) dłuższy niż do pamięci wewnętrznej (RAM), odczyt i zapis danych dokonuje się większymi porcjami (zwanymi blokami lub stronami). Chaotyczne rozmieszczenie węzłów drzewa BST na dysku prowadzi do większej niż to naprawdę konieczne liczby dostępów.
- wprowadzenie - wprowadzenie Odszukiwanie w B-drzewie to drzewa poszukiwań wyższych rzędów wynalezione na początku lat sześćdziesiątych XX wieku przez Bayera i MacCreighta. W węźle drzewa poszukiwań rzędu n jest maksymalnie n wskaźników do synów oraz n-1 kluczy, które rozdzielają elementy poszczególnych poddrzew. Rozmiar węzła w B-drzewie dobiera się zwykle tak, aby możliwie dokładnie wypełniał on stronę na dysku. Zachowanie zrównoważenia umożliwione jest dzięki zmiennemu stopniowi wypełnienia węzłów.
- definicja - wprowadzenie Odszukiwanie w B-drzewie B-drzewo klasy t(h, m) jest drzewem pustym lub musi spełniać następujące własności: 1 korzeń jest liściem albo ma od 2 do 2m + 1 potomków, 2 wszystkie liście są na tym samym poziomie, 3 każdy węzeł wewnętrzny oprócz korzenia ma od m + 1 do 2m + 1 potomków i węzeł mający k potomków zawiera k-1 kluczy, 4 każdy liść zawiera od m do 2m kluczy.
- wnioski - wprowadzenie Odszukiwanie w B-drzewie Warunki (3) i (4) gwarantują wykorzystanie przestrzeni dysku przynajmniej w około 50%. Warunek (2) zapewnia niewielką wysokość drzewa, dla drzewa zawierającego N kluczy: log 2m+1 (N + 1) h 1 + log m+1 N + 1 2 Koszt odszukania w ch jest co najwyżej proporcjonalny do wysokości drzewa. Duża liczba m (np. 1024) jest kluczowa dla wydajności B-drzew.
Odszukiwanie w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Poszukiwanie klucza X rozpoczynamy od korzenia. W aktualnym węźle zawierającym klucze k 1 < k 2 <... < k n szukamy klucza X (sekwencyjnie lub binarnie). Jeśli to poszukiwanie kończy się niepowodzeniem, to: jeśli aktualny węzeł jest liściem - klucza X w ogóle nie ma w drzewie lub mając wyznaczony indeks i o tej własności, że k i 1 < x < k i (przy założeniu, że k 0 = oraz k n+1 = ), rekurencyjnie poszukujemy klucza x w poddrzewie o korzeniu wskazywanym przez p i.
Przykład odszukiwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Przykład klasy t(3,2)
Przykład odszukiwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Szukany rekord o kluczu 40
Przykład odszukiwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Szukany rekord o kluczu 15
Przykład odszukiwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Szukany rekord o kluczu 16
- wprowadzenie Odszukiwanie w B-drzewie Dołączanie poprzedzone jest algorytmem odszukania. Znany jest więc węzeł, do którego ma być dołączony element. Dołączenie może być bezkolizyjne i element dołączany jest w ten sposób, by zachować rosnące uporządkowanie wartości klucza na stronie, spowodować przepełnienie strony, gdy na stronie zapamiętanych jest już 2m elementów.
- wprowadzenie Odszukiwanie w B-drzewie W przypadku przepełnienia stosuje się metodę kompensacji, gdy jedna ze stron sąsiadujących ze stroną z przepełnioną zawiera mniej niż 2m elementów metodę podziału przepełnionej strony na dwie, co może wywołać potrzebę podziału na jeszcze wyższym poziomie i tak aż do korzenia. Konsekwencją podziału strony korzenia jest powiększenie wysokości drzewa, dlatego w pierwszym rzędzie stosuje się metodę kompensacji.
Przykład wstawiania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Wstawiany rekord o kluczu 34 - odszukanie strony
Przykład wstawiania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Wstawiany rekord o kluczu 34 - dołączenie bezkolizyjne
Przykład wstawiania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Wstawiany rekord o kluczu 48 - przepełnienie
Przykład wstawiania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Wstawiany rekord o kluczu 48 - metoda kompensacji
Przykład wstawiania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Wstawiany rekord o kluczu 48 - przepełnienie
Przykład wstawiania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Wstawiany rekord o kluczu 48 - metoda podziału
- wprowadzenie Odszukiwanie w B-drzewie również zaczyna się od odszukania węzła z kluczem do usunięcia. Jeśli znaleziony węzeł jest liściem, to element jest z niego usuwany. Jeśli znaleziony węzeł nie jest liściem, to 1 w miejsce usuwanego elementu, wpisywany jest element E min o najmniejszej wartości klucza z poddrzewa wskazywanego przez wskaźnik, stojący bezpośrednio po prawej stronie usuwanego elementu. 2 Element E min jest następnie wstawiany w miejsce elementu usuwanego i usuwany ze strony liścia.
- wprowadzenie Odszukiwanie w B-drzewie Usunięcie elementu może spowodować niedomiar (liczba elementów na stronie może spaść poniżej wartości m). W przypadku niedomiaru stosuje się metodę łączenia, gdy jedna ze stron sąsiadujących ze stroną z niedomiarem zawiera tylko m elementów, metodę kompensacji. Stosowanie operacji łączenia jest jedyną metodą zmniejszenia wysokości drzewa.
Przykład usuwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Usuwany rekord o kluczu 38 - usunięcie bezkolizyjne
Przykład usuwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Usuwany rekord o kluczu 48 - problem niedomiaru
Przykład usuwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Usuwany rekord o kluczu 48 - metoda łączenia
Przykład usuwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Usuwany rekord o kluczu 25 - znaleziony węzeł nie jest liściem, więc szukany jest element E min w odpowiednim poddrzewie
Przykład usuwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Usuwany rekord o kluczu 25 krok 1 - w miejsce usuwanego elementu, wpisywany jest element E min
Przykład usuwania w B-drzewie - wprowadzenie Odszukiwanie w B-drzewie Usuwany rekord o kluczu 25 krok 2 - ostateczne usunięcie jest bezkolizyjne