Systemy zarzdzania bazami danych 2 Ukad danych na
Systemy zarządzania bazami danych 2. Układ danych na dysku Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 1
Zagadnienia • Jak ułożyć dane na dysku? • Jak odwzorować je w pamięci RAM? Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 2
Jakie dane się składuje? • • Wynagrodzenie (netto, brutto) Nazwisko (aktualne, rodowe) Data (urodzenia, zatrudnienia) Zdjęcie (z ostatniej wycieczki na grzyby) Co mamy do dyspozycji? : Bajty 8 bitów Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 3
Reprezentacja: • Integer (short): 2 bajty np. , 35 to 0000 00100011 • Real (zmiennopozycyjnie) n bitów na mantysę, m na cechę • Real (stałopozycyjnie) księgowi lubią Często dziesiętnie jako ciągi cyfr Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 4
Reprezentacja: • Znaki rozmaite kodowanie, kiedyś: ASCII, teraz coraz częściej Unicode (UTF-8) Przykłady (ASCII): A: 1000001 a: 1100001 5: 0110101 LF: 0001010 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 5
Reprezentacja: • Boolean np. , TRUE FALSE 1111 0000 • Typy wyliczeniowe np. , RED 1 BLUE 2 GREEN 3 YELLOW 4 … Czy można użyć mniej niż 1 bajt? Owszem, ale dyski są takie tanie. . . Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 6
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 7
Reprezentacja: • Napisy – Zakończone zerem, np. c a t – Z podaną długością, np. 3 c a t - O ustalonej długości (w słowniku danych) c Oryginał: Hector Garcia-Molina a t 2. Układ danych na dysku 8
Zasadnicze rozróżnienie • Elementy stałego rozmiaru • Elementy zmiennego rozmiaru - rozmiar zwykle jest podawany na początku elementu Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 9
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 10
Składanie Elementy danych Rekordy Bloki Pliki Pamięć RAM Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 11
Rekord • Kolekcja powiązanych elementów danych (zwanych polami) • Np. Rekord Employee: pole name, pole salary, pole hire date, pole previous jobs (wielokrotne). . . Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 12
Rodzaje rekordów • Główny podział : – Rozmiar: – Format: Oryginał: Hector Garcia-Molina stały vs. zmienny 2. Układ danych na dysku 13
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 14
Przykład: stały format i rozmiar Employee (1) E#, dwubajtowy integer (2) Ename, napis 10 -znakowy (3) Dept, dwubajtowy kod 55 s m i t h 02 83 j o n e s 01 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku Schemat Rekordy 15
Format zmienny • Rekord musi zawierać opis formatu • Jest więc mniej lub bardziej samoopisowy • Różne warianty informacji schematowych w takim wypadku Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 16
Przykład: zmienny format i rozmiar 46 4 S 4 F O RD Kod pola Ename Kod typu String Rozmiar pola String Kod pola E# Kod typu Integer Liczba pól 2 5 I Nazwy pól mogą być niekodowane, np. znaczniki XML Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 17
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. . . Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 18
Format zmienny z polem wielokrotnym • Pracownik może mieć dowolnie wiele dzieci • Employee 1: N Child 3 E_name: Fred Oryginał: Hector Garcia-Molina Child: Sally Child: Tom 2. Układ danych na dysku 19
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 20
Wiele pośrednich opcji między formatem stałym i zmiennym Przykład 1: Typ rekordu w rekordzie 5 27 . . typ rekordu (wyjaśniony w schemacie) rozmiar rekordu • Niezbędne w gronach tabel (cluster) Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 21
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. Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 22
Przykład 2: Format pośredni stało-zmienny • Format mieszany – Jedna część jest stała, a druga zmienna • Wszyscy pracownicy mają E#, name, dept Inne pola są zmienne. 25 Smith Toy 2 Hobby: chess retired # liczba pól w części zmiennej Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 23
Wiele możliwości wewnętrznej organizacji rekordu długość pola * 3 10 * 5 F 1 * 12 F 3 rozmiar całości 3 32 5 15 20 0 1 2 3 4 F 1 5 F 2 15 F 3 20 offsety Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 24
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? Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 25
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 26
Układanie rekordów w blokach Zakładamy bloki stałego rozmiaru bloki . . . plik Oryginał: Hector Garcia-Molina 2. Układ danych na dysku Zakładamy, że jest jeden plik (na razie) 27
Opcje składowania rekordów w blokach (1) (2) (3) (4) (5) (6) Oddzielanie rekordów Łańcuchowane albo niełańcuchowane Mieszanie różnych typów rekordów (grono) Rekordy wieloczęściowe Porządkowanie (sortowanie) rekordów Adresowanie, wskaźniki Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 28
(1) Oddzielanie rekordów Blok R 1 R 2 R 3 (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 (? ) Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 29
(2) Łańcuchowane vs. niełańcuchowane • Niełańcuchowane: rekord musi mieścić się w jednym bloku blok 1 R 1 blok 2 R 3 . . . R 4 R 5 • Łańcuchowane blok 1 R 2 Oryginał: Hector Garcia-Molina blok 2 R 3 (a) R 3 (b) R 4 2. Układ danych na dysku R 5 R 6 R 7 (a) . . . 30
Przy łańcuchowaniu rekordów: R 1 R 2 R 3 (a) R 3 (b) R 4 R 5 R 6 R 7 (a) należy wskazać że to jest część (+ wskaźnik na resztę) że to kontynuacja (+ ew. wskaźnik zwrotny) Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 31
Ł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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 32
Przykład marnowania przestrzeni • 106 rekordów • Każdy o stałym rozmiarze 2, 050 bajtów • Rozmiar bloku = 4096 bajtów blok 1 blok 2 R 1 R 2 2050 bajtów 2046 pustych • Zmarnowanych bajtów = 2 x 109 • Rozmiar pliku = 4 x 109 (wykorzystanie 50%) Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 33
(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 e 1 DEPT d 2 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 34
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 35
Przykład Q 1: select A#, C_NAME, C_CITY, … from DEPOSIT, CUSTOMER where DEPOSIT. C_NAME = CUSTOMER. C. NAME blok CUSTOMER, NAME=SMITH DEPOSIT, NAME=SMITH Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 36
• Jeśli Q 1 jest często zadawanie, grono podnosi efektywność • Ale jeśli poniższe zapytanie Q 2 jest częste Q 2: 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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 37
(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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 38
Blok z częścią stałą R 1 (a) R 2 (a) Blok z częścią zmienną R 1 (b) R 2 (c) Oryginał: Hector Garcia-Molina 2. Układ danych na dysku Taki blok może mieć rekordy stałego formatu 39
Pytanie • Jaka jest różnica między – rekordami wieloczęściowymi a – po użyciem dwóch zwykłych typów rekordów? Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 40
(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 (mergejoin). Odpada wtedy kosztowne sortowanie. Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 41
Możliwości porządkowania (a) Kolejne rekordy są fizycznie sąsiednie R 1 Next (R 1) . . . (b) Powiązane wskaźnikami R 1 Oryginał: Hector Garcia-Molina Next (R 1) 2. Układ danych na dysku 42
W praktyce trzeba obie opcje połączyć: (c) Obszar nadmiarowy Rekordy posortowane Oryginał: Hector Garcia-Molina nagłówek R 1 R 2 R 3 R 4 R 5 2. Układ danych na dysku R 2. 1 R 1. 3 R 4. 7 43
(6) Adresowanie, wskaźniki • Jak się odwoływać do rekordów? Rx • Wiele możliwości na skali: Fizyczne Logiczne Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 44
Czysto fizyczne Np. , Adres rekordu lub ID Oryginał: Hector Garcia-Molina = ID urządzenia Nr cylindra Nr ścieżki Nr sektora Offset w bloku 2. Układ danych na dysku ID bloku 45
Czysto logiczne • Np. ID rekordu to dowolny ciąg bitów odwzorowanie ID rekordu r ID Adres rekordu fizyczny Oryginał: Hector Garcia-Molina 2. Układ danych na dysku Adres a 46
Kompromis Elastyczność Koszt przenoszenia rekordów pośredniości – przy usuwaniu – przy modyfikacji – przy porządkach Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 47
Przykład 1 Pośredniość w bloku Nagłówek Blok: Wolny obszar R 3 R 4 R 1 Oryginał: Hector Garcia-Molina R 2 2. Układ danych na dysku 48
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 Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 49
Przykład 2 Użycie identyfikatora bloku znanego systemowi operacyjnemu Id rekordu Id pliku, Nr bloku Oryginał: Hector Garcia-Molina Id pliku Nr bloku Nr rekordu lub Offset Odwzorowanie OS 2. Układ danych na dysku Fizyczne id bloku 50
Usuwanie Blok Rx Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 51
Możliwości (a) Natychmiast odzyskaj miejsce (b) Oznacz jako usunięty – Można prowadzić listę usuniętych rekordów (by ponownie użyć przestrzeń) – Potrzebny sposób oznaczania • Specjalna sekwencja znaków • Pole usunięcia • W tablicy odzworowania identyfikatórów logicznych Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 52
Jak zwykle wiele kompromisów • Jak bardzo kosztowne jest przeniesienie nieskasowanego rekordu w wolne miejsce, aby odzyskać je natychmiast? • Jak dużo miejsca się marnuje? – Usunięte rekordy – Pola usunięcia – Listy wolnego miejsca Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 53
Problem z usuwaniem: wiszące wskaźniki R 1 ? • Rozwiązanie 1: Don’t worry, be happy • Prawa Murphiego wykluczają tę opcję Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 54
Rozwiązanie 2: Nagrobki • Pozostaw marker w fizycznej lokacji lub odwzorowaniu • Adresy fizyczne: Blok To miejsce będzie niedostępne Oryginał: Hector Garcia-Molina To miejsce będzie dostępne 2. Układ danych na dysku 55
Rozwiązanie 2: Nagrobki logiczne • Adresy logiczne odwzorowanie ID lokacja ID 7788 nie będzie już nigdy użyte 7788 Miejsce w tablicy też Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 56
Rozwiązanie 3 (? ): • Umieść ID rekordu w każdym rekordzie • Przechodząc po wskaźniku, sprawdź, czy doszedłeś do tego samego rekordu wsk. 3 -77 id rek: 3 -77 Czy to może działać? Jeśli to miejsce będzie ponownie użyte, czy nowy rekord będzie miał to samo id? Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 57
Rozwiązanie 4 (? ): • Budując wskaźnik użyj pary (wskaźnik + hasz) lub (wskaźnik + klucz)? wsk. + hasz klucz • A co gdy rekord zostanie zmieniony? Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 58
Wstawianie Łatwo: rekordy nie są uporządkowane Wstaw nowy rekord na końcu pliku lub w miejsce jakiegoś usuniętego rekordu Gdy rekordy są rozmiaru zmiennego, nie tak łatwo. . . Trudno: rekordy są uporządkowane Jeśli jest luz między rekordami, super! Jeśli nie ma, stwórz obszar nadmiarowy Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 59
Interesujące pytania • Ile zostawić luzu (wolnego miejsca) w każdym bloku, ścieżce, cylindrze? • Jak często reorganizować plik w celu pozbycia się stron nadmiarowych? Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 60
Wolne miejsce Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 61
Wymiana wskaźników Pamięć Dysk blok 1 blok 2 Rek A Oryginał: Hector Garcia-Molina Rek A 2. Układ danych na dysku 62
Możliwość 1 • Tablica translacji Adres dyskowy Rek-A Oryginał: Hector Garcia-Molina Adres pamięciowy Rek-A-RAM 2. Układ danych na dysku 63
Możliwość 2 Wskaźniki pamięciowe (podwójne) + bit rodzaju do dysku M do pamięci Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 64
Wymiana wskaźników • Automatyczna • Na żądanie • Brak wymiany: aplikacja dba o to Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 65
Porównanie • Są miliony sposobów ułożenia danych na dysku. Który wybrać? Elastyczność Użycie przestrzeni Złożoność Wydajność Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 66
By ocenić konkretny wybór oszacuj następujące parametry: • Przestrzeń potrzebną na spodziewane dane • Spodziewany czas – pobrania rekordu o zadanym kluczu – pobrania następnego rekordu – wstawienia rekordu – dopisania rekordu – usunięcia rekordu – modyfikacji rekordu – odczytania całego pliku – reorganizacji pliku Oryginał: Hector Garcia-Molina 2. Układ danych na dysku 67
- Slides: 67