Bazy danych
Transkrypt
Bazy danych
Plan wykładu • Model logiczny i model fizyczny • Mechanizmy składowania plików • Moduł zarządzania miejscem na dysku i moduł zarządzania buforami • Formaty rekordów i sposoby ich zapisu • Rozmieszczenie rekordów w blokach • Metody organizacji pliku rekordów Bazy danych Wykład 10: Fizyczna organizacja danych w bazie danych Małgorzata Krętowska Katedra Oprogramowania e-mail: [email protected] 2 Model logiczny i fizyczny Operacje na pliku • Model logiczny bazy danych • Podstawowe operacje na pliku – – – – • Model fizyczny bazy danych - oparty jest na pojęciu pliku i rekordu. – Plik obiektu bazy danych składa się z rekordów posiadających ten sam format – Format rekordu jest listą nazw pól z określeniem ich typów danych. – Rekord składa się z wartości poszczególnych pól. Niektóre pola są wyróżnione jako klucz rekordu - ich wartości jednoznacznie identyfikują cały rekord. wstawianie usuwanie modyfikacja wyszukiwanie • Plik służy zwykle jako reprezentacja fizyczna jednej tabeli. Ale również istnieje możliwość pliku jako klastra kilku tabel i wtedy rekordy trzymane w pliku mogą mieć różny format 3 Mechanizmy składowania 4 Dyski • Podstawowy mechanizm składowania - nośniki danych, na których może bezpośrednio operować procesor np. pamięć RAM. Mechanizm podstawowy zapewnia zwykle szybki dostęp do danych, ale wiąże się z ograniczoną pojemnością • Charakterystyka wykorzystania danych przechowywanych na dysku: – dostęp swobodny: w oparciu o adres rekordu na dysku można go przesłać do pamięci RAM w jednej operacji We-Wy – dane są przechowywane i przesyłane w jednostkach nazywanych blokami dyskowymi lub stronami – czas dostępu do danych na dysku zależy od ich położenia na dysku (ciągi sąsiadujących ze sobą stron) – dąży się do tego, aby dane, które są często wykorzystywane przez programy, na stałe przebywały w buforach pamięci RAM. – 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. • Drugorzędny mechanizm składowania - dyski magnetyczne, dyski optyczne oraz taśmy – urządzenia te charakteryzują się większą pojemnością, mniejszymi kosztami i oferują wolniejszy dostęp do danych niż mechanizm podstawowy. – Dane nie mogą być przetwarzane bezpośrednio przez procesor główny 5 6 Taśmowe urządzenia pamięciowe Dyskowy model fizyczny • Dostęp sekwencyjny - aby uzyskać dostęp do n-tego bloku na taśmie najpierw musimy przejrzeć wcześniejsze n-1 bloków. • Nie są przeważnie wykorzystywane do przechowywania danych bieżących ale do archiwizacji baz danych Atrybut Pole Wiersz (obiekt) Rekord Strona (blok) Relacja Plik Porównanie pojęć poziomu logicznego i fizycznego 7 Dyskowy model fizyczny 8 Moduł zarządzania miejscem na dysku • W pliku mamy dwa rodzaje stron: • gdy rozmiar rekordu jest większy niż rozmiar strony, rekord jest dzielony na części przechowywane na osobnych stronach (najlepiej sąsiadujących na dysku) – strony z wolnym miejscem do zapisu nowych rekordów – strony całkiem lub prawie całkiem zapełnione • Zakładamy także, że system ma możliwość rozszerzenia pliku rekordów i alokacji nowych pustych stron. • Moduł zarządzania miejscem na dysku realizuje następujące funkcje: • duże obiekty LOB są trzymane w osobnym obszarze przeznaczonym do ich przechowywania w bazie danych, zwykle jako ciąg sąsiednich stron. W rekordach danych znajdują się tylko ich wskaźniki – – – – • jeden plik może reprezentować też klaster tabel tzn. powiązanie danych z dwóch lub większej liczby tabel. Dane w pliku są wówczas umieszczane w oparciu o wspólny klucz. odczyt strony zapis strony pobranie strony do zapisu nowego rekordu alokacja ciągu stron (położonych spójnie na dysku) • Moduł zarządzania miejscem na dysku ukrywa szczegóły sprzętu i systemu operacyjnego i umożliwia pozostałym modułom traktowanie danych na dysku jako zbioru stron. 9 Zarządzanie buforami danych (w RAM) 10 Działania modułu zarządzania buforami • Moduł zarządzania buforami danych jest odpowiedzialny za sprowadzanie stron z dysku do puli buforów w pamięci RAM. Zapis strony odbywa się w ramce • Gdy procesowi potrzebna jest strona: – Gdy potrzebnej strony nie ma w puli ramek • wybierz ramkę z listy wolnych ramek (licznik odwołań=0) • jeśli strona w wybranej ramce została zmieniona, ale nie zaktualizowana na dysku (bit modyfikacji=true) zapisz ją na dysk • wczytaj potrzebną stronę w wybraną ramkę • ustaw jej licznik odwołań=1 – Gdy potrzebna strona jest w puli ramek, zwiększ jej licznik odwołań o 1. – Przekaż procesowi wskaźnik do ramki ze stroną – jeśli można przewidzieć , że mają być sprowadzone sąsiadujące na dysku strony , sprowadź od razu kilka stron • Oprócz puli ramek w pamięci RAM są przechowywane: – tablica par: <nr_ramki, id_strony> – dla każdej ramki: licznik odwołań - ile różnych procesów używa ramki w danej chwili – dla każdej ramki bit modyfikacji - czy po sprowadzeniu do pamięci RAM zawartość ramki została zmodyfikowana – wszystkie ramki, których licznik odwołań=0 tworzą listę wolnych ramek 11 12 Działania modułu zarządzania buforami Formaty rekordów • Gdy zmienia się zawartość ramki: • Plik jest ciągiem rekordów. Jeżeli każdy rekord w pliku ma dokładnie ten sam rozmiar o takim pliku mówi się , że składa się z rekordów o stałej długości. Jeżeli różne rekordy w pliku mają różny rozmiar o pliku mówi się, że składa się z rekordów o zmiennej długości. Taka sytuacja ma miejsce wówczas, gdy – ustawiamy dla ramki bit modyfikacji = true • Strona w buforze danych może być potrzebna wielu procesom: – nowe zapotrzebowanie na stronę zwiększa jej licznik odwołań o jeden – gdy proces zwalnia stronę w ramce, jej licznik odwołań zmniejsza się o jeden – ramka staje się kandydatem do zastąpienia, gdy jej licznik odwołań =0. Zostaje wtedy wstawiona na listę wolnych ramek – rekordy mają ten sam typ rekordu, ale jedno lub więcej pól ma zmienną długość – rekordy mają ten sam typ rekordu, ale jedno lub więcej pól jest opcjonalne – plik zawiera rekordy o różnych typach rekordów, a przez to różnych rozmiarach (klastry) • Strategie zastępowania stron w ramkach z listy wolnych ramek – LRU - zastępuje się stronę, która najdłużej była nieużywana – MRU - zastępuje się stronę, która ostatnio była używana – Clock - ustala się stałą cykliczną kolejność pobierania wolnych ramek 13 Zapis rekordu o stałej długości Zapis rekordu o zmiennej długości • Zapis rekordu składa się ze spójnego obszaru zawierającego ciągi pól P1,.., Pn o stałych rozmiarach D1,.., Dn • Zapis rekordu o zmiennej długości można reprezentować przez zapis o stałej długości (każde pole będzie reprezentowane w rekordzie) • dla pól o zmiennej długości (stałą liczba pól w rekordzie) można wykorzystywać separatory (?, %, $), które nie występują w wartości żadnego pola, w celu określenia końca pól o zmiennej długości • Mając adres bazowy (początek rekordu) B łatwo można obliczyć początek i-tego pola jako B+D1+...+Di-1. P1 P2 P3 P4 D1 D2 D3 D4 Adres bazowy (B) 14 P1 P2 D1 Adres=B+D1+D2 P3 $ D3 P4 $ 15 Zapis rekordu o zmiennej długości Zapis rekordu z polami opcjonalnymi • Jeżeli liczba pól w rekordzie jest duża, ale liczba pól faktycznie występujących w rekordzie jest mała, można w każdym rekordzie uwzględnić sekwencję par <nazwa_pola, wartość pola> zamiast samych wartości pól. • Występuje kilka rodzajów znaków rozdzielających • Na początku rekordu umieszczamy tablicę wskaźników do początków kolejnych pól, wówczas uzyskujemy – bezpośredni dostęp do wartości i-tego pola – efektywne przechowywanie wartości Null P1 P2 16 P3 Nazwisko=Kowalski oddziela nazwę pola $ Wiek=25 oddziela pola $ Zarobki=1500 % kończy rekord od jego wartości 17 18 Zapis rekordów różnych typów Rozmieszczenie rekordów w blokach • Każdy rekord zostaje poprzedzony wskaźnikiem typu rekordu • Rekordy pliku muszą być rozmieszczane w blokach dyskowych (stronach), ponieważ blok jest jednostką przesyłania danych między dyskiem a pamięcią • Gdy rozmiar bloku jest większy od rozmiaru rekordu, wówczas każdy blok będzie zawierał wiele rekordów Zapis rekordu w jednej z omawianych postaci • Zakładając, że rozmiar bloku wynosi B bajtów, a rekordu R, gdzie R<=B, wówczas można określić współczynnik bloku dla pliku: bfr = floor(B/R) Wskaźnik typu rekordu • Rozmiar nieużywanej przestrzeni wynosi wówczas B-(bfr R) bajtów 19 Rozmieszczenie rekordów w blokach Rozmieszczenie rekordów w blokach • Organizacja segmentowa bloku • Organizacja niesegmentowa bloku – wykorzystuje nieużywaną przestrzeń bloku w ten sposób, że część rekordu jest przechowywana w jednym bloku, a reszta w drugim – wskaźnik znajdujący się na końcu pierwszego bliku wskazuje na blok zawierający resztę rekordu w przypadku, gdy nie będzie to następny w kolejności blok na dysku. Blok i Blok i+1 20 Rekord 1 Rekord 2 Rekord 3 Rekord 4 P R 4 (reszta) Rekord 5 Rekord 6 Rekord 7 P – rekordy nie mogą przekraczać granic bloków – wykorzystuje się ją w przypadku rekordów o stałej długości , gdy B>R, ponieważ powoduje to, że każdy rekord zaczyna się od znanej lokalizacji w bloku, co upraszcza ich przetwarzanie – w przypadku rekordów o zmiennej długości możliwa jest zarówno organizacja segmentowa jak też niesegmentowa (zależy od przeciętej długości rekordu) Blok i Rekord 1 Rekord 2 Rekord 3 Blok i+1 Rekord 4 Rekord 5 Rekord 6 21 Format strony dla rekordów stałej długości 22 Format strony dla rekordów stałej długości • Dwa alternatywne formaty: Wolne miejsce 1 2 – najpierw są zgrupowane wszystkie miejsca zajęte a potem wolne – miejsca zajęte i wolne są ze sobą przemieszane - to czy miejsce jest wolne czy zajęte wskazuje bit w dodatkowej tablicy Occupied • Occupied (i) =1 wtedy i tylko wtedy, gdy i-te miejsce na stronie jest zajęte N • Przy operowaniu na danych pojawia się potrzeba sięgania do konkretnych rekordów, a nie do wszystkich za każdym razem np. sięgamy do rekordu w oparciu o jego wcześniej wyliczony adres bądź poprzez adres znaleziony w indeksie. • Adres rekordu (identyfikator rekordu rid) identyfikujący jego położenie na dysku jest określany następująco: rid=<id_strony, numer pozycji na stronie> 1 2 N M N 1 0 1 ... 0 1 1 1 M M ....... Liczba rekordów 3 21 Liczba pozycji W przypadku pierwszej struktury przesuwanie rekordów na stronie powoduje zmianę identyfikatora rekordu, co komplikuje odwołania do rekordu przez jego identyfikator rid. 23 24 Metody organizacji pliku rekordów Format strony dla rekordów zmiennej długości • • • • Podstawowa różnica pomiędzy różnymi organizacjami plików rekordów polega na tym, czy porządkują one rekordy według wartości pewnego klucza czy nie. Adres zapisu rekordu na stronie jest określony przez wartość w tablicy Poz. Wartość Poz(i) wskazuje na początek obszaru i-tego rekordu. Dodatkowo wartość Poz(0) wskazuje na początek obszaru wolnych miejsc. Rid=<id_strony, numer pozycji w tablicy Poz> Przy zmianie pozycji na stronie aktualizowany jest też adres w Poz(i). Nie zmienia to indeksu i ,czyli nie zmienia również identyfikatora rekordu rid. • Wyróżniamy: – Plik nieuporządkowany – Plik posortowany – Plik haszowany Strona i Rid=(i,N) Rid=(i,1) 20 ... 13 24 Tablica pozycji N Wskaźnik do puli wolnych miejsc Liczba pozycji 25 Plik nieuporządkowany 26 Pliki posortowane • Rekordy są przechowywane na stronach pliku w dowolnym porządku • nowy rekord jest wstawiany do pierwszej strony, na której jest wolne miejsce • Przy wyszukiwaniu przechodzimy po wszystkich stronach do chwili napotkania szukanego rekordu albo końca pliku, gdy rekordu nie ma w pliku • Rekordy są zapisywane na kolejnych stronach względem klucza rekordu • Reprezentacja wygodna gdy rekordy przetwarza się zawsze w pewnym ustalonym porządku lub tylko ich pewien zakres względem tego porządku np. Select * from pracownik order by pensja select * from pracownik where pensja>2000 – wówczas do wyszukania odpowiednich rekordów można użyć wyszukiwania binarnego na blokach a nie na rekordach (uzyskanie dostępu do log2(b) bloków, gdzie b - liczba bloków w pliku. • Organizacja nieuporządkowana jest wygodna przy wykonywaniu zapytań dotyczących wszystkich rekordów lub większości rekordów: select * from emp; • Brak korzyści, gdy chcemy odwołać się do rekordów w oparciu o wartości innych pól, które nie są polami uporządkowania -dostęp wymaga wyszukiwania liniowego (średnio b/2 bloków) 27 Pliki posortowane 28 Pliki haszowane • Problem - wstawianie i usuwanie rekordów • Plik jest kolekcją segmentów • Segment to strona główna plus zero lub więcej stron nadmiarowych alokowanych do segmentu w razie potrzeby. • Przydział rekordu do segmentu odbywa się w oparciu o wartość funkcji haszującej, zastosowanej do klucza wyszukiwania rekordu, którym jest jedno lub więcej pól rekordu: – wstawianie - należy znaleźć odpowiednią pozycję w pliku względem pola uporządkowania, a następnie zapewnić wolne miejsce w pliku. W tym celu należy przesunąć średnio połowę rekordów w pliku. • Poprawa wydajności przez wykorzystanie tymczasowego pliku nieuporządkowanego tzn pliku przepełnienia. Nowe rekordy są wstawiane do pliku przepełnienia - na jego koniec. Okresowo plik jest sortowany i kolejne rekordy są wstawiane do pliku głównego =>zwiększona złożoność operacji wyszukiwania – usuwanie rekordów - problem mniej istotny , gdy wykorzystuje się znaczniki usunięcia • Funkcja haszująca: h(klucz wyszukiwania rekordu r)= adres segmentu, do którego wpada rekord r 29 30 Plik haszowany Plik haszowany • Organizacja pliku haszowanego jest użyteczna przy wyborze rekordu z pliku w oparciu o wartość lub wartości pewnych pól rekordu np.: select * from pracownik where nazwisko=&nazwisko 0 1 klucz 2 h • Organizacja rekordów w pliku haszowanym nie zachowuje kolejności wartości klucza wyszukiwania M-1 Strony główne • Zastosowanie jednej organizacji rekordów w pliku zazwyczaj nie wystarcza w aplikacji baz danych, w których wyszukiwanie odbywa się względem wartości różnych kluczy wyszukiwania. Rozwiązanie tego problemu polega na skorzystaniu z osobnych struktur indeksowych. Strony nadmiarowe 31 32