Bazy danych

Transkrypt

Bazy danych
2010-11-29
PLAN WYKŁADU
Składowanie danych
Podstawowe struktury plikowe
 Organizacja plików


BAZY DANYCH
Wykład 8
dr inż. Agnieszka Bołtuć
HIERARCHIA MECHANIZMÓW SKŁADOWANIA

Podstawowy mechanizm składowania – pamięć
operacyjna, zapewnia szybki dostęp, ale
ograniczona pojemność,

Drugorzędny mechanizm składowania – dyski
magnetyczne, optyczne i taśmy, większa
pojemność, mniejszy koszt, wolniejszy dostęp.
PRZECHOWYWANIA BAZ DANYCH

Dane w dużych ilościach i trwałe przechowywane
są najczęściej na dyskach drugorzędnego
mechanizmu przechowywania (pamięć
zewnętrzna),

Powody:
 zbyt duże, aby mieściły się w pamięci w
całości,
 jest to pamięć nieulotna, mniej narażona na
utratę danych,
 mniejszy koszt jednostkowy.
1
2010-11-29
TYPY REKORDÓW I PLIKI
REKORDY





Dane są zwykle przechowywane w postaci rekordów,
Każdy rekord składa się z pól przechowujących
wartości,
Rekordy zwykle opisują encje i ich atrybuty,
Nazwy pól i ich dane to typ rekordu,
Przykład rekordu w notacji C:

Rodzaje rekordów:
 Proste – wartość pola elementarna i złożone wartością pola rekordu jest inny rekord,
 O stałej długości - zawsze zajmuje tyle samo
miejsca na dysku, niezależnie od rzeczywistych
rozmiarów przechowywanych w nim danych i
zmiennej długości – wszystkie rekordy różnej
długości, przyjmują taki rozmiar jaki faktycznie
przyjmują przechowywane w nich dane (pola o
zmiennej długości, wiele wartości dla pojedynczego
rekordu, pola opcjonalne, różne typy rekordów),

Plik jest ciągiem rekordów.
struct pracownik{
char imie[10];
char pesel[10];
int wiek;
int zarobki;
};

Typ danych BLOB jest przechowywany poza swoim
rekordem,
FORMATY PRZECHOWYWANIA REKORDÓW
Nazwisko
PESEL
1
Nazwisko
Kowalski
12
PESEL
45061123411
Nazwisko=Kowalski
ROZMIESZCZANIE REKORDÓW W BLOKACH
Stanowisko

Rekordy są przydzielane w blokach dyskowych,
gdyż blok stanowi jednostkę przesyłania danych
pomiędzy dyskiem a pamięcią,

Rozmiar tych bloków jest określany przez system
operacyjny,

Każdy blok może zawierać wiele rekordów, każdy
rekord może się mieścić w wielu blokach,
22
Stanowisko
kierownik
PESEL=45061123411
Stanowisko=kierownik
2
2010-11-29
WSPÓŁCZYNNIK BLOKU
ORGANIZACJA REKORDÓW
Można określić tzw. współczynnik bloku bfr –
reprezentujący średnią liczbę rekordów na blok dla
danego pliku:
 bfr= ⎣B/R⎦, B- rozmiar bloku w bajtach, R- rozmiar
rekordu o stałej długości lub maksymalny rozmiar
rekordu o zmiennej długości, B≥R,
 B-(bfr*R) bajtów – to obszar nieużywanej
przestrzeni w każdym bloku, wynikający z faktu że
R jest zazwyczaj niepodzielne przez B,
 b= ⎡(r/bfr)⎤ bloków – liczba bloków wymaganych
dla pliku zawierającego r rekordów, dla rekordów o
zmiennej długości,
Organizacja segmentowa (dzielona)
 Rekordy mogą być przechowywane w kilku
blokach, gdy są zbyt duże są dzielone,
 Wskaźniki wskazują na kolejne bloki w których
