Systemy zarz dzania bazami danych 3 indeksy
This presentation is the property of its rightful owner.
Sponsored Links
1 / 91

Systemy zarządzania bazami danych 3. Indeksy PowerPoint PPT Presentation


  • 64 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Systemy zarządzania bazami danych 3. Indeksy

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

    IndeksyRekordy

    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:1Słowa rzadkie

    (liczba haseł)lub błędy ortograficzne

    106Sł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+drzewan=3

100

Korzeń

120

150

180

30

3

5

11

120

130

180

200

100

101

110

150

156

179

30

35

3. Indeksy


Przykładowy węzeł wewnętrzny

57

81

95

do kluczydo kluczydo kluczy do kluczy

< 5757 k<8181k<95 95

3. Indeksy


Przykładowy liść

Z pewnego nie-liścia

do następnego

w kolejności

liścia

57

81

95

Do rekordu

o kluczu 57

Do rekordu

o kluczu 81

Do rekordu

o kluczu 85

3. Indeksy


Rozmiar węzłów

  • Rozmiar stały

    • jeśli klucze stałego rozmiaru...

  • n wartości kluczy

  • n+1 wskaźników

    • Liść: n wskaźników na rekordy i fastryga

    • Nie-liść: n+1 wskaźników na niższy poziom

3. Indeksy


Węzły nie mogą być zbyt puste

  • Zapełnienie co najmniej 50%

    • Teoretycznie...

    • Praktycznie w zasadzie tak, ale nie do końca

  • Zapełnienie co najmniej

    • Nie-liść:(n+1)/2wskaźników

    • Liść:(n+1)/2 wskaźników na dane

3. Indeksy


n=3

ZapełnionyMinimalny

Nie-liść

Liść

120

150

180

30

3

5

11

30

35

Liczy się nawet gdy NULL

3. Indeksy


Reguły B+drzew

  • Wszystkie liście są na tym samym poziomie (drzewo zrównoważone)

  • Wskaźniki w liściach wskazują rekordy (z wyjątkiem fastrygi)

3. Indeksy


3. Liczba wskaźników i kluczy

  • Stopień drzewa = n

Max Max Min Min

wsk. klu.wsk.dane klu.

Nie-liść

(nie-korzeń)

n+1

n

(n+1)/2

(n+1)/2- 1

Liść

(nie-korzeń)

n+1

n

(n+1)/2

(n+1)/2

Korzeń

n+1

n

1

1

3. Indeksy


Wstawienie do B+drzewa

(a) Przypadek najłatwiejszy

  • Gdy w liściu jest wolne miejsce

    (b) Przepełnienie liścia

    (c) Przepełnienie węzła wewnętrznego

    (d) Nowy korzeń

3. Indeksy


32

n=3

100

(a) Wstaw klucz = 32

30

3

5

11

30

31

3. Indeksy


7

3

5

7

n=3

100

(b) Wstaw klucz = 7

30

3

5

11

30

31

3. Indeksy


160

180

160

179

n=3

100

(c) Wstaw klucz = 160

120

150

180

180

200

150

156

179

3. Indeksy


30

Nowy korzeń

40

40

45

n=3

(d) Wstaw 45 – nowy korzeń

10

20

30

1

2

3

10

12

20

25

30

32

40

3. Indeksy


Usunięcie z B+drzewa

  • Przypadek najłatwiejszy

  • Scal się z sąsiadem (bliźniakiem)

  • Poprzerzucaj klucze

  • Przypadki (b) lub (c) w nie-liściu

3. Indeksy


40

n=4

(b) Scalenie z sąsiadem

  • Usuń 50

10

40

100

10

20

30

40

50

3. Indeksy


35

35

n=4

(c) Poprzerzucaj klucze

  • Usuń 50

10

40

100

10

20

30

35

40

50

3. Indeksy


Nowy korzeń

40

25

30

(d) Scalenie nie-liści

  • Usuń 37

n=4

25

10

20

30

40

25

26

30

37

1

3

10

14

20

22

40

45

3. Indeksy


Usunięcia z B+drzew w praktyce

  • Zwykle nie dokonuje się scalania

    • Jest zbyt kosztowne i nie warto tego robić

    • I tak trzeba co jakiś czas przebudować indeksy ze względu na błędy w SZBD

3. Indeksy


B+drzewa a indeksy konwencjonalne

  • Na podstawie

    [1] Held i Stonebraker “B-Trees Re-examined”, Communications of ACM, Feb. 1978

3. Indeksy


Wnioski z [1]

  • W B+drzewach trudniej obsługiwać współbieżność

  • B+drzewa zużywają więcej przestrzeni

  • Założenia analizy

    • blok = 512 bajtów

    • klucz = wskaźnik = 4 bajty

    • 4 rekordy w bloku

3. Indeksy


k1

k2

k3

1 blok indeksu statycznego

1 blok

danych

127 kluczy

(127+1)4 = 512 bajtów

-> wskaźniki wyliczane (offsety)do 127

bloków

k1

k2

k3

3. Indeksy


k1

k2

k3

1 blok B+drzewa

k1

1 blok

danych

63 klucze

63x(4+4)+8 = 512 bajtów

-> wskaźniki są koniecznedo 63

bo B+drzewo nie jest ciągłebloków

k2

...

k63

-

next

3. Indeksy


Porównanie rozmiarów [1]

Indeks statycznyB+drzewo

liczba liczba

bloków wysokość bloków wysokość

2 -> 1272 2 -> 63 2

128 -> 16,129 3 64 -> 3968 3

16,130 -> 2,048,3834 3969 -> 250,047 4

