Fizyczna organizacja danych w bazie danych

Transkrypt

Fizyczna organizacja danych w bazie danych
Fizyczna organizacja
danych w bazie danych
PJWSTK, SZB, Lech Banachowski
Spis treści
1.
2.
3.
4.
Model fizyczny bazy danych
Zarządzanie miejscem na dysku
Zarządzanie buforami (w RAM)
Organizacja zapisu na dysku rekordów, stron i
plików
Lech Banachowski, szb, 2/34
2
1. Struktura fizyczna bazy danych
Jest oparta na pojęciach pliku i rekordu
v
Plik składa się z rekordów w tym samym formacie.
v
Format rekordu jest listą nazw pól.
v
Rekord składa się z wartości poszczególnych pól.
v
Klucz rekordu – wyróżnione pola rekordu, których wartości
jednoznacznie identyfikują cały rekord.
v
Klucz wyszukiwania rekordu - wyróżnione pola rekordu
względem których wyszukuje się rekordy.
Podstawowymi operacjami na pliku są:
v
Wstawianie - wstaw rekord do pliku.
v
Usuwanie - usuń rekord z pliku.
v
Modyfikacja - zmodyfikuj zawartość pól w rekordzie w pliku.
v
Wyszukiwanie - znajdź w pliku rekord(y) z podaną wartością
w danym polu lub spełniające podane warunki na pola.
Dyski i pliki
v
SZBD przechowuje dane na twardych dyskach.
v
Stąd konieczność stosowania operacji We/Wy:
–
Odczyt (READ): przesłanie porcji danych z dysku do
pamięci RAM.
–
Zapis (WRITE): przesłanie porcji danych z pamięci RAM
na dysk.
–
Obie operacje są o rząd wielkości wolniejsze niż operacje
w pamięci RAM – powinny być stosowane umiejętnie!
Koszt operacji na bazie danych jest przedstawiany jako
liczba operacji We/Wy.
Dlaczego nie można przechowywać danych w
pamięci RAM?
– Pamięć RAM jest chwilowa.
– Nie wystarczający rozmiar.
– Za duży koszt.
v
Typowa hierarchia pamięci w bazie danych:
–
Pamięć RAM dla danych używanych w bieżącej chwili.
u
–
–
v
Jej znaczenie w bazach danych wzrasta w miarę jak jest coraz większa i
tańsza.
Dysk.
Zewnętrzny nośnik danych – np. taśma dla kopii zabezpieczającej i
dziennika transakcji.
Redundancja – ten sam rekord danych jest zapisywany w
kilku miejscach (dysk, RAM, kopia backup, aplikacja).
Dyski
v
Dostęp swobodny (random access) – w przypadku
dysków; dostęp sekwencyjny – w przypadku taśm.
v
Dane są przechowywane i przekazywane w
jednostkach nazywanych blokami dyskowymi lub
stronami.
Dostrajanie operacji dyskowych
v
Inaczej niż w przypadku RAM, czas dostępu do danych na
dysku zależy od ich położenia na dysku. Dlatego wzajemne
rozmieszczenie stron na dysku może mieć zasadniczy wpływ na
szybkość działania SZBD! Najlepiej operować ciągami
sąsiadujących ze sobą stron.
v
Dąży się do tego, aby dane, które są często wykorzystywane
przez programy aplikacyjne, na stałe przebywały w buforach
pamięci RAM (tzw. cachowanie). Dostęp do nich jest wtedy szybki.
Operacje odczytu i zapisu bloków na dysku mogą być
realizowane współbieżnie. Stąd opłaca się aby transakcje
użytkowników były realizowane przez system współbieżnie a nie
sekwencyjnie.
v
Lech Banachowski, szb, 7/34
7
Dyskowy model fizyczny
Atrybut
Pole
Wiersz
Rekord
jednostka wymiany
Strona (blok)
Bufor
pamięci
RAM
Ekstent jednostka alokacji miejsca na
dysku
Tabela
Lech Banachowski, szb, 8/34
Plik (segment)
8
Dyskowy model fizyczny - uzupełnienie
1. Gdy rozmiar rekordu większy niż rozmiar strony, rekord jest
dzielony na części przechowywane na osobnych stronach
(najlepiej sąsiadujących na dysku).
2. Gdy schemat dostępu do danych polega na użyciu
powiązanych danych z dwóch lub więcej tabel (np.
departamenty i ich pracownicy; klienci, zamówienia i pozycje
zamówień), w jednym pliku są zbierane dane z kilku tabel w
oparciu o wspólny klucz (np. numer departamentu czy
identyfikator klienta).
Lech Banachowski, szb, 9/34
9
Dyskowy model fizyczny - uzupełnienie
3. Duże obiekty LOB są zwykle trzymane w osobnych
obszarach przeznaczonych do ich przechowywania w
bazie danych, zwykle jako ciąg sąsiednich stron. W
rekordach z danymi znajdują się wskaźniki do nich (ich
lokalizatory).
– Opcja IN-LINE dla obiektów LOB, które mają mały rozmiar.
– Dotyczy to także „dużych” dokumentów XML.
Lech Banachowski, szb, 10/34
10
Hierarchia nośników przechowywania danych
taśma
dyski magnetyczna
optyczne
Pojemność (bajty)
1015
1013
1011
109
107
105
pamięć
elektroniczna
pamięć pomocnicza
elektroniczna
główna
dyski
magnetyczne
cache
103
10-9
Lech Banachowski, szb, 11/34
10-6
10-3
103
10-0
Czas dostępu (sec)
11
2. Zarządzanie miejscem na dysku
v
Obszar na dysku ze stronami z danymi i pusty obszar z
którego można pobierać i alokować nowe ekstenty.
v
Realizowane funkcje:
–
Alokacja/dealokacja ekstentu.
Odczyt/zapis strony o podanym adresie.
– Wyznaczenie strony do zapisu nowego rekordu.
– Aktualizacja struktur danych na dysku związanych z
przechowywanymi stronami.
–
v
Implementacje używają głównie bitmapów (zamiast
relacyjnego katalogu systemowego)
– alokowanych i wolnych ekstentów;
– stron zajętych przez dany obiekt bazodanowy.
3. Zarządzanie buforami (w RAM)
Proces zgłasza zapotrzebowanie na stronę
PULA BUFORƠW
Strona dyskowa
Wolny bufor
RAM
DYSK
BD
v
v
Wybór bufora dyktowany
strategią zastępowania
Dane muszą być w RAM aby SZBD mógł na nich operować!
Pomocnicza struktura danych: tablica par <nr_bufora, id_strony>.
Dodatkowe struktury danych
v
v
v
Dla każdego bufora: licznik odwołań - ile różnych
procesów używa go w danej chwili. Na początku po
umieszczeniu strony w buforze: licznik odwołań = 1.
Dla każdego bufora: bit modyfikacji – czy po
sprowadzeniu do pamięci RAM zawartość bufora została
zmodyfikowana (stan "dirty"), co oznacza, że strona na
dysku będąca źródłem zawartości bufora może już być
inna niż zawartość bufora w pamięci RAM. Na początku
po umieszczeniu strony w buforze: bit modyfikacji = false.
Ponadto wszystkie bufory, których licznik odwołań = 0,
tworzą listę wolnych buforów.
Lech Banachowski, szb, 14/34
14
Gdy procesowi jest potrzebna strona...
Gdy nie ma jej w puli buforów:
v
–
Wybierz bufor o liczniku odwołań = 0
–
Jeśli strona w buforze została zmieniona (bit modyfikacji = true), zapisz
ją na dysk
–
Wczytaj potrzebną stronę w wybrany bufor
–
Ustaw licznik odwołań do tej strony na 1, a bit modyfikacji na false
v
Gdy strona jest w puli buforów, zwiększ jej licznik odwołań o
jeden.
v
Przekaż procesowi wskaźnik do bufora ze stroną.
Jeśli można z góry przewidzieć (np. przeglądanie
sekwencyjne) sprowadza się od razu kilka stron!
*
Zarządzanie buforami – c.d.
v
Gdy zmienia się zawartość strony:
–
v
Zostaje ustawiony bit modyfikacji = true
Strona w buforze może być potrzebna wielu procesom:
–
Nowe zapotrzebowanie na stronę zwiększa jej licznik odwołań o jeden.
Gdy proces zwalnia stronę, jej licznik odwołań zmniejsza się o jeden.
Strona staje się kandydatem do zastąpienia gdy jej licznik odwołań = 0
–
Zapisuje się też informację, o rodzaju blokady: do zapisu – może tylko jeden
proces; do odczytu – może wiele procesów.
Punkt kontrolny (checkpoint)
v
Proces, który co ustalony okres czasu,
przepisuje zawartość listy zmodyfikowanych
stron z puli buforów na dysk zmieniając ich
bit modyfikacji na false
Lech Banachowski, szb, 17/34
17
Strategie zastępowania stron z listy
wolnych buforów
•
•
v
LRU – najdłużej nie używana -- „samo-organizująca się” lista
stron
MRU – ostatnio używana.
Sekwencyjne zalewanie puli buforów: LRU +
powtarzane sekwencyjne przeglądanie pliku.
# buforów < # stron oznacza, że każde żądanie strony
powoduje operację We/Wy. MRU lepsze w tym
przypadku.
– Wiersze sprowadzane przy przejściu dużej tabeli
najczęściej nie będą używane przez inne procesy – lepiej
stosować MRU.
–
Proces obsługujący zlecenie użytkownika
v
v
Najpierw oblicza adres strony, na której znajduje
się dany rekord,
Następnie, sprawdza czy strona jest w puli
buforów,
– jeśli jej nie ma, sprowadza stronę z dysku i umieszcza ją
w buforze pamięci RAM (przy tych operacjach są
wywoływane moduły zarządzania miejscem na dysku i
zarządzania buforami w pamięci RAM),
– wydobywa z niej szukany rekord i przekazuje go
użytkownikowi.
Lech Banachowski, szb, 19/34
19
Zarządzanie buforami (w RAM)
v
v
v
O szybkości działania aplikacji decyduje liczba operacji
odczytu i zapisu stron na dysku.
Wzrastają rozmiary pamięci RAM i w związku z tym wzrasta
liczba buforów danych.
Wielokrotnie używane strony są przechowywane w buforach.
– Gdy baza danych jest używana przez aplikację biznesową, przyjmuje
się, że średnio ponad 90% potrzebnych do wykonania zapytania
danych powinno znajdować się w buforach.
v
Zarówno skompilowane instrukcje SQL jak i wyniki zapytań
są zapisywane w buforach i używane wielokrotnie.
– Wyniki zapytań mogą też być zapisywane w buforach serwera
aplikacyjnego pośredniczącego między klientem a serwerem bazy
danych w architekturze trójwarstwowej.
Lech Banachowski, szb, 20/34
20
Formaty rekordów: stała długość
F1
F2
F3
F4
L1
L2
L3
L4
Adres bazowy (B)
v
Adres = B+L1+L2
Typy pól takie same dla wszystkich rekordów
w pliku; zapisane w katalogu systemowym.
Formaty rekordów: zmienna długość
v
Dwa alternatywne formaty (#pól jest stała):
F1
4
Licznik pól
F2
$
F3
$
F4
$
$
Pola rozdzielone specjalnym symbolem
F1
F2
F3
F4
Tablica offsetów pól
W drugim przypadku:
* bezpośredni dostęp do wartości i-tego pola;
* efektywne przechowywanie pseudo-wartości null
Format mieszany
Każdy rekord składa się z dwóch części: stałego i zmiennego
rozmiaru zarządzanych odpowiednio przy użyciu
przedstawionych poprzednio metod (np. w SQL Server).
Lech Banachowski, szb, 23/34
23
Formaty stron: rekordy stałej długości
1
2
1
2
Wolne
miejsca
...
...
N
Nagłówek
strony
M
N
1 . . . 0 1 1M
liczba
rekordów
*
M ... 3 2 1
Nagłówek
strony
Liczba pozycji
0 – wolne miejsce
rid (id rekordu) = <id_strony, nr_pozycji>
W pierwszym przypadku, przesuwanie rekordów
powoduje zmianę miejsca rekordu, co komplikuje
odwołania do rekordu.
Formaty stron: rekordy zmiennej długości
rid = (i,N)
Strona i
rid = (i,2)
rid = (i,1)
Nagłówek
strony
20
N
...
Tablica pozycji
*
16
2
Wskaźnik
24
N
1 # pozycji do puli
wolnych
miejsc
Można przesuwać rekordy po stronie bez zmiany identyfikatora
rekordu w postaci:
rid = (nr strony, nr w tablicy pozycji)
4. Plik rekordów
v
PLIK: kolekcja stron, każda zawierająca zbiór
rekordów:
–
wstawianie/usuwanie/modyfikowanie rekordu,
–
odczytywanie konkretnego rekordu (o podanym rid),
–
wyszukiwanie wszystkich rekordów spełniających
podane warunki.
4.1 Plik nieuporządkowany (sterta, heap)
v
Rekordy są przechowywane na stronach w dowolnym
porządku.
v
Nowy rekord jest wstawiany do pierwszej strony, na
której jest wolne miejsce.
v
Przy wyszukiwaniu trzeba przejść po wszystkich
stronach do chwili napotkania szukanego rekordu
(ewentualnie skorzystać z indeksu).
Plik nieuporządkowany (listy)
implementacja – dwie listy
Strona
danych
Strona
danych
Strona
danych
Strony pełne
Strona
pocz.
Strona
danych
Strona
danych
Strona
danych
Strony z
wolnymi
miejscami
Plik nieuporządkowany
implementacja – katalog stron
Strona
danych
Strona
danych
Katalog
(bitmapa)
Strona
danych
4.2 Plik uporządkowany (posortowany)
Rekordy są zapisywane na kolejnych stronach zgodnie z porządkiem
względem pewnego klucza wyszukiwania rekordu. Taka
reprezentacja jest wygodna gdy rekordy przetwarza się zawsze w
pewnym, ustalonym porządku lub tylko pewien ich zakres
względem tego porządku np.
SELECT * FROM Emp e ORDER BY e.Sal
lub
SELECT * FROM Emp e WHERE e.Sal BETWEEN 1000 and 2000
Wyszukanie rekordu mając daną wartość jego klucza wyszukiwania
zależy od dodatkowych szczegółów implementacji.
Bardziej skomplikowane stają się operacje wstawienia nowego
rekordu do pliku jak i usunięcia rekordu z pliku.
Lech Banachowski, szb, 30/34
30
Implementacje pliku uporządkowanego
1. Spójny obszar stron – sąsiadujących ze sobą na dysku –
rekordy uporządkowane według wartości klucza wyszukiwania.
Jest problem ze wstawieniem nowego rekordu i usunięciem
rekordu z pliku. Jest możliwość zastosowania wyszukiwania
binarnego.
1 3
5 8
12 19
34
2. Lista stron (lub ekstentów) – rekordy uporządkowane według
wartości klucza wyszukiwania. Łatwe wstawienie nowego rekordu
jak i usunięcie rekordu z pliku. Nie ma bezpośrednio możliwości
zastosowania wyszukiwania binarnego.
1 3
Lech Banachowski, szb, 31/34
5 8
12 19
34
31
Implementacja pliku uporządkowanego
3. Lista stron (lub ekstentów) z indeksem – rekordy uporządkowane
według wartości klucza. W indeksie dla każdej strony zapisany
najmniejszy klucz i jej adres – ułatwione wyszukiwanie. Łatwe
wstawienie nowego rekordu i usunięcie rekordu z pliku.
Indeks
pogrupowany
(clustered)
1
5
12
34
Poziom
wyszukiwania
Poziom:
1 3 4
5 8 9
12 19
34 45 INSERT,
DELETE,
UPDATE
Uwaga: Tutaj – zastosowanie indeksu do implementacji posortowanego pliku
rekordów; dalej – do wyszukiwania rekordów, do sprawdzania jednoznaczności,
do ograniczania liczby blokad zapewniających izolację użytkowników.
Lech Banachowski, szb, 32/34
32
4.3 Plik haszowany (np. w Oracle)
Plik jest kolekcją “segmentów” (ang. bucket). Segment =
strona główna plus zero lub więcej stron nadmiarowych.
Funkcja haszująca h: h(r) =
“segment” do którego wpada
rekord r. Funkcja h bierze pod
uwagę tylko klucz wyszukiwania
rekordu r.
Organizacja pliku haszowanego jest użyteczna przy wyborze rekordu
z pliku w oparciu o wartość lub wartości pewnych pól rekordu np.
przy wykonywaniu zapytania:
SELECT * FROM Emp e WHERE e.Ename=:Nazwisko
Lech Banachowski, szb, 33/34
33
4.4 Wielowymiarowa tablica (np. w DB2)
Komórka – zbiór
rekordów z tym samym
układem wartości
wymiarów. Realizowana
jako lista ekstentów.
Zastosowania:
1. hurtownia danych np. tabela sprzedaży – alternatywa dla indeksów
bitmapowych i haszowania.
2. dane przestrzenne np. zbiór punktów w przestrzeni kartezjańskiej
wielowymiarowej.
Lech Banachowski, szb, 34/34
34

Podobne dokumenty