350 likes | 617 Views
Indeksy. Wykład 9 Prowadzący: dr Paweł Drozda. Pamięć fizyczna. Pamięć operacyjna – zorganizowana w bloki Pamięć zewnętrzna – zorganizowana w pliki Dane z BD przechowywane w pamięci zewnętrznej: Rozmiar danych Koszt przechowywania Odporność na awarie. Dostęp do danych.
E N D
Indeksy Wykład 9 Prowadzący: dr Paweł Drozda
Pamięć fizyczna • Pamięć operacyjna – zorganizowana w bloki • Pamięć zewnętrzna – zorganizowana w pliki • Dane z BD przechowywane w pamięci zewnętrznej: • Rozmiar danych • Koszt przechowywania • Odporność na awarie dr Paweł Drozda
Dostęp do danych • Dane są zestawione w rekordy (proste, złożone, stała/zmienna długość) • Operacje na danych • Buforowanie danych z plików do bloków • Operacje w blokach (pamięć operacyjna) • Po modyfikacjach – zapis do pliku dr Paweł Drozda
Rodzaje organizacji plików • Pliki nieuporządkowane (unordered files, heap files) • Pliki uporządkowane (ordered files) • Pliki haszowe (hash files) dr Paweł Drozda
Plik nieuporządkowany • Nagłówek pliku zawierający wskaźnik do bloku danych • Blok danych zawiera wskaźnik do bloku następnego Ipoprzedniego • Rekordy wstawiane na koniec pliku dr Paweł Drozda
Plik nieuporządkowany - operacje • Dodawanie – do ostatniego bloku pliku • Wyszukanie – przeszukanie liniowe wszystkich bloków (do momentu natrafienia na szukaną wartość) • Wyszukanie z przedziałem wartości – przeszukanie całego pliku • Usuwanie – przeszukanie liniowe wszystkich bloków, konieczność okresowej reorganizacji pliku • Sortowanie – trudne (na ogół odbywa się w pamięci operacyjnej fragmentami) dr Paweł Drozda
Plik nieuporządkowany - cechy • Łatwe, efektywne wstawianie • Efektywne pozostałe operacje przy małych plikach • Właściwy do odczytu wszystkich rekordów • Potrzeba wspomagania (np. Indeksy) dr Paweł Drozda
Plik uporządkowany • Rekordy uporządkowane według pola porządkującego dr Paweł Drozda
Plik uporządkowany - operacje • Dodawanie – Wyszukanie miejsca wstawienia, przepisanie rekordów po wstawionym • Wyszukanie – binarne • Wyszukanie z przedziałem wartości – znalezienie początku oraz przejście przez rekordy z przedziału • Usuwanie - Wyszukanie miejsca usunięcia, przepisanie rekordów po usuniętym • Modyfikacja – gdy modyfikowany atrybut porządkujący – usunięcie + wstawienie rekordu dr Paweł Drozda
Plik uporządkowany - cechy • Efektywny odczyt rekordów w kolejności pola porządkującego • Proste znalezienie następnego rekordu • Binarne wyszukanie w oparciu o pole porządkujące • Nieprzydatne, gdy nie używa się pola porządkującego przy wyszukiwaniu • Kosztowne wstawianie, usuwanie i modyfikacja dr Paweł Drozda
Plik haszowy • Porządek rekordów w pliku określony na podstawietzw. pola haszowego • Koncepcja– zdefiniowanie funkcji haszowej (ang. hash function) • argument - wartość pola haszowego • wartość funkcji – adres bloku dla rekordu • Haszowanie • Wewnętrzne • zewnętrzne dr Paweł Drozda
Haszowanie wewnętrzne • Dana tablica rekordów o M szczelinach których adresy odpowiadają indeksom tablicy haszowej • Funkcja: H(K) {0,1,…,M-1} • Najczęściej spotykana H(K) = K mod M dr Paweł Drozda
Haszowanie wewnętrzne - przykład szczelina Funkcja haszująca: H(nrindeksu) = nrindeksu mod 1000 dr Paweł Drozda
Haszowanie wewnętrzne - operacje • Kolizje – gdy ta sama szczelina dla dwóch wartości pola haszowego • Trzy rodzaje rozwiązania kolizji • Adresowanie otwarte • Łańcuchowanie • Haszowanie wielokrotne • Dla każdej metody – różne algorytmy wstawiania, szukania, usuwania rekordów dr Paweł Drozda
Haszowanie zewnętrzne • Podobnie jak wewnętrzne używa funkcji haszowej • Odwołuje się bezpośrednio do przestrzeni dyskowej • Rzadziej kolizje niż w wewnętrznym – w jednej szczelinie przechowywanych więcej rekordów dr Paweł Drozda
Pliki haszowe - cechy • Ważna definicja funkcji haszowej, aby rozkładała rekordy równomiernie • Zakładany jest stały obszar przestrzeni haszowej – co po jakimś czasie powoduje częste kolizje • Nieefektywny odczyt w kolejności pola haszowego – funkcja haszująca burzy porządek tego pola dr Paweł Drozda
Indeks - wprowadzenie • Problem – jak efektywnie wyszukiwać rekordów z zadanego zakresu wartości wybranego pola? • Stworzenie pliku zdefiniowanego na atrybucie po którym dokonywane jest wyszukanie • Zawartość pliku – rekordy odpowiadające wartościom pierwszych rekordów w poszczególnych blokach pliku danych <pierwszy klucz w bloku, wskaźnik do bloku> dr Paweł Drozda
Indeks • Stworzony plik nazywamy indeksem • Cechy indeksu: • Przyśpiesza dostęp do danych • Zakładany na atrybutach relacji (atrybuty indeksowe) • Rekord indeksu zawiera dwa pola: • Klucz (odnosi się do atrybutu indeksowego) • Wskaźnik do bloku mającego ten sam klucz dr Paweł Drozda
Indeks - SQL • CREATE INDEX nazwaindeksu ON nazwatabeli(pole1,pole2,…,polen); • tworzenie indeksu z pól od 1 do n dla tabeli nazwatabeli dr Paweł Drozda
Typy rekordów indeksu • Rekord danych (o wartości klucza k) • Para <k, rid> - rid identyfikator rekordu danych o wartości klucza k • Para <k, rid-list> - rid-list lista identyfikatorów rekordów danych o wartości klucza k • Para <k, bitmapa> - bitmapa jest wektorem 0,1 reprezentującym zbiór rekordów danych dr Paweł Drozda
Rodzaje indeksów • Atrybut indeksowy • Podstawowy – założony na atrybucie porządkującym unikalnym • Zgrupowany – założony na atrybucie porządkującym nieunikalnym • Wtórny – założony na atrybucie nieporządkującym dr Paweł Drozda
Rodzaje indeksów • Wskazania do pliku danych: • Gęsty – posiada rekord indeksu dla każdego rekordu indeksowanego pliku danych • Rzadki – tylko dla wybranych rekordów pliku danych • Liczba poziomów: • Jednopoziomowe – indeks dla danych • Wielopoziomowe – indeks do indeksu dr Paweł Drozda
Indeks podstawowy – przykład Wartość indeksowana wskaźnik do bloku dr Paweł Drozda Pole porządkujące unikalne
Indeks zgrupowany – przykład Wartość indeksowana wskaźnik do bloku dr Paweł Drozda
Indeks wtórny - przykład Wartość indeksowana wskaźnik do bloku dr Paweł Drozda
Indeks o kluczu złożonym indeks<zarobki,nazwisko> indeks<nazwisko,zarobki> Atrybut wiodący - nazwisko Atrybut wiodący - zarobki dr Paweł Drozda
Indeks wielopoziomowy Indeks pierwszego poziomu Indeks drugiego poziomu dr Paweł Drozda
Indeks dynamiczny • Najczęściej stosowane – indeksy drzewiaste korzeń Poziom 0 A węzeł B D Poziom 1 C H Poziom 2 E F G liść I J K Poziom 3 dr Paweł Drozda
Indeks – B+ drzewo • Zrównoważona struktura drzewiasta – każdy liść na tym samym poziomie • Węzły wspomagają wyszukiwanie • Liście wskazują na rekordy danych • Liście stanowią listę dwukierunkową • Wstawianie i usuwanie rekordów pozostawiają indeks zrównoważony • Wyszukanie rekordu – przejście od korzenia do liścia (długość ścieżki od korzenia do liścia – wysokość drzewa indeksu) dr Paweł Drozda
Struktura indeksu B+ drzewa X>7 X<=7 Przestrzeń dyskowa dr Paweł Drozda
Węzeł wewnętrzny • Struktura <P1, K1,…, Pn-1, Kn-1, Pn> , K1< K2<…< Kn Pi – wskaźnik do poddrzewa Ki – wartość klucza indeksu • Lewy wskaźnik klucza Ki odnosi się do poddrzewa z wartościami mniejszymi bądź równymi kluczowi, prawy do wartości większych • p – rząd indeksu = maksymalna liczba wskaźników w węźle dr Paweł Drozda
Liść • Struktura <Pprev, <K1, P1>,…,<Kn, Pn>, Pnext> , K1< K2<…< Kn • Pprev – wskaźnik do poprzedniego liścia • Pnext – wskaźnik do następnego liścia dr Paweł Drozda
Obliczanie rzędu indeksu p • Dane • rozmiar klucza - V • rozmiar wskaźnika do bloku - P • rozmiar bloku - B • liczba rekordów w pliku danych - r • liczba bloków pliku - b • Rząd indeksu p spełnia nierówność: (p*P)+(p-1)V<=B • min wysokość indeksu rzadkiego: • min wysokość indeksu gęstego: dr Paweł Drozda
Rząd indeksu - przykład r=30000, B=1024B, R=100B, V=9B, P=6B indeks wtórny, rekordy nie są dzielone między bloki liczba rekordów w bloku rbl = B/R =10 liczba bloków b=r/rbl = 3000 Rząd indeksu p<=(V+B)/(P+V), p=68 min wysokość indeksu h=log6830000=3 dr Paweł Drozda
Rząd indeksu – koszt wyszukania • bez indeksu: średnio liczba bloków danych/2=1500 • z B+ drzewem: wysokość drzewa + 1=4 odczytanie korzenia, odczytanie węzła, odczytanie liścia, odczytanie bloku rekordów zawierającego szukany rekord dr Paweł Drozda