Systemy zarzdzania bazami danych 4 Haszowanie i wicej
Systemy zarządzania bazami danych 4. Haszowanie i więcej wymiarów Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 1
Haszowanie • klucz h(klucz) <klucz> . . . Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów Kubełki (zwykle 1 blok dysku) 2
Indeks haszowany wewnętrzny. . . (1) klucz h(klucz) Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów rekordy . . . 3
Indeks haszowany zewnętrzny (2) klucz h(klucz) klucz 1 rekord Indeks • Indeksy drugorzędne mogą by tylko zewnętrzne Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 4
Funkcja haszująca • Klucz = ‘x 1 x 2 … xn’ napis n-bajtowy • Liczba kubełków = b • h: dodaj x 1 + x 2 + …. . xn – weź sumę modulo b • To nie musi być dobra funkcja – Sztuka Programowania D. Knutha Tom 3 • Przy dobrej funkcji spodziewamy się podobnej wielkości każdego kubełka Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 5
Kubełek • Czy klucze mają być posortowane? • Tak, ale tylko wtedy gdy czas procesora jest krytyczny a wstawienia i usunięcia rekordów nie są zbyt częste Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 6
Strona nadmiarowa Wstawienie: h(a) = 1 h(b) = 2 h(c) = 1 h(d) = 0 0 d 1 a c b 2 e 3 h(e) = 1 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 7
Usuwanie Usuń: e f c 0 a 1 b c d e 2 3 Oryginał: Hector Garcia-Molina f g d Może przesunąć “g” w górę? 4. Haszowanie i więcej wymiarów 8
Przybliżona reguła pielęgnacji • Staraj się utrzymywać stopień wykorzystania między 50% a 80% Stopień ten to liczba zajętych pozycji liczba wszystkich pozycji • Jeśli < 50%, marnuje się miejsce • Jeśli > 80%, strony nadmiarowe groźne wszystko zależy od jakości funkcji i liczby rekordów na kubełek Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 9
Radzenie sobie ze wzrostem • Strony nadmiarowe i reorganizacje • Haszowanie dynamiczne • Rozszerzalne • Liniowe Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 10
Haszowanie rozszerzalne (a) Patrzymy na i spośród b bitów wyniku funkcji haszującej b h(K) 00110101 i rośnie z upływem czasu… Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 11
(b) Tworzymy katalog h(K)[i ] . . . do kubełka . . . Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 12
Przykład: h(k) ma 4 bity; 2 klucze/kubełek 1 0001 i=2 00 01 1 2 1001 1010 1100 Wstaw 1010 Oryginał: Hector Garcia-Molina 1 2 1100 4. Haszowanie i więcej wymiarów 10 11 Nowy katalog 13
Kontynuacja przykładu i= 2 00 01 10 11 Wstaw: 0111 2 0000 0001 1 2 0001 0111 2 1001 1010 2 1100 0000 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 14
Kontynuacja przykładu i= 2 00 0000 2 0001 0111 2 01 10 11 Wstaw: 1001 Oryginał: Hector Garcia-Molina 1001 3 1001 1010 1001 2 3 1010 1100 2 4. Haszowanie i więcej wymiarów i=3 000 001 010 011 100 101 110 111 15
Usuwanie przy h. rozszerzalnym • Bez łączenie kubełków ALBO • Z łączeniem kubełków i zmniejszaniem katalogu jeśli to możliwe (Odwrotność wstawiania) • Odtwórz prezentację wstecz, żeby zobaczyć • Ale koszt wykrycia duży. . . Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 16
Haszowanie rozszerzalne + Obsługuje puchnące pliki + mniej reorganizując + bez pełnych reorganizacji – Pośredniość (Nieźle jeśli katalog mieści się pamięci, ale. . . ) – Katalog zawsze rośnie dwukrotnie (Raz się mieści a raz nie) Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 17
Haszowanie liniowe Dwa pomysły: (a) Używaj i młodszych bitów funkcji b 01110101 wzrost i (b) Plik rośnie liniowo Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 18
Przykład b=4 bity, 0101 0000 1010 00 i =2, 2 klucze/kubełek • wstaw 0101 • mogą być strony nadmiarowe ! Kubełki na przyszly wzrost 0101 1111 01 10 11 m = 01 (najdalszy używany blok) Reg. Jeśli h(k)[i ] m, to szukaj w kubełku h(k)[i ] wpp, szukaj w kubełku h(k)[i ] - 2 i -1 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 19
Przykład b=4 bity, 0101 0000 1010 00 i =2, 2 klucze/kubełek • wstaw 0101 1111 1010 1111 01 10 11 Kubełki na przyszly wzrost m = 01 (najdalszy blok) 10 11 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 20
Kontynuacja: Jak dalej ma rosnąć? i=2 3 0000 0 00 100 0101 0 01 1010 110 0101 1111 0 11 100 101. . . m = 11 (najdalszy blok) 100 101 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 21
Kiedy rozszerzać plik? • Operacja rozszerzenia jest niezależna od operacji wstawienia • Śledzimy stopień zapełnienia indeksu U • Jeśli U wzrosnie powyżej wartości granicznej, zwiększamy m (być może także i) Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 22
Haszowanie liniowe + Obsługuje puchnące pliki + marnując mniej miejsca + bez pełnych reorganizacji + Brak pośredniości (jak było przy rozszerzalnym) – Niestety dopuszcza strony nadmiarowe Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 23
Przypadek zły Bardzo pełne Bardzo puste Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów Zwiększanie m tylko spowoduje marnowanie miejsca 24
B+drzewo czy hasz? • Haszowanie dobre do zapytań równościowych SELECT * FROM R WHERE R. A = 5; • I tylko do nich. I do złączeń. . . równościowych Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 25
B+drzewo czy hasz? • B+drzewa dobre do zapytań zakresowych SELECT * FROM R WHERE R. A > 5; • Ale też równościowych • I do wielu innych rzeczy. I do złączeń równościowych/nierównościowych itd. . Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 26
Definicja indeksu w SQL • Create index nazw on rel (atr) • Create unique index nazwa on rel (atr) Tworzy klucz tabeli I pilnuje go! • Drop INDEX nazwa Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 27
Niestety, SQL. . . • Nie pozwala na specyfikację rodzaju (B+drzewo, Hasz, Bitmap, itd. ) • Nie pozwala na specyfikację parametrów (wielkość tablicy, współczynnik zapełnienia, itd. ) • Komercyjne SZBD na szczęście to mogą • Są też idenksy mieszane: zakresowo-haszowe Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 28
Indeks wielowymiarowy • Jeśli lista atrybutów jest dłuższa, to indeks jest na wielu kluczach CREATE INDEX foo ON R(bar 1, bar 2, bar 3) • Zapytanie: Znajdź rekordy spełniające DEPT = “Toy” AND SAL > 50 k Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 29
Strategia I • Weź jeden indeks, np. Dept. • Znajdź rekordy spełniające Dept = “Toy” i sprawdź ich SAL I 1 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 30
Strategia II • Weź dwa indeksy, manipuluj wskaźnikami Toy Oryginał: Hector Garcia-Molina Sal > 50 k 4. Haszowanie i więcej wymiarów 31
Strategia III • Użyj indeksu wielowymiarowego I 2 I 1 Oryginał: Hector Garcia-Molina I 3 4. Haszowanie i więcej wymiarów 32
Przykład Art Sales Toy Indeks na DEPT 10 k 15 k 17 k 21 k 12 k 15 k 19 k Przykładowy rekord Name=Joe DEPT=Sales SAL=15 k Indeks na SAL Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 33
Które zapytania obsłuży? • Indeks (DEPT, SAL) • • Znajdź rekordy: Oryginał: Hector Garcia-Molina Dept = “Sales” SAL=20 k Dept = “Sales” SAL > 20 k Dept = “Sales” SAL = 20 k 4. Haszowanie i więcej wymiarów 34
Dane geograficzne Dane: y x Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów . . . <X 1, Y 1, Atrybuty> <X 2, Y 2, Atrybuty > 35
Zapytania • Które miasto leży w punkcie <Xi, Yi>? • Co leży w odległości do 5 km od <Xi, Yi>? • Jaki obiekt jest najbliższy <Xi, Yi>? Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 36
Przykład 40 10 25 20 20 10 e h 30 20 15 35 i n o j k m 10 5 h i d e f 15 15 j k g l m c b f l a d c g 20 a b • Szukaj punktów bliskich f • Szukaj punktów bliskich b n o Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 37
Zapytania do takiego drzewa • • Znajdź punkty Oryginał: Hector Garcia-Molina takie, że Yi > 20 takie, że Xi < 5 “bliskie” i = <12, 38> “bliskie” b = <7, 24> 4. Haszowanie i więcej wymiarów 38
Indeks siatkowy klucz 2 V 1 V 2 X 1 X 2 …… Xn klucz 1 Vn Do rekordów, w których klucz 1=V 3, klucz 2=X 2 Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 39
Zalety • Można szybko znależć odpowiedzi: – klucz 1 = Vi klucz 2 = Xj – klucz 1 = Vi – klucz 2 = Xj • Także zakresowo…. – klucz 1 Vi klucz 2 < Xj Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 40
Indeksy siatkowe mają jednak pułapkę • Jak je ułożyć na dysku? V 3 X 1 X 2 X 3 X 4 V 2 X 1 X 2 X 3 X 4 Jak tablicę. . . V 1 Problem: • Musi być regularna, żeby dało się wyliczyć pozycję z <Vi, Xj> Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 41
Rozwiązanie: Pośredniość V 1 V 2 V 3 V 4 X 1 X 2 X 3 Kubełki Oryginał: Hector Garcia-Molina ----- Kubełki *Siatka zawiera jedynie wskaźniki na kubełki ---- 4. Haszowanie i więcej wymiarów 42
Dzięki pośredniości • Siatka może być regularna bez marnowania miejsca • Jest jednak pewna cena tej pośredniości. . . Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 43
Siatka może być też nad zakresami Salary Siatka 8 0 -20 K 20 K-50 K 50 K- 1 2 3 Skala liniowa Oryginał: Hector Garcia-Molina 1 2 3 Toy Sales Personnel 4. Haszowanie i więcej wymiarów 44
Pliki siatkowe + - Skuteczne wyszukiwanie wg wielu kluczy Narzuty i zarządzanie miejscem (nic nie jest za darmo) - Trzeba znaleźć podziały zakresu, które równo rozrzucają klucze Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 45
Partycjonowana f. haszująca 010110 1110010 klucz 1 Oryginał: Hector Garcia-Molina h 1 h 2 4. Haszowanie i więcej wymiarów klucz 2 46
Przykład: h 1(toy) h 1(sales) h 1(art). . h 2(10 k) h 2(20 k) h 2(30 k) h 2(40 k). . Wstaw =0 =1 =1 =01 =11 =00 001 010 011 100 101 110 111 <Fred> <Joe><Sally> <Fred, toy, 10 k>, <Joe, sales, 10 k> <Sally, art, 30 k> Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 47
h 1(toy) =0 h 1(sales) =1 h 1(art) =1. . h 2(10 k) =01 h 2(20 k) =11 h 2(30 k) =01 h 2(40 k) =00. . • Znajdź Emp takich, Oryginał: Hector Garcia-Molina 000 001 010 011 100 101 110 111 <Fred> <Joe><Jan> <Mary> <Sally> <Tom><Bill> <Andy> że Dept. = Sales Sal=40 k 4. Haszowanie i więcej wymiarów 48
h 1(toy) =0 h 1(sales) =1 h 1(art) =1. . h 2(10 k) =01 h 2(20 k) =11 h 2(30 k) =01 h 2(40 k) =00. . • Znajdź Emp takich, Oryginał: Hector Garcia-Molina 000 001 010 011 100 101 110 111 <Fred> <Joe><Jan> <Mary> <Sally> <Tom><Bill> <Andy> że Sal=30 k 4. Haszowanie i więcej wymiarów szukaj tu 49
h 1(toy) h 1(sales) h 1(art). . h 2(10 k) h 2(20 k) h 2(30 k) h 2(40 k). . =0 =1 =1 =01 =11 =00 001 010 011 100 101 110 111 <Fred> <Joe><Jan> <Mary> <Sally> <Tom><Bill> <Andy> szukaj tu • Znajdź Emp takich, że Dept. = Sales Oryginał: Hector Garcia-Molina 4. Haszowanie i więcej wymiarów 50
- Slides: 50