znajduje się pozostała cześć rekordu,
 Redukuje ilość traconej przestrzeni dyskowej,
ORGANIZACJA REKORDÓW
RODZAJE ALOKACJI BLOKÓW NA DYSKU
Organizacja niesegmentowa (niepodzielna)
 Rekord, który nie mieści się w całości w bloku jest
przenoszony do bloku, w którym zmieści się cały,
 Powoduje pozostawanie niewykorzystywanego
miejsca w blokach,

Ciągła – bloki pliku są alokowane w kolejnych blokach
dysku, szybkie, ale utrudnia rozszerzanie pliku,

Łączona – każdy blok pliku zawiera wskaźnik na
następny, spowalnia, ale umożliwia rozszerzanie,

Klastrów - ciągłe sekwencje bloków są łączone w
klastry, które zawierają wskaźniki na kolejne klastry,
klastry nazywa się segmentami pliku lub obszarami
pliku,

Indeksowa - bloki pełnią rolę indeksów zawierających
wskaźniki na faktyczne bloki pliku.

R1
R4
R2
R5
R3
blok i
R5
blok i+1
R1
R2
R3
blok i
R3
R4
R5
blok i+1
3
2010-11-29
NAGŁÓWKI (DESKRYPTORY) PLIKÓW
OPERACJE NA PLIKACH
Zawiera podstawowe informacje wymagane przez
programy systemowe:
 Informacje służące do określania adresów na
dysku bloków pliku,
 Opisy formatów – z długością pól i kolejnością
pól w rekordzie dla niesegmentowanych
rekordów o stałej długości,
 Kody typów pól, znaki separatorów oraz kody
typów rekordów dla rekordów o zmiennej
długości
 Informacje wykorzystywane do wyszukiwania
rekordu na dysku.
Operacje jednorekordowe:
OPERACJE NA PLIKACH
OPERACJE NA PLIKACH
ZnajdźNastępny: szuka kolejnego rekordu
spełniającego warunki,
 Usuń: usuwa rekord bieżący, aktualizuje plik na
dysku,
 Zmodyfikuj: modyfikuje wybrane pola bieżącego
rekordu, aktualizuje plik na dysku,
 Wstaw: wstawia nowy rekord do zlokalizowanego
bloku po ówczesnym przesłaniu rekordu do
pamięci, zapisuje bufor na dysk,
 Zamknij: zwalnia bufory, wykonuje inne operacje
czyszczące,
 Przeglądaj: zwraca pierwszy lub kolejny rekord
(jeśli plik był wcześniej otwarty)
Operacje zbiorowe:
 ZnajdźWszystkie: znajduje wszystkie rekordy w
pliku spełniające warunek,
 ZnajdźN: wyszukuje 1 rekord spełniający warunek i
następnie n-1 kolejnych,
 ZnajdźPosortowane: pobiera rekordy z pliku w
wybranym porządku,
 Zreorganizuj: dokonuje rozpoczęcia procesu
reorganizacji, np. zmiany kolejności rekordów pliku
poprzez ich posortowanie,
 Otwórz, Zamknij.






Otwórz: przygotowuje plik do odczytu, przydziela
bufory, odczytuje nagłówek pliku, ustawia wskaźnik na
początku pliku,
Zeruj: ustawia wskaźnik na początku otwartego pliku,
Znajdź: znajduje pierwszy rekord spełniający warunki
wyszukiwania, przesłanie znalezionego bloku
dyskowego do bufora w pamięci, ustawia wskaźnik na
znalezionym rekordzie – nazywanym rekordem
bieżącym,
Odczytaj: kopiuje bieżący rekord do zmiennej programu
w aplikacji użytkownika, może przesuwać wskaźnik na
następny rekord w pliku,
4
2010-11-29
RODZAJE OPERACJI I PLIKÓW
RODZAJE ORGANIZACJI PLIKÓW
Operacje pobierania – nie zmieniają danych,
lokalizują określone rekordy,
 Operacje aktualizacji – zmieniają plik poprzez np.
