1 / 50

Systemy zarządzania bazami danych

Systemy zarządzania bazami danych. 4. Haszowanie i więcej wymiarów. Haszowanie. klucz  h(klucz). < klucz >. Kubełki ( zwykle 1 blok dysku ). Indeks haszowany wewnętrzny. rekordy. (1) klucz  h( klucz ). Indeks haszowany zewnętrzny. re k ord. (2) klucz  h( klucz ). k lucz 1.

dulcea
Download Presentation

Systemy zarządzania bazami danych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systemy zarządzania bazami danych 4. Haszowanie i więcej wymiarów 4. Haszowanie i więcej wymiarów

  2. Haszowanie • klucz  h(klucz) <klucz> Kubełki (zwykle 1 blok dysku) . . . 4. Haszowanie i więcej wymiarów

  3. Indeks haszowany wewnętrzny . . . rekordy (1) klucz h(klucz) . . . 4. Haszowanie i więcej wymiarów

  4. Indeks haszowany zewnętrzny rekord (2) klucz h(klucz) klucz 1 Indeks • Indeksy drugorzędne mogą by tylko zewnętrzne 4. Haszowanie i więcej wymiarów

  5. Funkcja haszująca • Klucz = ‘x1 x2 … xn’ napis n-bajtowy • Liczba kubełków = b • h: dodaj x1 + x2 + ….. 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 4. Haszowanie i więcej wymiarów

  6. 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 4. Haszowanie i więcej wymiarów

  7. d a e c b Strona nadmiarowa Wstawienie: h(a) = 1 h(b) = 2 h(c) = 1 h(d) = 0 0 1 2 3 h(e) = 1 4. Haszowanie i więcej wymiarów

  8. d Może przesunąć “g” w górę? Usuwanie Usuń:ef 0 1 2 3 a b d c c e f g 4. Haszowanie i więcej wymiarów

  9. 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 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 4. Haszowanie i więcej wymiarów

  10. Rozszerzalne • Liniowe Radzenie sobie ze wzrostem • Strony nadmiarowe i reorganizacje • Haszowanie dynamiczne 4. Haszowanie i więcej wymiarów

  11. Haszowanie rozszerzalne • Patrzymy na i spośród b bitów wyniku funkcji haszującej b h(K)  i rośnie z upływem czasu… 00110101 4. Haszowanie i więcej wymiarów

  12. (b) Tworzymy katalog h(K)[i ] do kubełka . . . . . . 4. Haszowanie i więcej wymiarów

  13. i = 2 00 01 10 11 1 1 2 1010 Nowy katalog 2 1100 Przykład: h(k) ma 4 bity; 2 klucze/kubełek 1 0001 i = 1 1001 1100 Wstaw 1010 4. Haszowanie i więcej wymiarów

  14. 2 0000 0001 2 0111 2 2 Kontynuacja przykładu i = 2 00 01 10 11 1 0001 0111 1001 1010 Wstaw: 0111 0000 1100 4. Haszowanie i więcej wymiarów

  15. i = 3 000 001 010 011 100 101 110 111 3 1001 1001 2 1001 1010 3 1010 1100 2 Kontynuacja przykładu 0000 2 0001 i = 2 00 01 10 11 0111 2 Wstaw: 1001 4. Haszowanie i więcej wymiarów

  16. 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... 4. Haszowanie i więcej wymiarów

  17. 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) 4. Haszowanie i więcej wymiarów

  18. Dwa pomysły: b (a) Używajimłodszych bitów funkcji 01110101 wzrost i (b) Plik rośnie liniowo Haszowanie liniowe 4. Haszowanie i więcej wymiarów

  19. 0101 • mogą być strony nadmiarowe ! Jeśli h(k)[i ]  m, to szukaj w kubełku h(k)[i ] wpp, szukaj w kubełku h(k)[i ]- 2i -1 Reg. Przykładb=4 bity, i =2, 2 klucze/kubełek • wstaw 0101 00 01 10 11 Kubełki na przyszly wzrost 0000 0101 1010 1111 m = 01 (najdalszy używany blok) 4. Haszowanie i więcej wymiarów

  20. 0101 • wstaw 0101 1010 1111 0101 10 11 Przykładb=4 bity, i =2, 2 klucze/kubełek 00 01 10 11 Kubełki na przyszly wzrost 0000 0101 1010 1111 m = 01 (najdalszy blok) 4. Haszowanie i więcej wymiarów

  21. 3 0101 0101 101 100 0 0 0 0 100 101 110 111 100 101 Kontynuacja:Jak dalej ma rosnąć? i = 2 00 01 10 11 0000 0101 1010 1111 0101 . . . m = 11 (najdalszy blok) 4. Haszowanie i więcej wymiarów

  22. 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) 4. Haszowanie i więcej wymiarów

  23. 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 4. Haszowanie i więcej wymiarów

  24. Przypadek zły Bardzo pełne Bardzo puste Zwiększanie m tylko spowoduje marnowanie miejsca 4. Haszowanie i więcej wymiarów

  25. 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 4. Haszowanie i więcej wymiarów

  26. 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.. 4. Haszowanie i więcej wymiarów

  27. Definicja indeksu w SQL • Createindex nazw on rel (atr) • Createuniqueindex nazwa on rel (atr) Tworzy klucz tabeli I pilnuje go! • Drop INDEX nazwa 4. Haszowanie i więcej wymiarów

  28. 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 4. Haszowanie i więcej wymiarów

  29. Indeks wielowymiarowy • Jeśli lista atrybutów jest dłuższa, to indeks jest na wielu kluczach CREATE INDEX foo ON R(bar1,bar2,bar3) • Zapytanie: Znajdź rekordy spełniające DEPT = “Toy” AND SAL > 50k 4. Haszowanie i więcej wymiarów

  30. Strategia I • Weź jeden indeks, np. Dept. • Znajdź rekordy spełniające Dept = “Toy” i sprawdź ich SAL I1 4. Haszowanie i więcej wymiarów

  31. Strategia II • Weź dwa indeksy, manipuluj wskaźnikami Toy Sal > 50k 4. Haszowanie i więcej wymiarów

  32. Strategia III • Użyj indeksu wielowymiarowego I2 I3 I1 4. Haszowanie i więcej wymiarów

  33. Art Sales Toy Przykład 10k 15k Przykładowy rekord Indeks na DEPT Indeks na SAL 17k 21k Name=Joe DEPT=Sales SAL=15k 12k 15k 15k 19k 4. Haszowanie i więcej wymiarów

  34. Które zapytania obsłuży? • Indeks (DEPT, SAL) • Znajdź rekordy: Dept = “Sales”  SAL=20k • Znajdź rekordy: Dept = “Sales”  SAL > 20k • Znajdź rekordy: Dept = “Sales” • Znajdź rekordy: SAL = 20k 4. Haszowanie i więcej wymiarów

  35. Dane geograficzne Dane: <X1,Y1, Atrybuty> <X2,Y2, Atrybuty > y . . . x 4. Haszowanie i więcej wymiarów

  36. 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>? 4. Haszowanie i więcej wymiarów

  37. 40 30 10 20 20 m g b n h o d e a k c f j l i 10 25 15 35 20 10 20 5 d e h i g f c a b 15 15 • Szukaj punktów bliskich f • Szukaj punktów bliskich b n o j k m l Przykład 4. Haszowanie i więcej wymiarów

  38. Zapytania do takiego drzewa • Znajdź punkty takie, że Yi > 20 • Znajdź punkty takie, że Xi < 5 • Znajdź punkty “bliskie” i = <12,38> • Znajdź punkty “bliskie” b = <7,24> 4. Haszowanie i więcej wymiarów

  39. Indeks siatkowy klucz2 X1 X2 …… Xn V1 V2 klucz1 Vn Do rekordów,w których klucz1=V3, klucz2=X2 4. Haszowanie i więcej wymiarów

  40. Zalety • Można szybko znależć odpowiedzi: • klucz1 = Vi klucz2 = Xj • klucz1 = Vi • klucz2 = Xj • Także zakresowo…. • klucz1  Viklucz2 < Xj 4. Haszowanie i więcej wymiarów

  41. V1 V2 V3 X1 X1 X1 Jak tablicę... X2 X2 X2 X3 X3 X3 X4 X4 X4 • Jak je ułożyć na dysku? Indeksy siatkowe mają jednak pułapkę Problem: • Musi być regularna, żeby dało się wyliczyć pozycję z <Vi,Xj> 4. Haszowanie i więcej wymiarów

  42. Rozwiązanie: Pośredniość X1 X2 X3 Kubełki V1 V2 V3*Siatka zawiera V4 jedynie wskaźniki na kubełki Kubełki -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 4. Haszowanie i więcej wymiarów

  43. Dzięki pośredniości • Siatka może być regularna bez marnowania miejsca • Jest jednak pewna cena tej pośredniości... 4. Haszowanie i więcej wymiarów

  44. Siatka może być też nad zakresami Salary Siatka 0-20K 1 20K-50K 2 50K- 3 8 Skala liniowa 1 2 3 Toy Sales Personnel 4. Haszowanie i więcej wymiarów

  45. 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 + - - 4. Haszowanie i więcej wymiarów

  46. Partycjonowana f. haszująca 010110 1110010 klucz1 klucz2 h1 h2 4. Haszowanie i więcej wymiarów

  47. <Fred> <Joe><Sally> Przykład: h1(toy) =0 000 h1(sales) =1 001 h1(art) =1 010 . 011 . h2(10k) =01 100 h2(20k) =11 101 h2(30k) =01 110 h2(40k) =00 111 . . <Fred,toy,10k>,<Joe,sales,10k> <Sally,art,30k> Wstaw 4. Haszowanie i więcej wymiarów

  48. h1(toy) =0 000 h1(sales) =1 001 h1(art) =1 010 . 011 . h2(10k) =01 100 h2(20k) =11 101 h2(30k) =01 110 h2(40k) =00 111 . . • Znajdź Emp takich, że Dept. = Sales  Sal=40k <Fred> <Joe><Jan> <Mary> <Sally> <Tom><Bill> <Andy> 4. Haszowanie i więcej wymiarów

  49. szukaj tu h1(toy) =0 000 h1(sales) =1 001 h1(art) =1 010 . 011 . h2(10k) =01 100 h2(20k) =11 101 h2(30k) =01 110 h2(40k) =00 111 . . • Znajdź Emp takich, że Sal=30k <Fred> <Joe><Jan> <Mary> <Sally> <Tom><Bill> <Andy> 4. Haszowanie i więcej wymiarów

  50. szukaj tu h1(toy) =0 000 h1(sales) =1 001 h1(art) =1 010 . 011 . h2(10k) =01 100 h2(20k) =11 101 h2(30k) =01 110 h2(40k) =00 111 . . • Znajdź Emp takich, że Dept. = Sales <Fred> <Joe><Jan> <Mary> <Sally> <Tom><Bill> <Andy> 4. Haszowanie i więcej wymiarów

More Related