910 likes | 1.07k Views
Systemy zarządzania bazami danych 3. Indeksy. Indeksowanie i haszowanie. rekord(y). wartość Indeksy konwencjonalne B-drzewa i B+drzewa Haszowanie. ?. wartość. 10. 30. 50. 70. 90. 20. 40. 60. 80. 100. Plik uporządkowany. 70. 50. 30. 10. 110. 90. 120. 80. 60. 40. 20.
E N D
Systemy zarządzania bazami danych3. Indeksy 3. Indeksy
Indeksowanie i haszowanie rekord(y) wartość • Indeksy konwencjonalne • B-drzewa i B+drzewa • Haszowanie ? wartość 3. Indeksy
10 30 50 70 90 20 40 60 80 100 Plik uporządkowany 3. Indeksy
70 50 30 10 110 90 120 80 60 40 20 100 90 10 70 50 30 80 60 40 20 100 Plik uporządkowany Indeks gęsty 3. Indeksy
130 90 50 10 210 170 230 150 110 70 30 190 90 10 70 50 30 80 60 40 20 100 Plik uporządkowany Indeks rzadki 3. Indeksy
330 490 170 10 210 170 130 90 10 50 70 250 410 570 30 150 110 190 230 90 30 50 10 90 70 100 80 60 40 20 Rzadki indeks Plik uporządkowany 2. poziomu 3. Indeksy
Pytanko • Czy ma sens gęsty indeks drugiego poziomu? 3. Indeksy
Wskaźniki do rekordów • Wskaźnik do bloku (w indeksie rzadkim) jest mniejszy niż wskaźnik do rekordu WdB WdR • Jeśli plik jest fizycznie ciągły, możemy wyliczać wskaźniki (i ich nie zapisywać) 3. Indeksy
Załóżmy, że bloki mają 1KB R2 R1 R3 rekordu o kluczu K3 szukamy w bloku o offsecie (3-1)1024 = 2048 bajtów R4 K1 K2 K3 K4 3. Indeksy
Kompromis: indeks gęsty czy rzadki? • Rzadki • Mniej miejsca na indeks • Więcej indeksu mieści się w RAM • Gęsty • Możemy sprawdzić, czy jest taki rekord bez zaglądania do pliku • Możliwe użycie strategii „tylko-indeks” 3. Indeksy
Pojęcia • Uporządkowany plik indeksowy • Klucz wyszukiwania (nie zawsze klucz!) • Indeks główny (na polu porządkującym) • Indeks niegłówny (drugorzędny) • Indeks gęsty lub rzadki • Indeks pogrupowany lub niepogrupowany • Indeks wewnętrzny lub zewnętrzny • Indeks wielopoziomowy 3. Indeksy
10 10 20 30 40 10 20 30 30 45 Powtarzalne klucze 3. Indeksy
40 10 20 30 40 30 10 10 10 20 20 10 30 30 10 45 45 30 30 20 Powtarzalne klucze • Czy indeks gęsty to jedyna możliwość? 10 10 10 10 10 10 20 20 20 20 30 30 30 30 30 30 3. Indeksy
30 10 10 20 40 45 30 30 10 20 Powtarzalne klucze • Indeks gęsty, czy lepszy pomysł? 10 20 30 40 3. Indeksy
30 10 10 20 40 45 30 30 10 20 Starannie szukaj 20 i 30 Powtarzalne klucze • A może jednak rzadki? Oto pierwszy pomysł: 10 10 20 30 3. Indeksy
30 10 10 20 40 45 30 30 10 20 Może ma być 40? Powtarzalne klucze • Rzadki: tylko pierwszy nowy klucz z bloku 10 20 30 30 3. Indeksy
Powtarzalne klucze, indeks główny • Indeks może wskazywać tylko pierwsze wystąpienie każdej wartości klucza Plik Indeks a a a . . b 3. Indeksy
10 30 50 70 80 20 40 60 Usuwanie z indeksu rzadkiego 10 30 50 70 90 110 130 150 3. Indeksy
70 10 30 50 20 40 60 80 Usuwanie z indeksu rzadkiego • usuń rekord 40 10 30 50 70 90 110 130 150 3. Indeksy
10 30 50 70 20 40 60 80 40 40 Usuwanie z indeksu rzadkiego • usuńrekord 30 10 30 50 70 90 110 130 150 3. Indeksy
10 30 50 70 20 40 60 80 50 70 Usuwanie z indeksu rzadkiego • usuńrekordy 30 i 40 10 30 50 70 90 110 130 150 3. Indeksy
10 30 50 70 80 20 40 60 Usuwanie z indeksu gęstego 10 20 30 40 50 60 70 80 3. Indeksy
10 50 70 20 60 80 40 40 Usuwanie z indeksu gęstego • usuń rekord 30 10 20 30 30 40 40 50 60 70 80 3. Indeksy
10 30 40 60 20 50 Wstawienie, indeks rzadki 10 30 40 60 3. Indeksy
10 30 40 60 20 50 34 • dziś mamy szczęście! • wolne miejsce jest tam • gdzie go potrzebujemy Wstawienie, indeks rzadki • wstaw rekord 34 10 30 40 60 3. Indeksy
10 30 40 60 20 50 15 20 20 30 Wstawienie, indeks rzadki • wstaw rekord 15 10 30 40 60 • Tu: natychmiastowa reorganizacja • Inne opcje: • Dodać blok nadmiarowy • Poprawić indeks 3. Indeksy
10 30 40 60 25 20 50 Lista bloków nadmiarowych (reorganizacji później...) Wstawienie, indeks rzadki • wstawrekord 25 10 30 40 60 3. Indeksy
Wstawienie, indeks gęsty • Podobnie • Zwykle jednak bardziej kosztowne 3. Indeksy
30 20 80 100 90 50 70 40 10 60 Indeksy drugorzędne 3. Indeksy
100 30 20 80 90 10 40 60 50 70 90 30 ... 20 80 100 Chyba nie zadziała? Indeksy drugorzędne • Indeks rzadki 3. Indeksy
90 100 30 80 20 60 10 70 50 40 10 50 10 60 50 20 70 90 30 ... ... 40 rzadki wyższy poziom Indeksy drugorzędne • Indeks gęsty 3. Indeksy
Indeksy drugorzędne • Najniższy poziom musi być gęsty • Wszystkie pozostałe są rzadkie • Wskaźniki są wskaźnikami na rekordy • Nie: wskaźniki blokowe • Nie: wyliczane 3. Indeksy
20 20 10 10 30 10 40 40 40 40 Klucze powtarzalne i indeks drugorzędny 3. Indeksy
30 20 20 10 10 10 40 40 40 40 10 20 40 30 10 40 10 ... 40 40 20 Klucze powtarzalne i indeks drugorzędny Pierwszy pomysł... • Problem: • Nadmierny narzut • miejsce na dysku • czas wyszukiwania 3. Indeksy
10 20 20 10 30 40 40 40 10 40 20 30 40 Klucze powtarzalne i indeks drugorzędny Inny pomysł... 10 Problem: Indeks zawiera rekordy rozmiaru zmiennego 3. Indeksy
10 20 20 10 30 10 40 40 40 40 50 10 60 20 30 ... 40 Klucze powtarzalne i indeks drugorzędny Trzeci pomysł: lista rekordów o tej samej wartości klucza? • Problemy: • Dodatkowe pole w rekordzie • Liniowe przeszukiwanie listy rekordów 3. Indeksy
10 30 20 20 10 10 40 40 40 40 50 10 20 60 ... 30 40 Klucze powtarzalne i indeks drugorzędny kubełki 3. Indeksy
Pomysł z kubełkami jest dobry • Po pierwsze rekordy indeksy stałej długości • Przykładowy schemat Indeksy Rekordy Name: główny EMP (name,dept,floor,...) Dept: drugorzędny Floor: drugorzędny 3. Indeksy
Indeks na Dept Plik EMPIndeks na floor Toy 2 Znajdź pracowników z działu Toy i 2. piętra: (‘Toy’ = Dept) ^ (floor = 2 ) Oblicz przecięcie obu kubełków, żeby znaleźć pasujących pracowników 3. Indeksy
cat dog Listy odwrócone Ten pomysł jest stosowany do wydobywania informacji z tekstu (IR) Dokumenty ...the cat is fat ... ...was raining cats and dogs... ...Fido the dog ... 3. Indeksy
Zapytania IR (Information Retrieval) • Znajdź dokumenty zawierające “cat” i “dog” • Znajdź dokumenty zawierające “cat” lub “dog” • Znajdź dokumenty zawierające “cat” ale bez “dog” • Znajdź dokumenty zawierające “cat” w tytule • Znajdź dokumenty zawierające “cat” i “dog” w odległości co najwyżej 5 słów 3. Indeksy
Więcej danych na liście odwróconej cat nr znaku miejsce wskaźnik d1 Tytuł 5 Autor 10 Streszczenie 57 d2 d3 dog Tytuł 100 Tytuł 12 3. Indeksy
Hasło = pozycja listy odwróconej • Reprezentuje wystąpienie słowa w dokumencie Długość listy: 1 Słowa rzadkie (liczba haseł) lub błędy ortograficzne 106 Słowa często używane • Rozmiar hasła: 10-15 bitów (po kompresji) 3. Indeksy
Zagadnienia IR • Słowa ignorowane • Skracanie słów • Wyrazy bliskoznaczne • Fleksja (zwłaszcza w polskim: liczne pułapki) • Po normalizacji słów okazało się że najczęściej w Panu Tadeuszu występuje słowo „oda” (od) • Błędy ortograficzne • Pełne teksty czy Streszczenia • Model wektorowy 3. Indeksy
Model przestrzeni wektorowej s1 s2 s3 s4 s5 s6 s7 … Dokument= <1 0 0 1 1 0 0 …> Zapytanie = <0 0 1 1 0 0 0 …> Koniunkcja= ... + 1 + … = punktacja 3. Indeksy
Usprawnienia IR • Model wektorowy przypomina listy bitmapowe • Różne sposoby ważenia punktacji i normalizacji, np. • Dopasowanie słowa częstego nie jest tak znaczące (wartościowe) jak słowa rzadkiego • Implementacja: Google, Altavista, ... 3. Indeksy
Indeksy konwencjonalne • Zalety • Proste • Indeks jest plikiem uporządkowanym wygodnym przy pełnych przeglądach • Wady • Wstawienia są kosztowe lub • Tracimy fizyczne uporządkowanie lub równowagę 3. Indeksy
32 39 38 31 33 35 34 36 Bloki nadmiarowe (nieciągłe) Przykład gnicia indeksu konwencjonalnego 10 20 30 ciągła alokacja wolne miejsce 40 50 60 70 80 90 3. Indeksy
Lekarstwo • Nowy rodzaj indeksu • Rezygnujemy z ciągłej alokacji stron indeksu • Staramy się by się sam równoważył • Rodzaje drzew równoważących się: AVL, czerwono-czarne, B-drzewa • W bazach danych B-drzewa, w właściwie B+drzewa 3. Indeksy
Przykład B+drzewa n=3 100 Korzeń 120 150 180 30 3 5 11 120 130 180 200 100 101 110 150 156 179 30 35 3. Indeksy