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