Systemy zarządzania bazami danych 2. Układ danych na dysku
description
Transcript of Systemy zarządzania bazami danych 2. Układ danych na dysku
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 1
Systemy zarządzania bazami danych
2. Układ danych na dysku
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 2
• Jak ułożyć dane na dysku?• Jak odwzorować je w pamięci RAM?
Zagadnienia
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 3
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
8bitów
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 4
Reprezentacja:• Integer (short): 2 bajty
np., 35 to00000000 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 5
• Znaki rozmaite kodowanie, kiedyś: ASCII, teraz coraz częściej Unicode (UTF-8)
Reprezentacja:
Przykłady (ASCII):A: 1000001a: 11000015: 0110101LF: 0001010
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 6
• Booleannp., TRUE FALSE
1111 11110000 0000
Reprezentacja:
• Typy wyliczeniowenp., RED 1 GREEN 3
BLUE 2 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 7
• Datynp.: - 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!)
• Czasnp. - Integer, liczba sekund od północy
- 8 znaków, HHMMSSFF
Reprezentacja:
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 8
• Napisy– Zakończone zerem, np.
– Z podaną długością, np.
- O ustalonej długości (w słowniku danych)
c ta
c ta3
Reprezentacja:
c ta
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 9
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 10
• 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
Na początku elementu także:
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 11
Elementy danych
Rekordy
Bloki
Pliki
Pamięć RAM
Składanie
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 12
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 13
Rodzaje rekordów
• Główny podział :– Rozmiar: stały vs. zmienny– Format: stały vs. zmienny
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 14
• 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
Format stały
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 15
Przykład: stały format i rozmiarEmployee
(1) E#, dwubajtowy integer(2) Ename, napis 10-znakowySchemat(3) Dept, dwubajtowy kod55 s m i t h 02
83 j o n e s 01Rekordy
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 16
• Rekord musi zawierać opis formatu• Jest więc mniej lub bardziej
samoopisowy• Różne warianty informacji
schematowych w takim wypadku
Format zmienny
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 17
Przykład: zmienny format i rozmiar
4I52 4S DROF46
Nazwy pól mogą być niekodowane, np. znaczniki XML
Licz
ba p
ólKo
d po
la E
#Ko
d ty
pu In
tege
r
Kod
pola
Ena
me
Kod
typu
Stri
ngRo
zmia
r pol
a St
ring
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 18
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 19
• Pracownik może mieć dowolnie wiele dzieci
• Employee 1:N Child
3 E_name: Fred Child: SallyChild: Tom
Format zmienny z polem wielokrotnym
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 20
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 21
Wiele pośrednich opcji między formatem stałym i zmiennymPrzykład 1: Typ rekordu w rekordzie
typ rekordu rozmiar rekordu(wyjaśnionyw schemacie)
• Niezbędne w gronach tabel (cluster)
5 27 . . . .
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 22
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 23
Przykład 2: Format pośredni stało-zmienny
• Format mieszany– Jedna część jest stała, a druga zmienna
• Wszyscy pracownicy mają E#, name, deptInne pola są zmienne.
25 Smith Toy 2 retiredHobby:chess
# liczba pól w części zmiennej
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 24
Wiele możliwości wewnętrznej organizacji rekordu
długość pola
3 F310 F1 5 F2 12 * * *
3 32 5 15 20 F1 F2 F3rozmiar całości
offsety
0 1 2 3 4 5 15 20
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 25
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 26
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 27
Układanie rekordów w blokach
bloki ...
plik
Zakładamy bloki stałego rozmiaru
Zakładamy, że jest jeden plik (na razie)
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 28
(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
Opcje składowania rekordów w blokach
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 29
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 (?)
(1) Oddzielanie rekordów
R2R1 R3
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 30
• Niełańcuchowane: rekord musi mieścić się w jednym blokublok 1 blok 2 ...
• Łańcuchowane
blok 1 blok 2 ...
(2) Łańcuchowane vs. niełańcuchowane
R1 R2
R1
R3 R4 R5
R2 R3(a)
R3(b) R6R5R4 R7
(a)
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 31
należy wskazać należy wskazać
że to jest część że to kontynuacja
(+ wskaźnik na resztę) (+ ew. wskaźnik zwrotny)
R1 R2 R3(a)
R3(b) R6R5R4 R7
(a)
Przy łańcuchowaniu rekordów:
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 32
• 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
Łańcuchowane vs. niełańcuchowane
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 33
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
2050 bajtów 2046 pustych 2050 bajtów 2046 pustych
R1 R2
• Zmarnowanych bajtów = 2 x 109 • Rozmiar pliku = 4 x 109 (wykorzystanie 50%)
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 34
• Mieszany – w tym samym bloku są rekordy różnych typów (np. EMPLOYEE, DEPT)
np., taki blok
(3) Mieszanie różnych typów rekordów
EMP e1 DEPT d1 DEPT d2
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 35
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 36
PrzykładQ1: select A#, C_NAME, C_CITY, …
from DEPOSIT, CUSTOMERwhere DEPOSIT.C_NAME =
CUSTOMER.C.NAME
blokCUSTOMER,NAME=SMITH
DEPOSIT,NAME=SMITHDEPOSIT,NAME=SMITH
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 37
• Jeśli Q1 jest często zadawanie, grono podnosi efektywność
• Ale jeśli poniższe zapytanie Q2 jest częste Q2: SELECT * FROM CUSTOMERTo 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 38
Część o formacie stałym jest w jednym bloku
Zwykle przy takim formacie
Część o formacie zmiennym
jest w innym bloku
(4) Rekordy wieloczęściowe
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 39
Blok z częścią stałą
R1 (a)R1 (b)
Blok z częścią zmienną
R2 (a)
R2 (b)
R2 (c)
Taki blok może mieć rekordy stałego formatu
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 40
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 41
• 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.
(5) Porządkowanie (sortowanie) rekordów
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 42
Możliwości porządkowania
(a) Kolejne rekordy są fizycznie sąsiednie
...
(b) Powiązane wskaźnikami
Next (R1)R1
R1 Next (R1)
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 43
(c) Obszar nadmiarowy
Rekordyposortowane
R1R2R3R4R5
W praktyce trzeba obie opcje połączyć:
nagłówekR2.1R1.3R4.7
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 44
• Jak się odwoływać do rekordów?
(6) Adresowanie, wskaźniki
Rx
• Wiele możliwości na skali: Fizyczne Logiczne
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 45
Czysto fizyczne
ID urządzeniaNp., Adres Nr cylindra
rekordu = Nr ścieżki
lub ID Nr sektoraOffset w bloku
ID bloku
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 46
Czysto logiczne• Np. ID rekordu to dowolny ciąg bitów
odwzorowanieID rekordu r Adres
a
Adres fizyczny
IDrekordu
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 47
Kompromis
Elastyczność Kosztprzenoszenia rekordówpośredniości
– przy usuwaniu– przy modyfikacji– przy porządkach
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 48
Przykład 1 Pośredniość w bloku Nagłówek
Blok: Wolny
obszar
R3R4R1 R2
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 49
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 50
Przykład 2 Użycie identyfikatora bloku znanego systemowi operacyjnemuId rekordu Id pliku
Nr bloku Nr rekordu lub Offset
Id pliku, FizyczneNr bloku id bloku
Odwzorowanie OS
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 51
Blok
Usuwanie
Rx
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 52
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 53
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 54
• Rozwiązanie 1: Don’t worry, be happy
• Prawa Murphiego wykluczają tę opcję
Problem z usuwaniem: wiszące wskaźnikiR1 ?
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 55
• Pozostaw marker w fizycznej lokacji lub odwzorowaniu
• Adresy fizyczne:
Rozwiązanie 2: Nagrobki
Blok
To miejsce To miejscebędzie będzieniedostępne dostępne
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 56
• Adresy logiczne
ID lokacja
7788
odwzorowanie
ID 7788 nie będziejuż nigdy użyte
Miejsce w tablicy też
Rozwiązanie 2: Nagrobki logiczne
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 57
• Umieść ID rekordu w każdym rekordzie• Przechodząc po wskaźniku, sprawdź,
czy doszedłeś do tego samego rekordu
Rozwiązanie 3 (?):
Czy to może działać? Jeśli to miejsce będzie ponownie użyte, czy nowy rekord będzie miał to samo id?
wsk.3-77
id rek:3-77
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 58
• Budując wskaźnik użyj pary (wskaźnik + hasz)lub (wskaźnik + klucz)?
Rozwiązanie 4 (?):
• A co gdy rekord zostanie zmieniony?
wsk.+hasz klucz
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 59
Ł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
Wstawianie
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 60
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 61
Wolnemiejsce
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 62
Wymiana wskaźników
Pamięć Dysk
Rek A
blok 1
Rek Ablok 2 blok 2
blok 1
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 63
• Tablica translacji
Adres dyskowy Adres pamięciowyRek-A Rek-A-RAM
Możliwość 1
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 64
Wskaźniki pamięciowe (podwójne) + bit rodzaju
do dysku
do pamięciM
Możliwość 2
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 65
Wymiana wskaźników• Automatyczna• Na żądanie• Brak wymiany: aplikacja dba o to
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 66
• Są miliony sposobów ułożenia danych na dysku. Który wybrać?
Elastyczność Użycie przestrzeni
Złożoność Wydajność
Porównanie
Oryginał: Hector Garcia-Molina
2. Układ danych na dysku 67
• 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
By ocenić konkretny wybór oszacuj następujące parametry: