670 likes | 810 Views
Systemy zarządzania bazami danych 2. Układ danych na dysku. Zagadnienia. Jak ułożyć dane na dysku? Jak odwzorować je w pamięci RAM?. Co mamy do dyspozycji? : Bajty. 8 bit ów. Jakie dane się składuje ?. Wynagrodzenie (netto, brutto) Nazwisko (aktualne, rodowe)
E N D
Systemy zarządzania bazami danych2. Układ danych na dysku 2. Układ danych na dysku
Zagadnienia • Jak ułożyć dane na dysku? • Jak odwzorować je w pamięci RAM? 2. Układ danych na dysku
Co mamy do dyspozycji?: Bajty 8 bitów Jakie dane się składuje? • Wynagrodzenie (netto, brutto) • Nazwisko (aktualne, rodowe) • Data (urodzenia, zatrudnienia) • Zdjęcie (z ostatniej wycieczki na grzyby) 2. Układ danych na dysku
Reprezentacja: • Integer (short): 2 bajty np., 35 to 00000000 00100011 • Real (zmiennopozycyjnie) • n bitów na mantysę, mna cechę • Real (stałopozycyjnie) księgowi lubią • Często dziesiętnie jako ciągi cyfr 2. Układ danych na dysku
Reprezentacja: • Znaki rozmaite kodowanie, kiedyś: ASCII, teraz coraz częściej Unicode (UTF-8) Przykłady (ASCII): A: 1000001 a: 1100001 5: 0110101 LF: 0001010 2. Układ danych na dysku
Czy można użyć mniej niż 1 bajt? Owszem, ale dyski są takie tanie... Reprezentacja: 1111 1111 • Boolean np., TRUE FALSE 00000000 • Typy wyliczeniowe • np., RED 1GREEN 3 • BLUE 2 YELLOW 4 … 2. Układ danych na dysku
Reprezentacja: • Daty np.: - Integer, liczba dni od 01-01-1900 - 8 znaków, YYYYMMDD - 7 znaków, YYYYDDD (Teraz już raczej nie YYMMDD. A może właśnie tak!) • Czas np. - Integer, liczba sekund od północy - 8 znaków, HHMMSSFF 2. Układ danych na dysku
c c a a t t c a t Reprezentacja: • Napisy • Zakończone zerem, np. • Z podaną długością, np. • O ustalonej długości (w słowniku danych) 3 2. Układ danych na dysku
Zasadnicze rozróżnienie • Elementy stałego rozmiaru • Elementy zmiennego rozmiaru • - rozmiar zwykle jest podawany na początku elementu 2. Układ danych na dysku
Na początku elementu także: • Typ elementu: Sposób jego interpretacji (określa także rozmiar, gdy jest on stały) • Uwzględnienie w reprezentacji danych typu elementu to krok w kierunku danych samoopisowych 2. Układ danych na dysku
Składanie Elementy danych Rekordy Bloki Pliki Pamięć RAM 2. Układ danych na dysku
Rekord • Kolekcja powiązanych elementów danych (zwanych polami) • Np.Rekord Employee: pole name, pole salary, pole hire date, pole previous jobs (wielokrotne) ... 2. Układ danych na dysku
Rodzaje rekordów • Główny podział : • Rozmiar: stały vs. zmienny • Format: stały vs. zmienny 2. Układ danych na dysku
Format stały • Schemat (nie rekord) zawiera następujące informacje • liczba pól • typy poszczególnych pól • porządek pól w rekordzie • nazwa każdego pola • Z zupełnie innej beczki. Także: • informacje statystyczne: liczba wystąpień, histogram wartości 2. Układ danych na dysku
Przykład:stały format i rozmiar Employee (1) E#,dwubajtowy integer (2) Ename, napis 10-znakowy Schemat (3) Dept, dwubajtowy kod 55 s m i t h 02 Rekordy 83 j o n e s 01 2. Układ danych na dysku
Format zmienny • Rekord musi zawierać opis formatu • Jest więc mniej lub bardziej samoopisowy • Różne warianty informacji schematowych w takim wypadku 2. Układ danych na dysku
2 5 I 46 4 S 4 F O R D Przykład:zmienny format i rozmiar Liczba pól Kod pola E# Kod typu Integer Kod pola Ename Kod typu String Rozmiar pola String Nazwy pól mogą być niekodowane, np. znaczniki XML 2. Układ danych na dysku
Przydatność zmiennego formatu • Rekordy „rzadkie” (pola opcjonalne) • Pola wielokrotnych • Ewolucja schematu • Możemy modyfikować tylko schemat i nie musimy ruszać danych Oznacza jednak marnowanie (?) przestrzeni... 2. Układ danych na dysku
Format zmienny z polem wielokrotnym • Pracownik może mieć dowolnie wiele dzieci • Employee 1:NChild 3 E_name: Fred Child: Sally Child: Tom 2. Układ danych na dysku
Pola wielokrotne wcale nie muszą oznaczać ani - ani formatu zmiennego - ani rozmiaru zmiennego John Sailing Chess -- • Trzeba tylko określić maksymalną liczebność • i w razie czego wypełnić NULLowym gruzem 2. Układ danych na dysku
Wiele pośrednich opcjimiędzy formatem stałym i zmiennym Przykład 1:Typ rekordu w rekordzie typ rekordurozmiar rekordu (wyjaśniony w schemacie) • Niezbędne w gronach tabel (cluster) 5 27 . . . . 2. Układ danych na dysku
Nagłówek rekordu • Dane opisowe na początku rekordu • Może zawierać • typ rekordu • rozmiar rekordu • stempel czasowy • nagłówki pól • zamki transakcyjne • itd. 2. Układ danych na dysku
Wszyscy pracownicy mają E#, name, dept Inne pola są zmienne. 25 Smith Toy 2 Hobby:chess retired # liczba pól w części zmiennej Przykład 2:Format pośredni stało-zmienny • Format mieszany • Jedna część jest stała, a druga zmienna 2. Układ danych na dysku
Wiele możliwości wewnętrznej organizacji rekordu długość pola * * * 3 10 F1 5 F2 12 F3 rozmiar całości 3 32 5 15 20 F1 F2 F3 0 1 2 3 4 5 15 20 offsety 2. Układ danych na dysku
Pytanka • Widzieliśmy przykłady • Rekordów stałego formatu i rozmiaru • Rekordów zmiennego formatu i rozmiaru • Czy ma sens format stały i rozmiar zmienny? • Czy ma sens format zmienny i rozmiar stały? 2. Układ danych na dysku
Inne interesujące kwestie • Kompresja • W ramach rekordu, np. kodowanie • W ramach zbioru rekordów (np. w bloku), np. wyszukiwanie wspólnych fragmentów • Szyfrowanie 2. Układ danych na dysku
Zakładamy bloki stałego rozmiaru Zakładamy, że jest jeden plik (na razie) Układanie rekordów w blokach bloki... plik 2. Układ danych na dysku
Opcje składowania rekordów w blokach (1) Oddzielanie rekordów (2) Łańcuchowane albo niełańcuchowane (3) Mieszanie różnych typów rekordów (grono) (4) Rekordy wieloczęściowe (5) Porządkowanie (sortowanie) rekordów (6) Adresowanie, wskaźniki 2. Układ danych na dysku
(1) Oddzielanie rekordów R1 R2 R3 Blok (a) Rozmiar stały: nie ma potrzeby oddzielania (b) Specjalny znacznik (c) Zapisywanie rozmiarów rekordów (lub offsetów) - w rekordach - w nagłówku bloku - w tablicy translacji adresów rekordów (?) 2. Układ danych na dysku
(2) Łańcuchowane vs. niełańcuchowane • Niełańcuchowane: rekord musi mieścić się w jednym bloku blok 1 blok 2 ... • Łańcuchowane blok 1 blok 2 ... R1 R2 R3 R4 R5 R1 R2 R3 (a) R3 (b) R4 R5 R6 R7 (a) 2. Układ danych na dysku
R1 R2 R3 (a) R3 (b) R4 R5 R6 R7 (a) Przy łańcuchowaniu rekordów: należywskazaćnależywskazać że to jest częśćże to kontynuacja (+ wskaźnik na resztę) (+ ew. wskaźnik zwrotny) 2. Układ danych na dysku
Łańcuchowane vs. niełańcuchowane • Niełańcuchowanie jest znacznie prostsze, ale może oznaczać marnowanie przestrzeni • Łańcuchowanie jest konieczne, gdy: • rozmiar rekordu > rozmiar bloku • Łańcuchowania w praktyce się unika, bo zmniejsza efektywność OLTP • Odczyt rekordu wymaga bowiem odczytu więcej niż jednego bloku 2. Układ danych na dysku
blok 1 blok 2 2050 bajtów 2046 pustych 2050 bajtów2046 pustych R1 R2 Przykład marnowania przestrzeni • 106rekordów • Każdy o stałym rozmiarze 2,050 bajtów • Rozmiar bloku = 4096 bajtów • Zmarnowanychbajtów = 2 x 109 • Rozmiar pliku = 4 x 109(wykorzystanie 50%) 2. Układ danych na dysku
(3) Mieszanie różnych typów rekordów • Mieszany – w tym samym bloku są rekordy różnych typów (np. EMPLOYEE, DEPT) np., taki blok EMP e1 DEPT d1 DEPT d2 2. Układ danych na dysku
Dlaczego chcemy mieszać?Odpowiedź: GRONA (clusters) • Rekordy, które są zwykle pobierane łącznie, powinny znajdować się w tym samym bloku • Inna możliwość: bez mieszania, ale trzymamy powiązane w rekordy w tym samym cylindrze 2. Układ danych na dysku
Przykład Q1: select A#, C_NAME, C_CITY, … from DEPOSIT, CUSTOMER where DEPOSIT.C_NAME = CUSTOMER.C.NAME blok CUSTOMER,NAME=SMITH DEPOSIT,NAME=SMITH DEPOSIT,NAME=SMITH 2. Układ danych na dysku
Jeśli Q1 jest często zadawanie, grono podnosi efektywność • Ale jeśli poniższe zapytanie Q2 jest częste Q2: SELECT * FROM CUSTOMER To grono wręcz obniża efektywność • Są też problemy z gronami na maszynach wieloprocesorowych. Przeplot instrukcji może wtedy powodować problemy 2. Układ danych na dysku
(4) Rekordy wieloczęściowe Część o formacie stałym jest w jednym bloku Zwykle przy takim formacie Część o formacie zmiennym jest w innym bloku 2. Układ danych na dysku
R2 (a) Taki blok może mieć rekordy stałego formatu R2 (b) R2 (c) Blok z częścią zmienną Blok z częścią stałą R1 (a) R1 (b) 2. Układ danych na dysku
Pytanie • Jaka jest różnica między • rekordami wieloczęściowymi a • po użyciem dwóch zwykłych typów rekordów? 2. Układ danych na dysku
(5) Porządkowanie (sortowanie) rekordów • Posortowanie rekordów w pliku (bloku) wg wartości pewnego klucza • Plik uporządkowany ( posortowany) • Po co to robić? • Przyspieszenie odczytu rekordów w zadanym porządku • Wykonanie złączenia przez scalanie (merge-join). Odpada wtedy kosztowne sortowanie. 2. Układ danych na dysku
Możliwości porządkowania (a) Kolejne rekordy są fizycznie sąsiednie ... (b) Powiązane wskaźnikami R1 Next (R1) R1 Next (R1) 2. Układ danych na dysku
nagłówek R2.1 R1.3 R4.7 W praktyce trzeba obie opcje połączyć: (c) Obszar nadmiarowy Rekordy posortowane R1 R2 R3 R4 R5 2. Układ danych na dysku
Wiele możliwości na skali: Fizyczne Logiczne (6) Adresowanie, wskaźniki • Jak się odwoływać do rekordów? Rx 2. Układ danych na dysku
Czysto fizyczne ID urządzenia Np., AdresNr cylindra rekordu = Nr ścieżki lub ID Nr sektora Offset w bloku ID bloku 2. Układ danych na dysku
Czysto logiczne • Np. ID rekordu to dowolny ciąg bitów odwzorowanie ID rekordu r Adres a ID rekordu Adres fizyczny 2. Układ danych na dysku
Kompromis Elastyczność Koszt przenoszenia rekordów pośredniości • przy usuwaniu • przy modyfikacji • przy porządkach 2. Układ danych na dysku
Przykład 1Pośredniość w bloku Nagłówek Blok: Wolny obszar R3 R4 R1 R2 2. Układ danych na dysku
Nagłówek bloku • Dane opisowe na początku (końcu) bloku • Mogą zawierać: • Identyfikator pliku (relacji, bazy danych) • Identyfikator tego bloku • Katalog rekordów • Wskaźnik na wolny obszar • Typ bloku (np. zawiera rekordy typu 4 lub jest blokiem nadmiarowym) • Wskaźnik do innych podobnych bloków (powiązanie w listę lub inną strukturę) • Stempel czasowy 2. Układ danych na dysku
Odwzorowanie OS Id pliku, Fizyczne Nr bloku id bloku Przykład 2Użycie identyfikatora bloku znanego systemowi operacyjnemu Id rekordu Id pliku Nr bloku Nr rekordu lub Offset 2. Układ danych na dysku