250,048 -> 15,752,961 5

3. Indeksy


Wniosek z [1]

Statyczne indeksy lepsze

Wyniki analizy [1]

  • W przypadku pliku 8000-blokowegopo 32 000 wstawieniach

    po 16 000 wyszukiwaniach

     Oszczedzamy tyle czasu, że starczy go na ręczną reorganizację

3. Indeksy


Wniosek z [2]

B+drzewa są lepsze!

[2] M. Stonebraker, “Retrospective on a databasesystem,” TODS, June 1980

  • DBA nie wie, kiedyreorganizować

  • DBA nie wie,jak bardzo zapełnić strony indeksu po reorganizacji

3. Indeksy


Wnioski z [2]

B+drzewa są lepsze

  • Zarządzanie buforami

    • B+drzewo ma stałą wymaganą wielkość bufora (liczbę bloków)

    • Indeks statyczny musi być może doczytać kilka stron nadmiarowych (co wymaga większej i zmiennej liczby niezbędnych buforów)

3. Indeksy


Zarządzanie buforami

  • Czy LRU to dobra strategia zarządzania buforami?

    • Oczywiście nie!

    • Korzeń musi być przyszpilony w pamięci...

    • I być może nizsze poziomy też

    • Czyli MRU!

3. Indeksy


Najlepszy stopień B+drzewa?

nto liczba kluczy w węzle

3. Indeksy


Przykładowe założenia

(1) Czas potrzebny na odczyt węzła z dysku(70+0.05n) ms

(2) Gdy węzeł jest w pamieci, korzystamy z wyszukiwania binarnego (a + b LOG2n) ms

Dla pewnych stałycha,b; Zakładamy, że a << 70

(3) Założmy, że B+drzewo jest zapełnioneliczba węzłów do przejrzenia to

LOGnNgdzie N = liczba rekordów

3. Indeksy


Minimalizujemy funkcję:f(n) = czas poszukiwania rekordu

f(n)

noptn

3. Indeksy


 Znajdź nopt => pochodna f’(n) = 0

  • nopt = kilkaset

  • W praktyce koszt odczytu bloku nie zależy od n, bo węzeł = blok

  • Ignorujemy koszt CPU

  • Minimalizujemy więc LOGnN

  • Czyli?

  • Upychamy w bloku tyle kluczy, ile wlezie

  • I tak wychodzi kilkaset

3. Indeksy


A gdyby zwykłe Bdrzewo? [ bez + ]

  • Unikamy duplikacji kluczy

  • Wskaźniki do rekordów są też w węzłach wewnętrznych

3. Indeksy


K1 W1

K2 W2

K3 W3

do rekordu do rekordu do rekordu

do K1 z K2 z K3

do kluczy do kluczy do kluczy do kluczy

< K1 K1<x<K2 K2<x<K3 >K3

3. Indeksy


Fastryga jest teraz

bezużyteczna!

Przykład Bdrzewan=2

65

125

25

45

85

105

145

165

10

20

30

40

50

60

70

80

90

100

110

120

130

140

150

160

170

180

3. Indeksy


20

  • Potem:

10

25

30

Uwaga o wstawieniach

10

20

30

  • Wstawiamy rekord z kluczem 25

n=3

liść

3. Indeksy


Statystyka Bdrzew

MAXMIN

Wsk. Wsk. Klu. Wsk. Wsk. Klucze

węz. rek. węz. rek.

Nie-liść

Nie-korzeńn+1nn (n+1)/2 (n+1)/2-1 (n+1)/2-1

Liść

Nie-korzeń1nn 1 (n+1)/2(n+1)/2

Korzeń

Nie-liśćn+1nn 2 1 1

Korzeń

Liść1nn 1 1 1

3. Indeksy


Wady i zalety

 Bdrzewa pozwalają na szybsze wyszukiwanie niż B+drzewa

 W Bdrzewach liście i nie-liście są różnych rozmiarów

 W Bdrzewach usuwanie trudniejsze

 B+drzewalepsze!

3. Indeksy


Ale...

  • Jeśli bloki są stałego rozmiaru (a tak jest w przypadku wielu dysków):

  • To wyszukiwanie w B+drzewach jest w istocie lepsze.

3. Indeksy


Przykład

  • Wskaźnik:4 bajty

  • Klucz 4 bajty

  • Blok100 bajtów (dla prostoty)

  • Pełne dwupoziomowe drzewo

3. Indeksy


Bdrzewo:

Korzeń ma 8 kluczy + 8 wskaźników na rekordy+ 9 wskaźników na synów

= 8x4 + 8x4 + 9x4 = 100 bajtów

Każdyz 9 synów: 12 wsk. na rek. +12 kluczy

= 12x(4+4) + 4 = 100 bajtów

2-poziomowe Bdrzewo ma maksymalnie

12x9 + 8 = 116 rekordów

3. Indeksy


B+drzewo:

Korzeń ma 12 kluczy + 0 wskaźników na rekordy

+ 13 wskaźników na synów

= 12x4 + 0x4 + 13x4 = 100 bajtów

Każdyz13 synów: 12 wsk. na rek. +12 kluczy

= 12x(4+4) + 4 = 100 bajtów

2-poziomowe B+drzewo ma maksymalnie

13x12 = 156 rekordów

3. Indeksy


8 rekordów

Zatem?

B+

B

ooooooooooooo ooooooooo

156 rekordów 108 rekordów

Razem = 116

  • Wniosek

    • W przypadku bloków stałego rozmiaru,

    • B+drzewa są lepsze, bo są bardziej krzaczaste

3. Indeksy


  • Login