Plan wykładu Bazy Wykład 11: Indeksy Pojcie indeksu - rodzaje indeksów Metody implementacji indeksów struktury statyczne struktury dynamiczne Małgorzata Krtowska Katedra Oprogramowania e-mail: mmac@ii.pb.bialystok.pl Bazy (studia dzienne) 2 Metody organizacji pliku rekordów lik nieuporzdkowany Plik posortowany Plik haszowany Pojcie indeksu Indeks to struktura na dysku umoliwiajca szybkie wyszukiwanie w bazie na podstawie wartoci klucza wyszukiwania jak np. nazwisko osoby. Indeks = skorowidz w ksice. W najprostszej postaci wyszukiwanie polega na tym, e majc warto poszukujemy rekordów, w którym ta warto wystpuje w danym polu. Bazy (studia dzienne) 3 Bazy (studia dzienne) 4
Klucz wyszukiwania Plik indeksowy Klucz wyszukiwania dla indeksu jest to wybrane pole lub pola rekordu, wzgldem których ma odbywa si wyszukiwanie. Indeks jest to struktura składajca si z wzłów, w których s zapisywane rekordy indeksu w nastepujcej postaci: pozycje k* okrelane wzgldem wartoci klucza wyszukiwania k tzn sam rekord o kluczu k para (k,w) gdzie k jest kluczem rekordu, a w jest wskanikiem do rekordu o tym kluczu para (k,w 1,.., w n ), gdzie k jest kluczem rekordu, a w 1,.., w n s wskanikami do rekordów o kluczu k (wymaga zmiennej liczby pól) pozycje indeksu kierujce wyznaczeniem właciwej pozycji k* w oparciu o wartoc klucza wyszukiwania k (np. para (warto klucza, wskanik do wzła w indeksie) Bazy (studia dzienne) 5 Zawarto indeksu jest przechowywana w pliku indeksowym W skład pliku indeksowego wchodz rekordy indeksu bdce pozycjami lub pozycjami indeksu. Wzeł odpowiada na ogół stronie dyskowej i zawiera albo pozycje albo pozycje indeksu. Bazy (studia dzienne) 6 Rodzaje indeksów Indeksy wewntrzne i zewntrzne Wewntrzny - gdy plik indeksu zawiera w sobie plik tzn. pozycje indeksu pokrywaj si z rekordami (tabela jest zorganizowana przez indeks) Wewntrzny pogrupowany - gdy pozycje s zapisywane w kolejnoci uporzdkowanej wzgldem wartoci pewnego klucza wyszukiwania tak jak w pliku posortowanym Wewntrzny niepogrupowany - przykład: organizacja pliku haszowego Zewntrzny - indeks, który nie jest indeksem wewntrznym. Moe by tylko jeden indeks wewntrzny i wiele indeksów zewntrznych Adamski Lech Rudek Indeks wewntrzny pogrupowany wzgldem nazwiska Adamski, 56, 2000 Bakowski, 25, 1000 Kasacki, 29, 3000 Lech, 60, 2000 Modrzewski, 25,2000 Michalski, 30, 3000 Rudek, 31, 5000 Zybert, 45, 4400 25 25 29 30 31 45 56 60 Bazy (studia dzienne) 7 Plik Indeks zewntrzny (niepogrupowany) wzgldem wieku Bazy (studia dzienne) 8
Złoone klucze wyszukiwania Metody implementacji indeksów Pojedyncze klucze wyszukiwania - wyszukiwanie według pojedynczego pola Złoone klucze wyszukiwania - wyszukiwanie według kombinacji wikszej liczby pól 11,80 12,10 12,20 13,75 <wiek, zarobki> 10,12 20,12 75,13 80,11 ala 12 10 ela 11 80 iza 12 20 ola 13 75 Rekordy posortowane wzgldem imienia 11 12 12 13 <wiek> 10 20 75 80 Indeksy statyczne Indeksy dynamiczne <zarobki, wiek> <zarobki> Bazy (studia dzienne) 9 Bazy (studia dzienne) 10 Statyczne drzewo ISAM (indexed sequential access method) Wyszukiwanie binarne - (pliki posortowane) porównujemy poszukiwany klucz z kluczem rekordu znajdujcym si w rodku ciagu i w zalenoci od wyniku porównania poszukujemy klucza albo w lewej czci albo w prawej, stosujc rekurencyjnie opisywan metod Poszukiwanie binarne łatwiej zastosowa jest nie bezporednio do pliku rekordów, ale do pliku zawierajcego same klucze rekordów k 1 <k 2 <...<k N, gdzie k i jest najmniejszym kluczem na stronie o numerze i. Plik z kluczami stanowi plik indeksowy Po wyznaczeniu najbliszego pasujcego klucza wystarczy przej do strony z rekordami, na której znajduje si rekord o danym kluczu. Jednopoziomowy plik indeksowy k1 k2 kn Plik indeksowy Statyczne drzewo ISAM Strona indeksu jednopoziomowego (wzeł) składa si z pozycji indeksu <k i, P i >, gdzie k i jest kluczem, a P i jest wskanikiem na stron zawierajc wartoci klucza >= od klucza k i. P 0 stanowi wskanik na stron o wartociach klucza <k 1. Pozycja indeksu p 0 k 1 p 1 k 2 p 2... k m p m Zasady poszukiwania danego klucza 21 34 56 Strona indeksu k 1 <k 2 <...<k m Strona 1 Strona 2 Strona 3 strona N Plik wartociami klucza <21 21<=k <34 34<=k <56 k >=56 Bazy (studia dzienne) 11 Bazy (studia dzienne) 12
Indeks wielopoziomowy (drzewo ISAM) Struktura drzewa ISAM Strona indeksu wielopoziomowego (wzeł) składa si z pozycji indeksu <k i, P i >, gdzie k i jest kluczem, a P i jest wskanikiem do wzła niszego poziomu zawiarajacego wartoci kluczy >= od klucza k i. P 0 stanowi wskanik do wzła wyszego poziomu zawierajcego wartoci klucza <k 1. Wzły wewntrzne Pozycja indeksu p 0 k 1 p 1 k 2 p 2... k m p m Strona indeksu k 1 <k 2 <...<k m licie i na wzły wyszego poziomu Strony nadmiarowe Strony główne Bazy (studia dzienne) 13 Bazy (studia dzienne) 14 Problemy Podsumowanie drzew ISAM Dodawanie i usuwanie rekordów w przypadku indeksu głównego jest to problem złoony, gdy musimy wstawi rekord na odpowiedniej pozycji w pliku. Wie si to z przeniesieniem czci rekordów w pliku, a co za tym idzie zmiany wpisu w indeksie, gdy przesunicie rekordów powoduje zmiany wartoci kluczy w danym bloku. Próby rozwizania problemu: Wykorzystanie nieuporzdkowanego pliku przepełnienia Uycie listy jednokierunkowej rekordów przepełnienia dla kadego bloku w pliku (przykład indeksu - kolejny slajd) Drzewa ISAM dobrze sprawdzaj si do wyszukiwania rekordu na podstawie wartoci jego klucza, a take rekordów z zakresu wartoci klucza: A<=klucz<=B; A<=klucz, klucz<=b Gdy liczba rekordów w pliku jest mniej wicej stała struktura ISAM jest dobra Niebezpieczestwo grupowania si kluczy w cigi na stronach nadmiarowych (rozwizanie struktury dynamiczne) Bazy (studia dzienne) 15 Bazy (studia dzienne) 16
Indeksy zewntrzne Indeks dla klucza unikalnego budowa pliku indeksowego: pary: <wartoc pola indeksu, wskanik na blok> bloki w kolejnoci dowolnej Dynamiczne indeksy wielopoziomowe B-drzewa Indeks dla pola dowolnego budowa pliku indeksowego pary: <warto pola, wskanik na blok wskaników na rekordy> B + - drzewa Bazy (studia dzienne) 17 Bazy (studia dzienne) 18 B-drzewo B-drzewo B-drzewo rzdu p: kady wierzchołek wewntrzny na posta: <P 1, <K 1, Pr 1 >, P 2, <K 2, Pr 2 >,...,<K q-1, P q-1 >, P q > gdzie q<=p. Kade P i oznacza wskanik drzewa - wskanik na inny wierzchołek w B-drzewie. Kade Pr i oznacza wskanik - wskanik na rekord, którego warto pola klucza wyszukiwania jest równa K i (lub blok w pliku zawierajcy ten rekord) w kadym wierzchołku K 1 <K 2 <...<K q-1 dla wszystkich wartoci pola wyszukiwania X w poddrzewie, na które wskazuje wskanik P i mamy K i-1 <X<K i, dla 1<i<q oraz K i-1 <X dla i=q Kady wierzchołek prócz korzeni i lici posiada co najmniej ceil(p/2) wskaników drzewa Wszystkie licie znajdujsi na tym samym poziomie. Licie posiadaj tak sam struktur co wierzchołki wewntrzne poza tym, e ich wskaniki drzewa s zerowe P 1 K 1 Pr 1 P 2 K i-1 Pr i-1 P i K i Pr i K q-1 Pr q-1 P q X<K 1 K i-1 <X<K i K q-1 <X Z powodu niejednolitosci wzłów dla B drzew operacje INSERT i DELETE s bardziej skomplikowane => B + - drzewa. Bazy (studia dzienne) 19 Bazy (studia dzienne) 20
B + - drzewo Wykorzystywane przez wiekszo implemantacji dynamicznych indeksów Wyróniamy wierzchołki wewntrzne i licie (róne struktury ) Wymagana zajto strony indeksu wynosi minimum 50% ( z wyjtkiem korzenia) Zajeto kadej strony licia wynosi minimum 50%. Wierzchołki lici s zwykle połczone razem, co zapewnia moliwo uzyskiwania uporzdkowanego dostpu do rekordów wzgldem pola wyszukiwania B + - drzewo jest wywaone tzn. kady li znajduje si na tej samej głbokoci Wierzchołki wewntrzne Struktura wierzchołków wewntrznych B+ - drzewa rzdu p: Kady wierzchołek wewntrzny ma posta <P 1, K 1, P 2,K 2,..., P q-1, K q-1, P q > gdzie q<=p i kade p i jest wskanikiem drzewa W kadym wierzchołku wewntrznym K 1 <K 2 <...<K q-1. Dla wszystkich wartoci pola wyszukiwania X w podrzewie, na które wskazuje wskanik p i mamy: K i-1 <X<K i, dla 1<i<q oraz K i-1 <X dla i=q Kady wierzchołek wewntrzny posiada najwyej p wskaników drzewa Kady wierzchołek wewntrzny oprócz korzenia i lici posiada posiada co najmniej ceil(p/2) wskaników drzewa. Korze posiada co najmniej 2 wskaniki drzewa. Wierzchołek wewntrzny o q wskanikach drzewa, gdzie q<=p posiada q-1 wartoci pola wyszukiwania Bazy (studia dzienne) 21 Bazy (studia dzienne) 22 Wierzchołki wewntrzne Wierzchołki lici P 1 K 1 P i-1 K i K q-1 P q i drzewa X<=K 1 K i-1 <X<=K i K q-1 <X Struktura wierzchołków lici B + - drzewa rzdu p: Kady wierzchołek licia ma posta: <<K 1, Pr 1>,<K 2,Pr 2 >,..., <K q-1, Pr q-1 >, P nast > gdzie q<=p i kade Pr i jest wskanikiem, za P nast wskazuje na nastpny wierzchołek licia w B + -drzewie. W kadym wierzchołku liscia K 1 <K 2 <.., K q-1, dla q<=p Kade Pr i jest wskanikiem wskazujcych na rekord, którego warto pola wyszukiwania jest równa k i lub na blok pliku zawierajcy dany rekord (lub na blok rekordu wskaników wskazujcych na rekordy, których wartoci pola wyszukiwania jest K i, jeeli pole wyszukiwania nie jest kluczem) Kady wierzchołek licia posiada co najmniej ceil(p/2) wskaników drzewa Wszystkie wierzchołki znajduj si na tym samym poziomie Bazy (studia dzienne) 23 Bazy (studia dzienne) 24
Wierzchołki lici K 1 Pr 1 K 2 Pr 2 K i Pr i K q-1 Pr q-1 P nast na nastpny wierzchołek licia w drzewie Podsumowanie drzew Zastosowania indeksów o strukturze drzewiastej wyszukiwanie zakresowe wyszukiwanie równowartociowe sortowanie (order by) wyszukiwanie przy uzgadnianiu wierszy w trakcie złczania tabel Drzewo ISAM - struktura statyczna struktura prostsza ni B + -drzewa modyfikowane s tylko licie wymagane s strony nadmiarowe, mogce pogorszyc czas wykonywania wyszukiwania B + -drzewo - struktura dynamiczna w praktyce wysoko<=3 zakładajc, e korze drzewa jest zawsze trzymany w buforze RAM, koszt wyszukania pozycji dancyh rekordu wynosi co najwyej 3 operacje we/wy Bazy (studia dzienne) 25 Bazy (studia dzienne) 26