dodawanie czy usuwanie rekordów,

Pliki nieuporządkowanych rekordów (stertowe lub
stosowe),

Pliki uporządkowanych rekordów (posortowane,
sekwencyjne),

Pliki statyczne – operacje aktualizacji są stosowane
bardzo rzadko,
 Pliki dynamiczne – podlegają częstym zmianom,

Pliki haszowe.
PLIKI NIEUPORZĄDKOWANYCH REKORDÓW
PLIKI STERTOWE - OPERACJE

Wstawianie: wydajne, po ostatnim rekordzie,
Wyszukiwanie: liniowe przeszukanie całego pliku
blok po bloku, jeśli mamy w pliku b bloków to przy
jednym rekordzie spełniającym warunki mamy
koszt średni b/2, zaś przy kilku rekordach lub ich
braku koszt nawet b,
 Usuwanie: wiąże się z takimi operacjami jak
wyszukanie, skopiowanie do bufora, usunięcie i
zapisanie na dysku, powoduje pojawienie się
nieużywanej przestrzeni na dysku, można
wprowadzić znacznik usunięcia lub okresowa
reorganizację pliku,



Rekordy umieszczane są w pliku w kolejności
wstawiania – nowy rekord zawsze na końcu,

Adres ostatniego bloku przechowywany jest w
nagłówku pliku,
5
2010-11-29
PLIKI STERTOWE - OPERACJE

PLIKI STERTOWE - CHARAKTERYSTYKA
Porządkowanie: tworzy się posortowaną kopię
pliku, operacja kosztowna, stosuje się technikę
sortowania zewnętrznego - polega ono na
sortowaniu pliku fragmentami, które mieszczą się w
pamięci operacyjnej. Każdy posortowany fragment
jest w drugiej fazie sortowania łączony z innymi
fragmentami,
PLIKI UPORZĄDKOWANYCH REKORDÓW

PLIKI SEKWENCYJNE - OPERACJE
Rekordy pliku są porządkowane według wartości
jednego pola (pole uporządkowania),
Aaron
Abbott
Blok 1
…
Adams
Andrews
Barnaba
…
Efektywne wstawianie pojedynczych rekordów i
zbiorów rekordów – zawsze na końcu,
 Efektywne inne operacje, ale tylko w przypadku
plików o rozmiarze kilku bloków,
 Struktura właściwa dla odczytu wszystkich
rekordów (o stałej i zmiennej długości, o organizacji
segmentowanej i niesegmentowanej),
 Struktura stosowana z innymi strukturami dostępu
do danych (np. indeksy).

Blok 2
Cyklon
Odczyt rekordów: wydajny, bez sortowania,
Znalezienie następnego: wydajne, przeważnie
bez konieczności dostępu do innych bloków,
 Wyszukiwanie: może być użyty mechanizm
wyszukiwania binarnego, efektywny, koszt log2b,
 Wstawianie: kosztowe, gdyż wymaga fizycznego
uporządkowania rekordów, należy wyszukać
pozycję i przesuwać średnio połowę rekordów
(odczytanie i zapisanie),


…
Wojko
Zaklew
…
Blok n
Zynks
6
2010-11-29
PLIKI SEKWENCYJNE - OPERACJE
Usuwanie: kosztowny tak jak wstawianie, można
nadawać znaczniki usunięcia i dokonywać
reorganizacji,
 Wyszukiwanie wg innego klucza niż klucz
uporządkowania: wyszukiwanie liniowe,
 Modyfikacja: koszt zależy od warunku
wyszukiwania (gdy uwzględnia pole porządkujące
to binarnie) i modyfikowanego pola (porządkujące
czy nie), modyfikacja pola porządkującego jest tak
samo kosztowna jak wstawienie rekordu

