1 Plan rozdziału 2 Indeksy Indeksy jednopoziomowe indeks podstawowy indeks zgrupowany indeks wtórny Indeksy wielopoziomowe Indeksy typu B-drzewo B-drzewo B+ drzewo B* drzewo Wprowadzenie 3 Indeks podstawowy anchor record 4 Ogólna idea indeksu wtórna ścieżka dostępu funkcja odwzorowująca wartość atrybutu na adres rekordu indeks na końcu książki Zalety uporządkowanie danych mały rozmiar szybki dostęp (log 2 (n) lub log fo (n)) Wady synchronizacja danych zmniejszenie współbieżności i dodatkowe blokady Adamczyk, Jan Aziniak, Adam Beszta, Ewelina Zuzińska, Agnieszka Adamczyk, Jan Alkowska, Ewa Arurczak, Rafał Awrowski, Tomasz Aziniak, Adam Baran, Czesław Bawarski, Cezary Berłowski, Damian Beszta, Ewelina Bijak, Zbigniew Biwilski, Krzysztof Boilski, Edward Borowczak, Krystyna Bukaczyk, Piotr Caliński, Andrzej Ciarkowski, Wiesław Zuzińska, Agnieszka Zwierz, Adam Żołądkowski, Jan Żółw, Anna
Indeks podstawowy - cechy Indeks podstawowy (ang. primary index) jest założony na kluczu podstawowym pliku uporządkowanego i zawiera jeden klucz dla każdego bloku dyskowego Indeks podstawowy jest indeksem rzadkim (ang. sparse) Struktura fizyczna uporządkowana lista par <K(i),P(i)> każdy klucz reprezentuje pierwszą wartość w bloku dyskowym każdy wskaźnik wskazuje na blok dyskowy pierwszy rekord w bloku to kotwica bloku (ang. anchor record) Zalety mniejszy rozmiar niż oryginalny plik przeszukiwanie przez połowienie binarne Wady wysoki koszt modyfikacji (rozwiązania: lista łączona rekordów przepełnienia lub nieuporządkowany plik przepełnienia) 5 Indeks podstawowy - przykład Dany jest plik uporządkowany ile wynosi współczynnik blokowania pliku? ile bloków dyskowych zajmuje plik? ile potrzeba odczytów bloków żeby zlokalizować dany rekord? ile wynosi współczynnik blokowania indeksu? z ilu bloków składa się indeks? ile potrzeba odczytów bloków żeby zlokalizować dany rekord przy pomocy indeksu podstawowego? 6 Indeks zgrupowany 7 Indeks zgrupowany - cechy 8 Indeks zgrupowany (ang. clustering index) jest założony na atrybucie porządkującym pliku uporządkowanego. Indeks zawiera jeden klucz dla każdej wartości atrybutu Indeks zgrupowany jest indeksem rzadkim Struktura fizyczna uporządkowana lista par <K(i),P(i)> każdy klucz reprezentuje jedną wartość indeksowanego atrybutu każdy wskaźnik wskazuje na blok dyskowy Zalety mniejszy rozmiar niż oryginalny plik przeszukiwanie przez połowienie binarne Wady wysoki koszt modyfikacji (rozwiązanie: rezerwacja całego bloku na rekordy z daną wartością indeksowanego atrybutu)
Indeks zgrupowany - modyfikacja 9 Indeks zgrupowany - przykład 10 Dany jest plik uporządkowany liczba różnych wartości atrybutu porządkującego v = 1000 ile wynosi współczynnik blokowania pliku? ile bloków dyskowych zajmuje plik? ile potrzeba odczytów bloków żeby zlokalizować dany rekord? ile wynosi współczynnik blokowania indeksu? z ilu bloków składa się indeks? ile potrzeba odczytów bloków żeby zlokalizować dany rekord przy pomocy indeksu zgrupowanego? Adamczyk, Jan Alkowska, Ewa Aziniak, Adam Bawarski, Cezary Indeks wtórny (klucz) Żołądkowski, Jan Alkowska, Ewa Kawecki, Adam Jarochowski, Tomasz 11 Indeks wtórny (atrybut) 12 Bijak, Zbigniew Borowczak, Krystyna Bukaczyk, Piotr Caliński, Andrzej Ciarkowski, Wiesław Jarochowski, Tomasz Karwat, Julian Kawecki, Adam Aziniak, Adam Sztam, Paweł Bawarski, Cezary Kupczak, Iza Mruk, Arkadiusz Bijak, Zbigniew Adamczyk, Jan Żółw, Anna Kupczak, Iza Mruk, Arkadiusz Potrasiuk, Grzegorz Sztam, Paweł Borowczak, Krystyna Potrasiuk, Grzegorz Wilczyński, Kamil Ciarkowski, Wiesław Wilczyński, Kamil Zuzińska, Agnieszka Żołądkowski, Jan Żółw, Anna Zuzińska, Agnieszka Karwat, Julian Bukaczyk, Piotr Caliński, Andrzej
Indeks wtórny - cechy 13 Indeks wtórny przykład (klucz) 14 Indeks wtórny (ang. secondary index) jest założony na kluczu lub atrybucie pliku nieuporządkowanego, indeks zawiera jeden klucz dla każdego rekordu Indeks wtórny jest gęsty (ang. dense) Struktura fizyczna uporządkowana lista par <K(i),P(i)> każdy klucz reprezentuje jeden rekord indeksowanego pliku każdy wskaźnik wskazuje na blok dyskowy (lub rekord) Zalety mniejszy rozmiar niż oryginalny plik przeszukiwanie przez połowienie binarne dużo większe przyspieszenie niż dla indeksu podstawowego Wady konieczność pielęgnacji indeksu Dany jest plik w organizacji stosu ile wynosi współczynnik blokowania pliku? ile bloków dyskowych zajmuje plik? ile potrzeba odczytów bloków żeby zlokalizować dany rekord? ile wynosi współczynnik blokowania indeksu? z ilu bloków składa się indeks? ile potrzeba odczytów bloków żeby zlokalizować dany rekord przy pomocy indeksu wtórnego? Indeks wtórny przykład (atrybut) 15 Podsumowanie indeksów jednopoziomowych 16 Dany jest plik w organizacji stosu liczba różnych wartości atrybutu indeksowanego v = 1000 ile wynosi współczynnik blokowania pliku? ile bloków dyskowych zajmuje plik? ile potrzeba odczytów bloków żeby zlokalizować wszystkie rekordy o podanej wartości atrybutu? ile wynosi współczynnik blokowania indeksu? z ilu bloków składa się indeks? ile potrzeba odczytów bloków żeby zlokalizować wszystkie rekordy o zadanej wartości atrybutu przy pomocy indeksu wtórnego? Klucz porządkujący Atrybut nieporządkujący Pole klucza indeks podstawowy indeks wtórny Pole zwykłego atrybutu indeks zgrupowany indeks wtórny Liczba pozycji Gęstość Kotwica bloku podstawowy bloki rzadki tak zgrupowany pozycje rzadki tak/nie wtórny (klucz) rekordy gęsty nie wtórny (atrybut) pozycje gęsty/rzadki nie
Indeks wielopoziomowy 17 Indeks wielopoziomowy - cechy 18 2 35 55 85 2 6 15 24 35 39 44 51 55 63 71 80 85 2 5 8 12 15 21 24 29 35 36 39 41 44 46 51 52 55 58 63 66 71 78 80 82 85 89 Współczynnik blokowania indeksu bfr i fan out (fo) plik indeksowy jest pierwszym poziomem indeksu indeks podstawowy na pierwszym poziomie to drugi poziom indeksu indeks podstawowy na drugim poziomie to trzeci poziom indeksu wysokość indeksu: t= log fo (r 1 ) Wyszukiwanie p address of top lovel block of index for j t step -1 to 1 do begin read the index block (at j th index level) whose address is p search block p for entry i such that K j (i) K < K j (i+1) p P j (i) /* wczytaj wskaźnik na poziomie j-tym */ end read the data file block whose address is p search block p for record with key = K Indeks wielopoziomowy - przykład 19 Struktury drzewiaste - pojęcia 20 Dany jest plik w organizacji stosu ile wynosi współczynnik blokowania indeksu wtórnego? z ilu bloków składa się pierwszy poziom indeksu? z ilu bloków składa się drugi poziom indeksu? z ilu poziomów składa się indeks wielopoziomowy? ile potrzeba odczytów bloków dyskowych aby zlokalizować dowolny rekord na podstawie wartości klucza? Podstawowe pojęcia drzewo (ang. tree) składa się z węzłów (ang. node), każdy węzeł (poza korzeniem (ang. root)) posiada jednego rodzica (ang. parent) i zero lub wiele dzieci (ang. children) węzeł nie posiadający dzieci nazywa się liściem (ang. leaf), węzeł posiadający potomków to węzeł wewnętrzny (ang. internal node) poziom (ang. level) węzła jest o jeden większy od poziomu rodzica, poziom korzenia drzewa wynosi 0 poddrzewem (ang. subtree) węzła nazywamy dany węzeł i wszystkie poddrzewa dzieci danego węzła E korzeń poziom 0 A poziom 1 B C D F G H I J poddrzewo węzła B liść węzeł wewnętrzny
Drzewo wyszukiwania 21 Drzewo wyszukiwania - przykład 22 Drzewo wyszukiwania (ang. search tree) rzędu p każdy węzeł posiada (p - 1) kluczy i p wskaźników każdy wskaźnik wskazuje na węzeł dziecka (lub jest pusty) w dowolnym momencie spełnione są dwa warunki wewnątrz każdego węzła K 1 < K 2 < < K q-1 dla wszystkich wartości X w poddrzewie wskazywanym przez P i spełnione jest K i-1 < X < K i (dla 1 < i < q) oraz K i-1 < X (dla i = q) rząd drzewa p = 3 wskaźnik na poddrzewo pusty wskaźnik 5 P 1 K 1 K i-1 P i K i K q-1 P q 3 6 9 X X X X < K 1 K i-1 < X < K i K q-1 < X 1 7 8 12 B-drzewo 23 B-drzewo: struktura 24 B-drzewo to zrównoważone drzewo wyszukiwania węzeł wewnętrzny <P 1,<K 1,Pr 1 >,P 2,<K 2,Pr 2 >,<K q-1,pr q-1 >,P q > P i to wskaźnik na poddrzewo, Pr i to wskaźnik na dane (blok/rekord) wewnątrz każdego węzła K 1 < K 2 < < K q-1 każdy węzeł ma co najmniej p/2 i co najwyżej p wskaźników na poddrzewa (za wyjątkiem korzenia) węzeł z q wskaźnikami na poddrzewa zawiera (q-1) kluczy i (q-1) wskaźników na dane wszystkie liście są na tym samym poziomie i mają taką samą strukturę co węzły wewnętrzne, w liściach wskaźniki na poddrzewa są puste dla wszystkich wartości klucza X w poddrzewie wskazywanym przez P i spełnione jest K i-1 < X < K i dla 1 < i < q, X < K i dla i = 1 i K i-1 < X dla i = q P P 1 Pr1 K P 2 i-1 Pri-1 i K P i Pri q-1 K P q-1 Prq-1 q K 1 X X X X < K 1 K i-1 < X < K i K q-1 < X Wartość p nazywa się rzędem drzewa (ang. order)
B-drzewo: przykład 25 B-drzewo: zadanie 26 rząd drzewa p = 3 wskaźnik na poddrzewo wskaźnik na dane pusty wskaźnik 5 8 Dany jest indeks typu B-drzewo: rozmiar indeksowanego atrybutu V = 9 bajtów rozmiar bloku dyskowego B = 512 bajtów rozmiar wskaźnika na poddrzewo P = 6 bajtów rozmiar wskaźnika na dane Pr = 7 bajtów wypełnienie węzłów 69% Odpowiedz na pytania: ile wynosi rząd drzewa? ile rekordów może pomieścić drzewo o wysokości 3? 1 3 6 7 9 12 B + -drzewo 27 B + -drzewo: struktura 28 B + -drzewo to modyfikacja B-drzewa węzeł wewnętrzny <P 1,K 1,P 2,K 2,,P q-1,k q-1,p q > P i to wskaźnik na poddrzewo wewnątrz każdego węzła K 1 < K 2 < < K q-1 każdy węzeł ma co najmniej p/2 i co najwyżej p wskaźników na poddrzewa (za wyjątkiem korzenia) węzeł z q wskaźnikami na poddrzewa zawiera (q-1) kluczy dla wszystkich wartości klucza X w poddrzewie wskazywanym przez P i spełnione jest K i-1 < X < K i dla 1 < i < q, X < K i dla i = 1 i K i-1 < X dla i = q liść <<K 1,Pr 1 >,<K 2,Pr 2 >,,<K q-1,pr q-1 >,P next > Pr i to wskaźnik na dane (blok/rekord) a P next to wskaźnik na następny liść wewnątrz każdego liścia K 1 < K 2 < < K q-1 każdy liść ma co najmniej p/2 kluczy wszystkie liście są na tym samym poziomie P 1 K 1 K i-1 K i P i K q-1 P q X X X X < K 1 K i-1 < X < K i K q-1 < X Pr K 1 1 Ki-1 Pr i-1 Pr i Pr q-1 Ki Kq-1 P next
B + -drzewo: przykład 29 B + -drzewo: zadanie 30 rząd drzewa p = 3 wskaźnik na poddrzewo/liść wskaźnik na dane 5 pusty wskaźnik 3 7 8 Dany jest indeks typu B + -drzewo: rozmiar indeksowanego atrybutu V = 9 bajtów rozmiar bloku dyskowego B = 512 bajtów rozmiar wskaźnika na poddrzewo P = 6 bajtów rozmiar wskaźnika na dane Pr = 7 bajtów Odpowiedz na pytania: ile wynosi fan-out liści? ile wynosi fan-out węzłów wewnętrznych? ile rekordów może pomieścić drzewo o wysokości 3? 1 3 5 6 7 8 9 12 B + -drzewo: zadanie 31 B + -drzewo: dodawanie i usuwanie 32 Dany jest plik zawierający r = 10 000 rekordów, każdy rekord ma rozmiar R = 100B. Rozmiar bloku dyskowego wynosi B = 1024B. Plik jest nieuporządkowany i składowany w niedzielonej organizacji rekordów. Na atrybucie A o rozmiarze 12B założono indeks typu B + - drzewo o współczynniku wypełnienia 100%. Wskaźniki na dane i na poddrzewo zajmują po 6B. ile wynosi fan-out drzewa? ile poziomów liczy drzewo indeksu? ile średnio trzeba odczytać bloków dyskowych aby znaleźć w pliku rekord o podanej wartości atrybutu A wykorzystując indeks typu B + -drzewo? Algorytm dodawania zaczynając od korzenia znajdź właściwy liść i umieść tam wartość jeśli dodanie wartości do liścia powoduje przepełnienie, to pozostaw początkowe j = (p + 1) / 2 wartości w liściu, a pozostałe przenieś do nowego liścia, j-tą wartość przekopiuj do węzła nadrzędnego jeśli przeniesienie wartości do węzła nadrzędnego powoduje przepełnienie, to pozostaw początkowe j = (p + 1) / 2 wartości w węźle, a pozostałe przenieś do nowego węzła, j-tą wartość przenieś do węzła nadrzędnego Przykład: drzewo rzędu p = 3, wstaw 8,5,1,7,3,12,9,6 Algorytm usuwania zaczynając od liści usuń wartość, jeśli wypełnienie liścia spadnie poniżej p/2 to zespól liść z lewym (prawym) sąsiadem i redystrybuuj wartości jeśli konieczne, propaguj usunięcie do węzłów wewnętrznych Przykład: usuń 5,12,9
Haszowanie partycjonowane 33 Idea haszowania partycjonowanego (ang. partition hashing) dla indeksu założonego na n atrybutach funkcja haszowa H(.) produkuje wynik z n osobnymi adresami, a konkatenacja tych adresów daje adres szukanego bloku indeks nie wspiera zapytań zakresowych Przykład klucz haszowy <ZESPOL, WIEK>, ZESPOL 0..7, WIEK 0..31 H('ALGORYTMY') = 6 = 110, H('42') = 29 = 11101 wyszukiwanie w bloku nr: 11011101