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