PLIKI SEKWENCYJNE - WSTAWIANIE
Zwiększenie wydajności wstawiania można uzyskać
dzięki:
Pozostawianie niezużytej przestrzeni w każdym
bloku dla nowych rekordów- gdy miejsce się
skończy ten sam problem,
 Tworzenie tymczasowego pliku
nieuporządkowanego (plik przepełnienia) z nowym
rekordem na końcu i okresowe jego sortowanie z
dołączaniem do pliku głównego w trakcie
reorganizacji- zwiększamy efektywność wstawiania,
ale dołączamy nieefektywne wyszukiwanie liniowe,

PLIKI SEKWENCYJNE - CHARAKTERYSTYKA
PLIK MIESZAJĄCY/HASZOWY
Zalety:
 Efektywny odczyt rekordów w kolejności pola
porządkującego, gdyż są już posortowane
 Znalezienie następnego rekordu, według określonego
porządku, jest bardzo proste
 Bardzo efektywne wyszukiwanie oparte na metodzie
binarnej, jeśli kryterium oparte jest o pole porządkujące,
Wady:
 Uporządkowanie pliku jest nieprzydatne, gdy
wyszukiwanie jest realizowane według wartości pola nie
porządkującego pliku danych,
 wstawianie i usuwanie rekordów jest bardzo kosztowne
ze względu na konieczność zachowania porządku.

Organizacja pliku bazuje na technice mieszania,
Porządek rekordów w pliku określony na podstawie
tzw. pola mieszającego/haszowego,
 Idea polega na określeniu funkcji h (funkcja
mieszająca/haszowa/randomizacji), która to zwraca
adres bloku dyskowego, w którym powinien znaleźć
się dany rekord,
 Wyróżniamy następujące rodzaje haszowania:
 wewnętrzne,
 zewnętrzne.

7
2010-11-29
HASZOWANIE WEWNĘTRZNE


HASZOWANIE WEWNĘTRZNE
Mieszanie implementowane jest w postaci tablicy
mieszającej z użyciem tablicy rekordów,
Koncepcja haszowania wewnętrznego:
 dana jest tablica o indeksach od 0 do M-1, zatem jest
M pozycji których adresy odpowiadają indeksom
tablicy,
 wybierana jest funkcja mieszająca, która przekształca
pole mieszające na wartość całkowitą z przedziału od
0 do M-1,
 najczęściej spotykaną funkcją haszową jest funkcja
h(K)=K MOD N,
 inne funkcje haszujące opierają się na operacjach
arytmetycznych, logicznych, wybieraniu pewnych cyfr
z wartości pola mieszającego.
HASZOWANIE WEWNĘTRZNE - PRZYKŁAD
Nazwisko
PESEL
Stanowisko
Dział
0
1
2
3
4
5
M-2
M-1
Polem mieszającym może być Nazwisko, zaś wynikiem działania funkcji
haszowej adres pod którym umieścimy rekord.
ALGORYTMY MIESZAJĄCE
Pierwszym etapem przed zastosowaniem
mechanizmu haszowania jest transformacja:
wartości niecałkowitoliczbowych do całkowitych,
czy ciągu znaków do wartości numerycznych,
 Przykład algorytmu mieszającego: zastosowanie
funkcji mieszającej mod względem ciągu znaków K

Id
Nazwisko
Dział
16
Kowlaski
O
0
10;Polaks;O
12
Otycek
P
1
11;Wertykowski;P
15
Macukow
L
2
12;Otycek;P
14
Fortulik
K
3
13;Laisek;O
13
Laisek
O
4
14;Fortulik;K
10
Polaks
O
5
15;Macukow;L
11
Wertykowski
P
6
16;Kowlaski;O
char K[20];
temp=1;
for (i=1;i<=20;i++)
{
h(Id)=Id mod 10
temp=temp*K[i] ;}
adress=temp % M;
8
2010-11-29
KOLIZJA

