Plan wykładu Bazy Wykład 8: 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 zaoczne) 2 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 zaoczne) 3 Klucz wyszukiwania 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 nastpujcej 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 warto klucza wyszukiwania k (np. para (warto klucza, wskanik do wzła w indeksie) Bazy (studia zaoczne) 4
Plik indeksowy 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. Rodzaje indeksów 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 Bazy (studia zaoczne) 5 Bazy (studia zaoczne) 6 Indeksy wewntrzne i zewntrzne Złoone klucze wyszukiwania 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 Plik Bazy (studia zaoczne) 7 25 25 29 30 31 45 56 60 Indeks zewntrzny (niepogrupowany) wzgldem wieku 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 <zarobki, wiek> ala 12 10 ela 11 80 iza 12 20 ola 13 75 Rekordy posortowane wzgldem imienia Bazy (studia zaoczne) 8 11 12 12 13 <wiek> 10 20 75 80 <zarobki>
Metody implementacji indeksów Indeksy statyczne Indeksy dynamiczne Statyczne drzewo ISAM (indexed sequential access method) Wyszukiwanie binarne - (pliki posortowane) porównujemy poszukiwany klucz z kluczem rekordu znajdujcym si w rodku cigu 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 Strona 1 Strona 2 Strona 3 strona N Plik Bazy (studia zaoczne) 9 Bazy (studia zaoczne) 10 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 Indeks wielopoziomowy (drzewo 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 zawierajcego wartoci kluczy >= od klucza k i. P 0 stanowi wskanik do wzła wyszego poziomu zawierajcego wartoci klucza <k 1. Pozycja indeksu p 0 k 1 p 1 k 2 p 2... k m p m i na wzły wyszego poziomu Strona indeksu k 1 <k 2 <...<k m wartociami klucza <21 21<=k <34 34<=k <56 k >=56 Bazy (studia zaoczne) 11 Bazy (studia zaoczne) 12
Struktura drzewa ISAM Problemy Wzły wewntrzne 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. licie Strony nadmiarowe Strony główne 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) Bazy (studia zaoczne) 13 Bazy (studia zaoczne) 14 Podsumowanie drzew ISAM 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) Indeksy zewntrzne Indeks dla klucza unikalnego budowa pliku indeksowego: pary: <warto pola indeksu, wskanik na blok> bloki w kolejnoci dowolnej Indeks dla pola dowolnego budowa pliku indeksowego pary: <warto pola, wskanik na blok wskaników na rekordy> Bazy (studia zaoczne) 15 Bazy (studia zaoczne) 16
Dynamiczne indeksy wielopoziomowe B-drzewa B + - drzewa 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 znajduj si na tym samym poziomie. Licie posiadaj tak sam struktur co wierzchołki wewntrzne poza tym, e ich wskaniki drzewa s zerowe Bazy (studia zaoczne) 17 Bazy (studia zaoczne) 18 B-drzewo 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 niejednolitoci wzłów dla B drzew operacje INSERT i DELETE s bardziej skomplikowane => B + - drzewa. B + - drzewo Wykorzystywane przez wikszo implementacji dynamicznych indeksów Wyróniamy wierzchołki wewntrzne i licie (róne struktury ) Wymagana zajto strony indeksu wynosi minimum 50% ( z wyjtkiem korzenia) Zajto 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 Bazy (studia zaoczne) 19 Bazy (studia zaoczne) 20
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 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 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 Wierzchołki wewntrzne 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 Bazy (studia zaoczne) 21 Bazy (studia zaoczne) 22 Wierzchołki lici Wierzchołki lici 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 licia 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 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 Bazy (studia zaoczne) 23 Bazy (studia zaoczne) 24
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 pogorszy 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 rekordu wynosi co najwyej 3 operacje we/wy Bazy (studia zaoczne) 25