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.

Download Report

Transcript 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.

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
files,
 Pliki
 Pliki
nieuporządkowane (unordered
heap files)
uporządkowane (ordered files)
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 I poprzedniego
 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
Adam
…
Adrian
Anna
Bartosz
Bernard
Bogumiła
Pankracy
Paulina
…
Roman
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 podstawie tzw. 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
nrindeksu
nazwisko
adres
123001
Kowal
Akacjowa 1
127000
Maliniak
Świerkowa 6
666002
Nowak
Różana 4/78
123000
Lis
Akacjowa 2
0
127000 Maliniak Świerkowa 6
1
123001 Kowal Akacjowa 1
2
666002 Nowak Różana 4/78
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
Adams
Wartość
indeksowana
…
wskaźnik
do bloku
Agor
Adams
Basior
Basior
…
…
Berent
Gawron
…
…
Gawron
Kawar
…
…
…
Gnied
Kawar
…
Kozak
dr Paweł Drozda
Pole
porządkujące
Indeks zgrupowany – przykład
1
Wartość
indeksowana
wskaźnik
do bloku
1
2
1
2
2
3
2
3
4
5
3
…
3
10
3
…
4
…
dr Paweł Drozda
11
Indeks wtórny - przykład
65
Wartość
indeksowana
wskaźnik
do bloku
1
17
1
2
5
3
6
4
2
5
7
6
3
…
34
23
4
dr Paweł Drozda
11
Indeks o kluczu złożonym
indeks<zarobki,nazwisko>
indeks<nazwisko,zarobki>
Gordon;2800
Gordon;4200
Wasiak;3600
Gordon
2800
Wiązowa
Gordon
4200
Akacjowa
Wasiak
4900
Tęczowa
Wasiak
3600
Słoneczna
2800; Gordon
3600; Wasiak
4200; Gordon
4900; Wasiak
Wasiak;4900
Atrybut wiodący nazwisko
Atrybut wiodący zarobki
dr Paweł Drozda
Indeks wielopoziomowy
Indeks pierwszego
poziomu
1
3
1
Indeks drugiego
poziomu
4
4
8
7
8
10
9
18
1
10
32
51
25
10
32
15
38
44
18
22
51
58
25
67
26
dr Paweł Drozda
Indeks dynamiczny
 Najczęściej stosowane – indeksy
drzewiaste
korzeń
A
B
D
C
E
F
Poziom 0
węzeł
Poziom 1
H
G
liść
I
dr Paweł Drozda
J
Poziom 2
K
Poziom 3
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
7
X>7
X<=7
5
1
4
6
10
7
8
10
Przestrzeń dyskowa
dr Paweł Drozda
12
15
13
17
18
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
h  logp b
h  logp r 
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