Następuje gdy wartość pola mieszającego
wstawianego rekordu po wykonaniu mieszania
zwraca adres który zawiera już inny rekord,

Rozwiązaniem jest wstawienie rekordu na innej
pozycji, nazywamy to rozstrzygnięciem kolizji,

Metody rozstrzygania kolizji:
 Adresowanie jawne,
 Łączenie,
 Mieszanie wielokrotne.
ADRESOWANIE JAWNE
METODY ROZSTRZYGANIA KOLIZJI
Adresowanie jawne - począwszy do pozycji
zwróconej przez haszowanie program sprawdza
wszystkie kolejne aż znajdzie nieużywaną pozycję,
czyli w skrócie kolejną wolną,
 Łączenie – do każdej pozycji rekordu zostaje
dodane pole wskaźnika, nowy rekord jest
umieszczany na nieużywanej pozycji przepełnienia
i ustawiany jest adres mieszający na taką pozycję,
tworzony jest obszar przepełnienia do
przechowywania rekordów ulegających kolizji,
 Mieszanie wielokrotne – program stosuje drugą
lub trzecią funkcję mieszającą, jeśli mamy dalej
kolizję wykorzystywane jest adresowanie jawne,

ŁĄCZENIE
Algorytm rozstrzygnięcia kolizji przez jawne adresowanie
Pola danych
i=adres_mieszania(K); a=i;
if (pozycja i jest zajęta)
{
i= (i+1) % M;
while ((i!=a) && pozycja i jest zajęta)
i= (i+1) % M;
if (i==a) wszytskie_pozycje_zajęte
else
nowy_adres=i;
}
0
1
2
3
4
5
Wskaźnik przepełnienia
NULL
M
NULL
NULL
obszar
adresowy
M+2
M-2
M-1
M+1
M
M+1
M+2
M+5
NULL
NULL
M+4
obszar
przepełnienia
M+O-2
M+O-1
9
2010-11-29
ODWZOROWANIE NUMERU PAKIETU NA ADRES
HASZOWANIE ZEWNĘTRZNE
BLOKU
Mieszaniem zewnętrznym określamy mieszanie dla
plików na dysku,
 Przestrzeń adresowa dzielona jest na pakiety
zawierające wiele rekordów,
 Liczba pakietów jest stała i równa liczbie szczelin w
tablicy haszowej,
 Pakiet może być pojedynczym blokiem albo ich
klastrem,
 Funkcja haszująca przekształca klucz na względny
numer pakietu,
 Nagłówek pliku dyskowego zawiera tablicę
konwersji numerów pakietów w fizyczne adresy
bloków dyskowych,

tablica konwersji
numer
pakietu
0
1
2
3
4
5

HASZOWANIE ZEWNĘTRZNE - OPERACJE
Mniej istotny,
Jeśli należy rozstrzygać kolizję można skorzystać z
techniki łączenia, gdzie mamy wskaźniki na listę
rekordów przepełnienia danego pakietu,
Pakiet 1
Pakiet 2
pakiet przepełenienia
Rekord 1
Rekord 1
Rekord 2
Rekord m
wskaźnik
Rekord 2
…
…
wskaźnik
…
Rekord
m+1
wskaźnik
Rekord n
Wskaźnik
Rekord n
NULL
…
M-2
M-1
PROBLEM KOLIZJI

adres bloku na
dysku
Wskaźnik
Wyszukiwanie rekordu – jeśli oparte o pole inne
niż mieszające to jest tak samo kosztowne jak w
pliku nieuporządkowanym,
 Usuwanie rekordu – usuwanie ich z pakietu,
 Jeśli pakiet posiada łańcuch przepełnień to
przenosimy jeden z rekordów do pakietu,
 Jeśli usuwamy rekord przepełnienia usuwamy
