plik


Bazy danych - BD Indeksy WykBad przygotowaB: Robert Wrembel BD  wykBad 7 (1) 1 Bazy danych - BD Plan wykBadu " Problematyka indeksowania " PodziaB indeksw i ich charakterystyka  indeks podstawowy, zgrupowany, wtrny  indeks rzadki, gsty " Indeks wielopoziomowy statyczny (ISAM) " Indeks wielopoziomowy dynamiczny (B+-drzewo) " Algorytm wstawiania danych do indeksu B+-drzewo BD  wykBad 7 (2) Celem wykBadu jest omwienie podstawowych koncepcji indeksowania danych i struktur indeksowych. W ramach wykBadu zostan omwione: - wprowadzenie do problematyki indeksowania danych, - charakterystyka r|nego rodzaju indeksw (podstawowy, zgrupowany, wtrny, rzadki i gsty), - indeks wielopoziomowy statyczny (ISAM), - indeks wielopoziomowy dynamiczny (B+-drzewo), - algorytm wstawiania danych do indeksu B+-drzewo. 2 Bazy danych - BD Wprowadzenie (1) " Problem:  Dany jest plik zawierajcy uporzdkowane lub nieuporzdkowane rekordy danych  W jaki sposb efektywnie zrealizowa wyszukanie rekordu lub rekordw z zadanego zakresu warto[ci wybranego pola? BD  wykBad 7 (3) Rozwa|my plik zawierajcy uporzdkowane lub nieuporzdkowane rekordy danych. Jak pamitamy z poprzedniego wykBadu wyszukiwanie danych w plikach nie jest efektywne. Z tego wzgldu chcieliby[my znalez sposb efektywnego wyszukiwania danych. 3 Bazy danych - BD Wprowadzenie (2) " Odpowiedz:  Utworzy drugi plik, zdefiniowany na atrybucie wykorzystanym do specyfikacji kryterium poszukiwania  Plik ten zawiera rekordy odpowiadajce poszukiwanym warto[ciom pierwszych rekordw w poszczeglnych blokach pliku danych  Rekordy w dodatkowym pliku maj posta: <pierwszy klucz w bloku, wskaznik do bloku>  Plik dodatkowy jest uporzdkowany wedBug warto[ci poszukiwanych BD  wykBad 7 (4) Rozwizanie tego problemu bazuje na wykorzystaniu drugiego pliku zdefiniowanego na atrybucie wykorzystanym do specyfikowania kryterium przeszukiwania. Plik ten zawieraBby rekordy odpowiadajce poszukiwanym warto[ciom pierwszych rekordw w poszczeglnych blokach pliku danych. Rekordy w dodatkowym pliku miaByby posta: <pierwszy klucz w bloku, wskaznik do bloku>, a plik dodatkowy byBby uporzdkowany wedBug warto[ci poszukiwanych. Taki plik dodatkowy nazywa si indeksem. 4 Bazy danych - BD Wprowadzenie (3) " Indeks - dodatkowa struktura fizyczna " Cel stosowania - przy[pieszenie dostpu do danych " ZakBadane na pojedynczych atrybutach lub zbiorach atrybutw relacji  atrybuty te s nazywane indeksowymi " Model fizyczny indeksu  uporzdkowany plik rekordw indeksu (ang. data entry) o staBej dBugo[ci  rekord indeksu zawiera dwa pola " klucz reprezentujcy jedn z warto[ci wystpujcych w atrybutach indeksowych relacji " wskaznik do bloku danych zawierajcy krotk, ktrej atrybut indeksowy rwny jest kluczowi BD  wykBad 7 (5) Indeks zdefiniowany na pliku jest dodatkow struktur fizyczn, ktrej celem jest przyspieszenie wykonywania operacji, ktre nie s wystarczajco efektywnie wspierane przez podstawowe organizacje plikw i struktury logiczne danych. Indeksy s zakBadane na pojedynczych atrybutach lub zbiorach atrybutw relacji. Atrybuty te nosz nazw atrybutw indeksowych. Indeks jest uporzdkowanym plikiem rekordw indeksu (ang. data entry) o staBej dBugo[ci. Rekordy indeksu zawieraj dwa pola: klucz reprezentujcy jedn z warto[ci wystpujcych w atrybutach indeksowych relacji oraz wskaznik do bloku danych zawierajcy krotk, ktrej atrybut indeksowy rwny jest kluczowi. 5 Bazy danych - BD Wprowadzenie (4) " Rekord indeksu - k*  zawiera dostateczn informacj umo|liwiajc wyszukanie (jednego lub wicej) rekordw danych o warto[ci klucza k " Pytanie:  W jaki sposb rekordy indeksu powinny by zorganizowane, aby efektywnie wspiera wyszukiwanie rekordw o danej warto[ci klucza?  Co powinien zawiera rekord indeksu? BD  wykBad 7 (6) Ka|dy rekord indeksu, oznaczony k*, zawiera dostateczn informacj umo|liwiajc wyszukanie (jednego lub wicej) rekordw danych o warto[ci klucza k. Projektujc struktur indeksu nale|y odpowiedzie na dwa pytania: Po pierwsze, w jaki sposb rekordy indeksu powinny by zorganizowane, aby efektywnie wspiera wyszukiwanie rekordw o danej warto[ci klucza? Po drugie, co powinien zawiera rekord indeksu? 6 Bazy danych - BD Rekordy indeksu " Typy rekordw indeksu: 1. Rekord indeksu k* jest rekordem danych (o warto[ci klucza k) 2. Rekord indeksu jest par <k, rid>, gdzie rid jest identyfikatorem rekordu danych o warto[ci klucza k 3. Rekord indeksu jest par <k, rid-list>, gdzie rid-list jest list identyfikatorw rekordw danych o warto[ci klucza k 4. Rekord indeksu jest par <k, bitmapa>, gdzie bitmapa jest wektorem 0 i 1 reprezentujcym zbir rekordw danych BD  wykBad 7 (7) Rekord indeksu k* umo|liwia wyszukanie rekordw danych o warto[ci klucza k. Wyr|nia si cztery typy rekordw indeksu: 1. Rekord indeksu k* jest rekordem danych (o warto[ci klucza k). 2. Rekord indeksu jest par <k, rid>, gdzie rid jest identyfikatorem rekordu danych o warto[ci klucza k. 3. Rekord indeksu jest par <k, rid-list>, gdzie rid-list jest list identyfikatorw rekordw danych o warto[ci klucza k. 4. Rekord indeksu jest par <k, bitmapa>, gdzie bitmapa jest wektorem 0 i 1 reprezentujcym zbir rekordw danych. 7 Bazy danych - BD Rodzaje indeksw - charakterystyka atrybutu indeksowego " Indeks podstawowy (primary index)  zaBo|ony na atrybucie porzdkujcym unikalnym " Indeks zgrupowany (clustering index)  zaBo|ony na atrybucie porzdkujcym nieunikalnym " Indeks wtrny (secondary index)  zaBo|ony na atrybucie nieporzdkujcym BD  wykBad 7 (8) Z punktu widzenia charakterystyki atrybutu indeksowego wyr|nia si trzy rodzaje indeksw: - indeks podstawowy (ang. primary index) - indeks zgrupowany (ang. clustering index) - indeks wtrny (ang. secondary index). Indeks podstawowy jest zaBo|ony na atrybucie porzdkujcym indeksowanego pliku. Atrybut porzdkujcy okre[la porzdek rekordw w pliku. Dla indeksu podstawowego atrybut porzdkujcy przyjmuje warto[ci unikalne. Indeks zgrupowany jest zakBadany rwnie| na atrybucie porzdkujcym, ale w tym przypadku jego warto[ci nie s unikalne. Indeks wtrny jest zakBadany na atrybucie, ktry nie jest atrybutem porzdkujcym pliku. 8 Bazy danych - BD Rodzaje indeksw - wskazania do pliku danych " Indeks gsty (dense)  posiada rekord indeksu dla ka|dego rekordu indeksowanego pliku danych " Indeks rzadki (sparse)  posiada rekordy tylko dla wybranych rekordw indeksowanego pliku danych BD  wykBad 7 (9) Z punktu widzenia liczby wskazaD indeksu do pliku danych wyr|nia si indeksy gste (ang. dense) i indeksy rzadkie (ang. sparse). Indeks gsty posiada rekord indeksu dla ka|dego rekordu indeksowanego pliku danych. Indeks rzadki posiada rekordy tylko dla wybranych rekordw indeksowanego pliku danych. 9 Bazy danych - BD Rodzaje indeksw - liczba poziomw " Indeksy jednopoziomowe  jeden plik indeksu dla jednego pliku danych " Indeksy wielopoziomowe  indeks do indeksu BD  wykBad 7 (10) Z punktu widzenia liczby poziomw indeksu wyr|nia si indeksy jednopoziomowe i wielopoziomowe. W pierwszym przypadku, dla pliku danych jest tworzony tylko jeden indeks (plik indeksu). W drugim przypadku, dla pliku danych tworzy si indeks (jak w przypadku pierwszym). Dodatkowo, do indeksu tworzy si dodatkowy indeks. 10 Bazy danych - BD Indeks podstawowy ... BD  wykBad 7 (11) Indeks podstawowy jest indeksem rzadkim poniewa| nie wszystkie rekordy pliku danych posiadaj rekordy indeksowe. Rekord indeksowy indeksu podstawowego dla warto[ci X zawiera adres bloku danych, w ktrym znajduje si rekord danych z warto[ci atrybutu indeksowego rwn X. Pogldow struktur indeksu podstawowego przedstawia slajd. Jak wida, wskazania z rekordw indeksowych prowadz do blokw danych. 11 Bazy danych - BD Indeks zgrupowany BD  wykBad 7 (12) Indeks zgrupowany jest rwnie| indeksem rzadkim poniewa| nie wszystkie rekordy pliku danych posiadaj rekordy indeksowe. Rekord indeksowy indeksu zgrupowanego dla warto[ci X zawiera adres bloku danych, w ktrym znajduje si pierwszy rekord danych z warto[ci atrybutu indeksowego rwn X. Wida to wyraznie dla warto[ci 2 rekordu indeksu. Rekord ten posiada wskazanie do pierwszego bloku danych - w bloku tym znajduje si pierwszy rekord z warto[ci 2 indeksowanego atrybutu. Taka organizacja pliku powoduje problemy z wstawianiem i rekordw, poniewa| porzdek rekordw po wstawieniu musi pozosta zachowany. 12 Bazy danych - BD Indeks zgrupowany z blokami nadmiarowymi blok nadmiarowy BD  wykBad 7 (13) Rozwizaniem tego problemu jest po pierwsze, zarezerwowanie caBego bloku na rekordy z t sam (jedn) warto[ci. Po drugie, zastosowanie blokw nadmiarowych, jak pokazuje slajd. Wstawiane rekordy s umieszczane w wolnych szczelinach bloku gBwnego, a po jego zapeBnieniu - w odpowiednim bloku nadmiarowym, do ktrego prowadzi wskaznik z bloku gBwnego. W przykBadzie ze slajdu, rekord z warto[ci 3 nie mie[ci si w bloku gBwnym, wic jest skBadowany w bloku nadmiarowym. Z bloku gBwnego przechowujcego rekordy z warto[ci atrybutu indeksowego rwn 3 prowadzi wskaznik do bloku nadmiarowego. 13 Bazy danych - BD Indeks wtrny BD  wykBad 7 (14) Indeks wtrny jest rwnie| uporzdkowany. Jest on zakBadany na atrybucie indeksowym pliku danych, ktry nie jest atrybutem porzdkujcym tego pliku. Ka|dy rekord pliku danych posiada swj odpowiednik w rekordzie indeksu. Std, indeks wtrny jest indeksem gstym. Rekord indeksu wtrnego skBada si z dwch pl: warto[ci pola indeksowego i wskaznika albo do rekordu albo do bloku danych zawierajcego ten rekord. Na slajdzie przedstawiono gsty indeks wtrny zaBo|ony na polu nieporzdkujcym, ktrego warto[ci s unikalne. Rekordy indeksu posiadaj wskazniki do blokw danych. 14 Bazy danych - BD Indeks o kluczu zBo|onym " Klucz indeksu mo|e zawiera kilka atrybutw - klucz zBo|ony Indeks<wiek; pensja> Indeks<wiek> Indeks<pensja; wiek> Indeks<pensja> BD  wykBad 7 (15) Klucz indeksu mo|e zawiera kilka atrybutw  taki klucz nazywamy kluczem zBo|onym. W przykBadzie ze slajdu zdefiniowano cztery r|ne indeksy. Pierwszy na kluczu zBo|onym <wiek, pensja>, drugi na kluczu zBo|onym <pensja, wiek>, trzeci na kluczu <wiek>, a czwarty na kluczu <pensja>. Indeksy na kluczach zBo|onych stosuje si do wyszukiwania rekordw speBniajcych warunki rwno[ciowe (tzw. zapytania punktowe) naBo|one jednocze[nie na pola wystpujce w kluczu zBo|onym. Indeks <wiek, pensja> bdzie przydatny do wyszukiwania rekordw speBniajcych warunki rwno[ciowe naBo|one jednocze[nie na pole wiek i na pole pensja. Mo|e te| zosta wykorzystany przy warunkach naBo|onych na inne pola, razem z warunkami naBo|onymi na wiek i pensj. Ponadto, indeks <wiek, pensja> mo|e zosta wykorzystany do wyszukiwania rekordw z warunkiem naBo|onym tylko na pole wiek. Indeks ten bdzie jednak nieprzydatny do poszukiwania rekordw z warunkami naBo|onymi na atrybut pensja, poniewa| atrybutem wiodcym tego indeksu jest wiek. W takim przypadku, mgBby zosta wykorzystany indeks <pensja, wiek>. Z tych powodw, bardziej uniwersalne s indeksy zakBadane na pojedynczych atrybutach. S one jednak mniej efektywne od indeksw zBo|onych w przypadku warunkw poszukiwania jednocze[nie naBo|onych na indeksowane atrybuty. 15 Bazy danych - BD Indeks wielopoziomowy - ISAM " ISAM - Indexed Sequential Access Method (IBM)  poziom pierwszy: " indeks cylindrw <klucz, adres indeksu [cie|ki)  poziom drugi: " indeks [cie|ki <klucz, adres [cie|ki>  struktura silnie zwizana ze sprztem " VSAM - Virtual Sequential Access Method  rozwinicie ISAM  niezale|ne od sprztu BD  wykBad 7 (16) Wyszukanie danych z wykorzystaniem indeksu jednopoziomowego wymaga przeszukania pliku indeksu. Z wykorzystaniem znalezionych rekordw indeksu nastpuje odczytanie rekordw danych. Nale|y zwrci uwag na fakt, |e plik indeksu jest przeszukiwany algorytmem poBowienia binarnego poniewa| jest to plik uporzdkowany. Algorytm ten nie nale|y do efektywnych. Z tego wzgldu wprowadzono indeksy wielopoziomowe, ktrych efektywno[ przeszukiwania jest wiksza. Jedn z fundamentalnych koncepcji indeksu wielopoziomowego jest struktura ISAM (ang. Indexed Sequential Access Method), oryginalnie opracowana przez IBM. Koncepcyjnie struktura ta jest zbudowana z dwch poziomw. Poziom pierwszy indeksuje cylindry. Rekordy indeksu na tym poziomie zawieraj pary warto[ci: poszukiwany klucz i adres do indeksu [cie|ki dyskowej. Poziom drugi indeksuje [cie|ki. Jego rekordy zawieraj pary warto[ci: poszukiwany klucz i adres [cie|ki. Jak wida, jest to struktura silnie zwizana z zastosowanym sprztem komputerowym. Rozwiniciem struktury ISAM jest VSAM (ang. Virtual Sequential Access Method). VSAM jest ju| niezale|na od rozwizaD sprztowych. 16 Bazy danych - BD Indeks wielopoziomowy - koncepcja oglna indeks pierwszego poziomu indeks drugiego poziomu BD  wykBad 7 (17) Ogln koncepcj indeksu wielopoziomowego przedstawiono na slajdzie. Indeks na pierwszym poziomie adresuje bloki danych. Ka|dy rekord tego indeksu zawiera warto[ pola indeksowego i adres bloku danych, w ktrym ta warto[ si znajduje. Rekordy tego indeksu s przechowywane w pliku uporzdkowanym zgodnie z warto[ciami klucza indeksu pierwszego poziomu. Rekordy indeksu drugiego poziomu zawieraj adresy blokw indeksu pierwszego poziomu. 17 plik danych Bazy danych - BD ISAM " Indeks statyczny  modyfikowanie zawarto[ci pliku degeneruje indeks - spada efektywno[ dostpu do danych  powstaj puste obszary po usunitych rekordach  wstawiane rekordy trafiaj do blokw nadmiarowych BD  wykBad 7 (18) ISAM jest indeksem statycznym, co oznacza, |e nie posiada zaawansowanych mechanizmw modyfikowania struktury w sytuacji zmodyfikowania zawarto[ci indeksowanego pliku (dodanie, zmodyfikowanie, usunicie rekordu). Usunicie rekordu powoduje powstanie pustego miejsca w bloku indeksu. Nowe rekordy s dodawane do blokw przepeBnienia. W konsekwencji struktura indeksu typu ISAM staje si nieefektywna. Rozwizaniem tego problemu jest wprowadzenie indeksw dynamicznych. Najpowszechniej stosowanymi indeksami dynamicznymi s indeksy drzewiaste, S- drzewa, B-drzewa, B+-drzewa. 18 Bazy danych - BD Struktura drzewiasta korzeD poziom 0 A poddrzewo wzB wewntrzny B C D poziom 1 E F G H I poziom 2 li[ J li[ K poziom 3 BD  wykBad 7 (19) Na slajdzie przedstawiono ogln struktur drzewiast. Wyr|nia si w niej tzw. korzeD, bdcy wierzchoBkiem (punktem wej[cia) caBej struktury. Na slajdzie korzeniem jest wzeB A. Z korzenia prowadz Buki, czyli wskazania albo do wzBw wewntrznych (wzBy B i D na rysunku) albo do li[ci (wzeB C). WzeB wewntrzny posiada wskazania do innych wzBw. Li[ nie posiada wskazaD do innych wzBw. Jest wic elementem koDcowym caBej struktury. PrzykBadowy indeks ze slajdu skBada si z 4 poziomw. Przy czym korzeD znajduje si na poziomie 0. 19 Bazy danych - BD Indeks B+-drzewo " Zrwnowa|ona struktura drzewiasta  wierzchoBki wewntrzne sBu| do wspomagania wyszukiwania  wierzchoBki li[ci zawieraj rekordy indeksu ze wskaznikami do rekordw danych " W celu zapewnienia odpowiedniej efektywno[ci realizacji zapytaD przedziaBowych wierzchoBki li[ci stanowi list dwukierunkow BD  wykBad 7 (20) Najpowszechniej stosowanym drzewiastym indeksem dynamicznym jest B+-drzewo. Jest on implementowany we wszystkich komercyjnych i niekomercyjnych SZBD. Ponadto stanowi podstaw implementacji innych indeksw, tj. indeksw bitmapowych i poBczeniowych. Indeks B+-drzewo jest zrwnowa|on struktur drzewiast, w ktrej wierzchoBki wewntrzne sBu| do wspomagania wyszukiwania, natomiast wierzchoBki li[ci zawieraj rekordy indeksu ze wskaznikami do rekordw w plikach danych. Zrwnowa|enie struktury oznacza, |e odlegBo[ (liczba poziomw) od korzenia do dowolnego li[cia jest zawsze taka sama. W celu zapewnienia odpowiedniej efektywno[ci realizacji zapytaD przedziaBowych wierzchoBki li[ci stanowi list dwukierunkow. 20 Bazy danych - BD Indeks B+-drzewo - charakterystyka " Operacje wstawiania i usuwania rekordw indeksu pozostawiaj indeks zrwnowa|ony " Ka|dy wierzchoBek jest wypeBniony w co najmniej 50% (za wyjtkiem korzenia)  usuwanie rekordw mo|e skutkowa mniejszym wypeBnieniem ni| 50% " Wyszukanie rekordu wymaga przej[cia od korzenia do li[cia  dBugo[ [cie|ki od korzenia do dowolnego li[cia nazywamy wysoko[ci drzewa indeksu " Indeks zrwnowa|ony BD  wykBad 7 (21) Najwa|niejsza charakterystyka indeksu B+-drzewo jest nastpujca: Po pierwsze, operacje wstawiania i usuwania rekordw indeksu pozostawiaj indeks zrwnowa|onym. Po drugie, ka|dy wierzchoBek jest wypeBniony w co najmniej 50% (za wyjtkiem korzenia). Odstpstwo od tej reguBy mo|e by spowodowane operacjami usuwania rekordw. Dla operacji usuwania, rekord indeksu jest usuwany z indeksu ale wolne miejsce pozostaje w li[ciu. W konsekwencji, wierzchoBki li[ci mog by wypeBnione w mniej ni| 50%. Po trzecie, wyszukanie rekordu wymaga przej[cia od korzenia do li[cia. DBugo[ [cie|ki od korzenia do dowolnego li[cia nazywamy wysoko[ci drzewa indeksu. Po czwarte, jak wspomniano, B+-drzewo jest indeksem zrwnowa|onym. 21 Bazy danych - BD Struktura indeksu B+ drzewa korzeD 4 x>4 x<=4 wzeB wewntrzny 2 6 8 x<=2 2<x<=4 4<x<=6 6<x<=8 8<x li[cie 1 2 3 4 5 6 7 8 9 10 BD  wykBad 7 (22) PrzykBadowy indeks B+-drzewo przedstawiono na slajdzie. SkBada si on z trzech poziomw: korzenia, wzBw wewntrznych i li[ci. W korzeniu jest przechowywana pewna warto[ graniczna klucza indeksu i wskazniki do wzBw wewntrznych. W naszym przykBadzie warto[ci graniczn jest 4, a korzeD zawiera wskazniki do dwch wzBw wewntrznych. W wzBach wewntrznych s przechowywane rwnie| pewne warto[ci graniczne klucza indeksu i wskazniki do li[ci. Li[cie z kolei przechowuj pary: <warto[ klucza indeksu, wskaznik do rekordu na dysku>. 22 Bazy danych - BD WzeB wewntrzny (1) " Struktura wzBa wewntrznego indeksu B+-drzewo rzdu p jest nastpujca 1. WzeB wewntrzny ma posta: <P1, K1, P2, ..., PQ-1, KQ-1, PQ> 2. Dla ka|dego wierzchoBka wewntrznego zachodzi K1 < K2 < ... < KQ-1 P1 K1 P2 K2 ... ... KQ-1 PQ BD  wykBad 7 (23) Struktura wzBa wewntrznego indeksu B+-drzewo rzdu p jest nastpujca. 1. WzeB wewntrzny ma nastpujc posta: wskaznik do wzBa, warto[ klucza indeksu, kolejny wskaznik, kolejna warto[, itd. Liczba wskaznikw jest o jeden wiksza od liczby warto[ci klucza. <P1, K1, P2, ..., PQ-1, KQ-1, PQ> gdzie Q <= p; Pi jest wskaznikiem do poddrzewa; Ki jest warto[ci klucza indeksu. Maksymalna liczba wskaznikw jaka mo|e zosta zapisana w wzle jest nazywana rzdem B+-drzewa i jest oznaczana jako p. 2. Dla ka|dego wierzchoBka wewntrznego zachodzi: K1 < K2 < ... < KQ-1 Oznacza to, |e warto[ci klucza indeksowego s uporzdkowane (od lewej - warto[ci najmniejsze do prawej - warto[ci najwiksze). 23 Bazy danych - BD WzeB wewntrzny (2) 3. Dla danej warto[ci Ki klucza w wzle zewntrznym  lewy wskaznik prowadzi do poddrzewa zawierajcego warto[ci poszukiwane <= Ki  prawy wskaznik prowadzi do poddrzewa zawierajcego warto[ci poszukiwane > Ki P1 K1 ... Pi-1 Ki Pi ... PQ warto[ci poszukiwane x <= Ki warto[ci poszukiwane x > Ki BD  wykBad 7 (24) 3. Dla danej warto[ci Ki klucza w wzle wewntrznym, lewy wskaznik prowadzi do poddrzewa zawierajcego warto[ci poszukiwane <= Ki, a prawy wskaznik prowadzi do poddrzewa zawierajcego warto[ci poszukiwane > Ki, jak pokazano na slajdzie. 24 Bazy danych - BD WzeB wewntrzny (3) 4. Ka|dy wierzchoBek wewntrzny posiada co najwy|ej p wskaznikw do poddrzew 5. Ka|dy wierzchoBek wewntrzny, za wyjtkiem korzenia, posiada co najmniej #(p/2)# wskaznikw do poddrzew " korzeD posiada co najmniej 2 wskazniki do poddrzew 6. Ka|dy wierzchoBek wewntrzny o Q wskaznikach posiada Q-1 warto[ci kluczy BD  wykBad 7 (25) 4. Ka|dy wierzchoBek wewntrzny posiada co najwy|ej p wskaznikw do poddrzew. 5. Dla ka|dego wierzchoBka wewntrznego liczba wskaznikw do poddrzew jest okre[lona jako najmniejsza liczba caBkowita wiksza lub rwna poBowie rzdu drzewa. KorzeD posiada co najmniej 2 wskazniki do poddrzew. 6. Ka|dy wierzchoBek wewntrzny o Q wskaznikach posiada Q-1 warto[ci kluczy. 25 Bazy danych - BD WierzchoBek wewntrzny (4) P1 K1 ... Ki-1 Pi Ki KQ-1 PQ x <= Ki Ki-1 < x <= Ki KQ-1 < x BD  wykBad 7 (26) Podsumowanie struktury wierzchoBka wewntrznego przedstawiono na slajdzie. 26 Bazy danych - BD Li[ (1) Struktura li[cia indeksu B+-drzewo rzdu p jest nastpujca: 1. Li[ ma posta: <<K1, Pr1>, <K2, Pr2>,..., <Kk, Pk>, Pnext> 2. Dla ka|dego wierzchoBka li[cia zachodzi: K1 < K2 < ... < Kk K1 P1 K2 P2 ... Kn Pn Pnext BD  wykBad 7 (27) Struktura li[cia indeksu B+-drzewo rzdu p jest nastpujca: 1. Li[ ma posta: - zbir par: warto[ klucza indeksu, wskaznik do rekordu (bloku danych) z t warto[ci klucza (oznaczone jako Kk, Pk) <K1, P1>, <K2, P2>,..., <Kk, Pk>, Pnext> K1, K2, ..., Kk s warto[ciami klucza indeksu; P1, P2, ..., Pk s wskaznikami do rekordw na dysku lub do blokw danych; - wskaznik do nastpnego li[cia. W indeksach typu B*-drzewo, ka|dy li[ ma dodatkowo wskaznik do poprzedniego li[cia. 2. Dla ka|dego wierzchoBka li[cia zachodzi: K1 < K2 < ... < KQ-1 Oznacza to, |e warto[ci klucza indeksowego s uporzdkowane (od lewej - warto[ci najmniejsze do prawej - warto[ci najwiksze). 27 Bazy danych - BD Li[ (2) 3. Ka|dy li[ posiada co najmniej #(p/2)# warto[ci kluczy 4. Wszystkie li[cie znajduj si na tym samym poziomie (tej samej wysoko[ci) BD  wykBad 7 (28) 3. Dla ka|dego li[cia minimalna liczba warto[ci kluczy indeksu jest okre[lona jako najwiksza liczba caBkowita mniejsza lub rwna poBowie rzdu drzewa. 4. Wszystkie li[cie znajduj si na tym samym poziomie (tej samej wysoko[ci). 28 Bazy danych - BD Obliczenie rzdu indeksu " Dane: rozmiar klucza V; rozmiar wskaznika do bloku P; rozmiar bloku B; liczba rekordw w indeksowanym pliku danych r; liczba blokw pliku b " WzBy wewntrzne zawieraj maksymalnie p wskaznikw i p-1 kluczy " Ka|dy z wzBw musi zmie[ci si w pojedynczym bloku dyskowym - rzd B+-drzewa p jest najwiksz liczb caBkowit, dla ktrej speBniona jest nierwno[: 1 (p"P)+((p-1)"V)) d" B 2 " Minimalna wysoko[ indeksu rzadkiego: h = #logpb# " Minimalna wysoko[ indeksu gstego: h = #logpr# 3 BD  wykBad 7 (29) Przedstawiony zostanie teraz tok rozumowania prowadzcy do obliczenia rzdu indeksu. Przypominamy, |e rzd indeksu oznaczamy jako p. Przyjmijmy, |e: V oznacza rozmiar klucza indeksu; P oznacza rozmiar wskaznika do bloku; B oznacza rozmiar bloku danych (dyskowego); r oznacza liczb indeksowanych rekordw w pliku danych; b oznacza liczb blokw pliku danych. Pamitamy, |e wzBy wewntrzne zawieraj maksymalnie p wskaznikw i p-1 kluczy. Poniewa| ka|dy wzeB musi si zmie[ci w pojedynczym bloku dyskowym, wic rzd B+-drzewa jest najwiksz liczb caBkowit speBniajc nierwno[ ze slajdu (oznaczon symbolem 1). Z innych przydatnych wzorw wymieni nale|y wzory obliczajce minimaln wysoko[ indeksu rzadkiego (wzr 2) i minimaln wysoko[ indeksu gstego (wzr 3), przedstawione na slajdzie. 29 Bazy danych - BD Obliczenie rzdu indeksu - przykBad (1) Dane: Rozmiar pliku: r = 30 000 rekordw Rozmiar bloku: B = 1024B Rozmiar rekordu: R = 100 bajtw Rozmiar klucza: V = 9 Rozmiar wskaznika: P = 6 Rekordy maj staB dBugo[ i nie s dzielone midzy bloki Indeks wtrny 1 B 1024 # # # # Liczba rekordw w bloku: rbl = = =10 # # # # R 100 # # # # 2 r 30000 # # # # b = = = 3000 Liczba blokw danych: #rbl # # # 10 # # # # BD  wykBad 7 (30) Rozwa|my nastpujcy przykBad ilustrujcy sposb obliczania rzdu B+-drzewa. Niech: liczba indeksowanych rekordw danych wynosi r=30 000, rozmiar bloku wynosi B=1kB, rozmiar rekordu wynosi R=100B, rozmiar klucza indeksu wynosi V=9B i rozmiar wskaznika wynosi P=6B. Przyjmujemy ponadto, |e rekordy maj staB dBugo[ i nie s dzielone midzy bloki. Na pliku danych jest zakBadany indeks wtrny. Poniewa| rekordy maj staB dBugo[ i nie s dzielone midzy bloki, liczb rekordw w bloku obliczymy za pomoc wzoru 1. Liczb blokw danych do skBadowania 30000 rekordw obliczymy za pomoc wzoru 2. 30 Bazy danych - BD Obliczenie rzdu indeksu - przykBad (2) 4 Rzd wzBa 3 V + B (p* P)+[(p -1)*V]d" B p d" P +V Minimalna wysoko[ indeksu: 5 h = 9 +1024 #log r# p p d" 6 + 9 p = 68 h = = 3 #log 30000# 68 BD  wykBad 7 (31) Rzd wzBa obliczamy przeksztaBcajc wzr 3 ze slajdu do wzoru 4. Po podstawieniu warto[ci do wzoru 4 otrzymujemy wynik: rzd wzBa wewntrznego p=68. Z wykorzystaniem obliczonej warto[ci rzdu wzBa mo|emy nastpnie obliczy minimaln wysoko[ indeksu niezbdn do poindeksowania 30000 rekordw danych. Wykorzystujemy do tego celu wzr 5. Po podstawieniu danych, otrzymujemy wynik - indeks musi mie przynajmniej 3 poziomy. 31 Bazy danych - BD PrzykBad " Koszt wyszukania rekordu bez pomocy indeksu  [rednio: liczba blokw danych/2 = 1500 dostpw " Koszt wyszukiwania rekordu za pomoc indeksu typu B+-drzewo:  rwny: wysoko[ drzewa + 1 = 3 + 1 = 4 dostpy BD  wykBad 7 (32) Jak Batwo dowiez analitycznie, indeks B+-drzewo znakomicie przyspiesza wyszukiwanie rekordu z pliku, w porwnaniu z dostpem do pliku bez indeksu. Je|eli w pliku jest wyszukiwany rekord z kryterium naBo|onym na atrybut nieporzdkujcy, wwczas nale|y przeszuka caBy plik. Zrednio bdzie to wymagaBo odczytania poBowy blokw przechowujcych rekordy danych, czyli w naszym przykBadzie 1500. W przypadku indeksu B+-drzewo nale|y znalez odpowiedni li[ i sign po rekord do dysku. Znalezienie li[cia wymaga odczytania 3 blokw indeksu - korzenia, wzBa wewntrznego i li[cia. Korzystajc ze wskaznika w li[ciu, nale|y odczyta jeden blok danych zawierajcy poszukiwany rekord. Znalezienie rekordu bdzie wic wymagaBo 4 dostpw do dysku. 32 Bazy danych - BD Wstawianie danych do indeksu - przykBad (1) " ZaBo|enia  indeks B+-drzewo  rzd drzewa: 3  sekwencja danych wstawianych do indeksu: " 8, 5, 1, 7, 3, 12, 9, 6 5 8 " Wstawienie 8 i 5 daje li[ 5 1 5 8 5 8 wstaw 1 przepeBnienie, podziaB, 1 5 8 propagacja 1 do lewego li[cia do prawego li[cia BD  wykBad 7 (33) Zarzdzanie struktur indeksu B+-drzewo w sytuacjach wstawiania, usuwania i modyfikowania warto[ci atrybutu indeksowego rekordw danych jest realizowane za pomoc specjalizowanych algorytmw. Na kilku kolejnych slajdach przedstawimy ide dziaBania algorytmu modyfikowania struktury indeksu na skutek wstawiania rekordw danych. Dla uproszczenia przyjmijmy, |e indeks jest rzdu 3. Oznacza to, |e ka|dy wzeB posiada minimalnie 2 i maksymalnie 3 wskazniki. Li[ posiada od 1 do dwch warto[ci atrybutu indeksowego. Do indeksu s wstawiane nastpujce warto[ci w kolejno[ci ich wymienienia: 8, 5, 1, 7, 3, 12, 9 ,6. Wstawione warto[ci 8 i 5 mieszcz si w jednym bloku indeksu, wic wystarczy je przechowa jako li[. Wstawienie warto[ci 1 do wzBa spowodowaBoby jego przepeBnienie. Z tego powodu wzeB jest rozbijany na 2. W tym celu porzdkujemy warto[ci istniejce w wzle i warto[ wstawian, od lewej (najmniejsza) do prawej (najwiksza). Warto[ [rodkow, czyli 5, przenosimy do poziomu wy|szego - staje si ona warto[ci w korzeniu. Warto[ci 1 i 5 trafiaj do lewego li[cia, a 8 - do prawego, jak pokazano na slajdzie. 33 Bazy danych - BD Wstawianie danych do indeksu - przykBad (2) 5 5 1 5 8 1 5 7 8 wstaw 7 posortuj wstaw 3 przepeBnienie, 7 3 warto[ci w tym li[ciu podziaB, propagacja 1 3 5 3 5 do lewego li[cia 1 3 5 7 8 do prawego li[cia BD  wykBad 7 (34) Warto[ 7 musi by wstawiona do prawego li[cia, ktry posiada miejsce na jedn warto[. Warto[ci w tym li[ciu nale|y posortowa. Warto[ 3 musi by wstawiona do lewego li[cia. Jednak jest on ju| w caBo[ci zajty. Z tego powodu wzeB jest rozbijany na 2. W tym celu porzdkujemy warto[ci istniejce w wzle i warto[ wstawian, od lewej (najmniejsza) do prawej (najwiksza). Warto[ [rodkow, czyli 3, przenosimy do korzenia. Warto[ci 1 i 3 trafiaj do lewego li[cia, a 5 - do prawego, jak pokazano na slajdzie. 34 Bazy danych - BD Wstawianie danych do indeksu - do nowego korzenia przykBad (3) 3 5 8 3 5 do prawego do lewego poddrzewa poddrzewa 1 3 5 7 8 7 8 12 wstaw 12 przepeBnienie, 12 podziaB, propagacja do prawego 5 li[cia do lewego li[cia 3 8 1 3 5 7 8 12 BD  wykBad 7 (35) Warto[ 12 musi by wstawiona do skrajnie prawego li[cia. Jednak jest on ju| w caBo[ci zajty. Z tego powodu wzeB jest rozbijany na 2. W tym celu porzdkujemy warto[ci istniejce w wzle i warto[ wstawian, od lewej (najmniejsza) do prawej (najwiksza). Warto[ [rodkow, czyli 8, przenosimy do korzenia. Warto[ci 7 i 8 trafiaj do lewego li[cia, a 12 - do prawego, jak pokazano na slajdzie. Ponadto, w tym przypadku warto[ 8 powinna trafi do korzenia, ktry jest ju| w caBo[ci wypeBniony. Z tego wzgldu ulega on rozbiciu na nowy korzeD i dwa wzBy wewntrzne. W tym celu porzdkujemy warto[ci ju| przechowywane w korzeniu i wstawian do niego warto[, jak pokazano na slajdzie. Warto[ [rodkowa, czyli 5 trafia do nowego korzenia. Warto[ 3 trafia do lewego poddrzewa, a warto[ 8 - do prawego, jak pokazano na slajdzie. 35 Bazy danych - BD Wstawianie danych do indeksu - przykBad (4) 5 3 8 1 3 5 7 8 12 wstaw 9 posortuj 9 5 warto[ci w tym li[ciu 3 8 1 3 5 7 8 9 12 BD  wykBad 7 (36) Warto[ 9 musi by wstawiona do skrajnie prawego li[cia, ktry posiada miejsce na jedn warto[. Warto[ci w tym li[ciu nale|y posortowa. 36 Bazy danych - BD Wstawianie danych do indeksu - przykBad (5) 5 3 8 do wzBa 1 3 5 7 8 9 12 wewntrznego 6 6 7 8 wstaw 6 przepeBnienie, podziaB, propagacja do prawego do lewego li[cia li[cia BD  wykBad 7 (37) Warto[ 6 musi by wstawiona do trzeciego od lewej li[cia. Jednak jest on ju| w caBo[ci zajty. Z tego powodu wzeB jest rozbijany na 2. W tym celu porzdkujemy warto[ci istniejce w wzle i warto[ wstawian, od lewej (najmniejsza) do prawej (najwiksza). Warto[ [rodkow, czyli 7, przenosimy do wzBa wewntrznego. Warto[ci 6 i 7 trafiaj do lewego li[cia, a 8 - do prawego, jak pokazano na slajdzie. 37 Bazy danych - BD Wstawianie danych do indeksu - przykBad (6) 5 3 7 8 1 3 5 6 7 8 9 12 BD  wykBad 7 (38) Ostateczna struktura indeksu zostaBa przedstawiona na slajdzie. 38

Wyszukiwarka

Podobne podstrony:
Wyklad 9 Jezyk SQL obsluga struktury?zy?nych indeksy widoki
Sieci komputerowe wyklady dr Furtak
Wykład 05 Opadanie i fluidyzacja
WYKŁAD 1 Wprowadzenie do biotechnologii farmaceutycznej
mo3 wykladyJJ
ZARZĄDZANIE WARTOŚCIĄ PRZEDSIĘBIORSTWA Z DNIA 26 MARZEC 2011 WYKŁAD NR 3
Wyklad 2 PNOP 08 9 zaoczne
Wyklad studport 8
Kryptografia wyklad
Budownictwo Ogolne II zaoczne wyklad 13 ppoz
wyklad09
Sporzadzanie rachunku przepływów pienieżnych wykład 1 i 2

więcej podobnych podstron