go z listy, należy jednak zapamiętywać puste
pozycje przepełnienia,
 Można w tym celu wykorzystać listę
nieużywanych pozycji przepełnienia,

NULL
10
2010-11-29
HASZOWANIE ZEWNĘTRZNE - OPERACJE
MIESZANIE STATYCZNE I DYNAMICZNE
Modyfikacja rekordu – zależy od warunku
wyszukiwania oraz rodzaju pola, które ma być
zmodyfikowane,
 Jeśli warunek jest porównaniem równościowym z
polem mieszającym to wyszukiwanie za pomocą
funkcji haszowej, jeśli inny to wyszukiwanie liniowe,
 Gdy modyfikacji ulega pole nie będące polem
mieszającym to zmieniamy rekord i zapisujemy go
w tym samym pakiecie, w przeciwnym przypadku
pakiet może ulec zmianie stąd usuwamy rekord i
wstawiamy zmodyfikowany,

O mieszaniu statycznym mówimy gdyż przydzielana jest
stała liczba pakietów M,

Jest to wadą gdy chcemy dynamicznie rozszerzać lub
skracać pliki,

Można to rozwiązać stosując mieszanie rozszerzalne
lub liniowe,

Schematy te wykorzystują fakt możliwości
przedstawienia wyniku funkcji mieszającej w postaci
liczby binarnej (wartość skrótu), rekordy są rozkładane
do pakietów na bazie wartości bitów wiodących w ich
wartościach skrótów,
MIESZANIE ROZSZERZALNE
MIESZANIE ROZSZERZALNE

pakiety plików danych
Dostępna jest struktura katalogu – tablicy o 2d
adresach pakietów, gdzie d to głębokość globalna
katalogu,
 Wartość całkowita, która odpowiada pierwszym d
bitom jest indeksem tablicy w celu określenia
pozycji katalogu, adres z tej pozycji określa pakiet z
odpowiednimi rekordami,
 Kilka lokalizacji katalogu z tymi samymi pierwszymi
bitami może zawierać ten sam adres pakietu, jeśli
wszystkie rekordy się w nim mieszczą,
 d’ – to głębokość lokalna – trzymana w każdym
pakiecie, która mówi o liczbie bitów na których
oparta jest zawartość pakietu,
d’=3

katalog
d=3
000
d’=3
pakiety dla rekordów
rozpoczynających się od 000
pakiety dla rekordów
rozpoczynających się od 001
001
010
011
d’=2
100
pakiety dla rekordów
rozpoczynających się od 01
101
110
d’=2
pakiety dla rekordów
rozpoczynających się od 10
111
d’=3
pakiety dla rekordów
rozpoczynających się od 110
d’=3
pakiety dla rekordów
rozpoczynających się od 111
11
2010-11-29
MIESZANIE LINIOWE





ideą haszowania liniowego jest umożliwienie zmiany
rozmiaru przestrzeni adresowej funkcji haszowej bez
użycia katalogu,
plik początkowo składa się pakietów 0,1,2,...,M-1 a
wykorzystywana funkcja haszowa to hi(K) = K mod M
przepełnienia wywołane kolizjami są obsługiwane przez
przechowywanie łańcuchów dla poszczególnych
pakietów,
jeśli w dowolnym pakiecie nastąpi przepełnienie,
pierwszy pakiet pliku (0) jest dzielony na dwa pakiety 0 i
M za pomocą nowej funkcji haszowej hi+1(K) = K mod
2M
przy kolejnych kolizjach pakiety są dzielone w porządku
liniowym 1,2,3,… za pomocą hi+1(K), w konsekwencji
mamy 2M pakietów
W YKŁAD PRZYGOTOWANO NA PODSTAWIE
R. Elmasri, S. B. Navathe, Wprowadzenie do
systemów baz danych, Helion, 2005,
 http://wazniak.mimuw.edu.pl/index.php?title=Bazy_
danych.

12

Podobne dokumenty