• Nie Znaleziono Wyników

Systemy zarządzania bazami danych

N/A
N/A
Protected

Academic year: 2021

Share "Systemy zarządzania bazami danych"

Copied!
67
0
0

Pełen tekst

(1)

Systemy zarządzania bazami danych

2. Układ danych na dysku

(2)

• Jak ułożyć dane na dysku?

• Jak odwzorować je w pamięci RAM?

Zagadnienia

(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

8

(4)

Reprezentacja:

• Integer (short): 2 bajty

np., 35 to

00000000 00100011

• Real (zmiennopozycyjnie)

n bitów na mantysę, m na cechę

• Real (stałopozycyjnie) księgowi lubią

(5)

• Znaki

rozmaite kodowanie, kiedyś: ASCII, teraz coraz częściej Unicode (UTF-8)

Reprezentacja:

Przykłady (ASCII):

A: 1000001 a: 1100001 5: 0110101 LF: 0001010

(6)

• Boolean

np., TRUE FALSE

1111 1111 0000 0000

Reprezentacja:

• Typy wyliczeniowe

np., RED  1 GREEN  3

BLUE  2 YELLOW  4 … Czy można użyć mniej niż 1 bajt?

(7)

• 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

Reprezentacja:

(8)

• Napisy

– Zakończone zerem, np.

– Z podaną długością, np.

c a t

c a t 3

Reprezentacja:

(9)

Zasadnicze rozróżnienie

• Elementy stałego rozmiaru

• Elementy zmiennego rozmiaru

- rozmiar zwykle jest podawany na początku elementu

(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:

(11)

Elementy danych Rekordy

Bloki Pliki

Pamięć RAM

Składanie

(12)

Rekord

• Kolekcja powiązanych elementów danych (zwanych polami)

• Np. Rekord Employee: pole name,

pole salary,

pole hire date,

pole previous jobs (wielokrotne)

(13)

Rodzaje rekordów

• Główny podział :

– Rozmiar: stały vs. zmienny – Format: stały vs. zmienny

(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ń,

Format stały

(15)

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

83 j o n e s 01

Rekordy

(16)

• Rekord musi zawierać opis formatu

• Jest więc mniej lub bardziej samoopisowy

• Różne warianty informacji schematowych w takim wypadku

Format zmienny

(17)

Przykład: zmienny format i rozmiar

4 I

5

2 46 S 4 F O R D

Nazwy pól mogą być niekodowane, np. znaczniki XML

Liczba pól Kod pola E# Kod typu Integer Kod pola Ename Kod typu String Rozmiar pola String

(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...

(19)

• Pracownik może mieć dowolnie wiele dzieci

• Employee  1:N  Child

3 E_name: Fred Child: Sally Child: Tom

Format zmienny z polem wielokrotnym

(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

(21)

Wiele pośrednich opcji między formatem stałym i zmiennym

Przykład 1: Typ rekordu w rekordzie

typ rekordu rozmiar rekordu (wyjaśniony

w schemacie)

• Niezbędne w gronach tabel (cluster)

5 27 . . . .

(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

(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, dept Inne pola są zmienne.

25 Smith Toy 2 Hobby:chess retired

# liczba pól w części zmiennej

(24)

Wiele możliwości wewnętrznej organizacji rekordu

długość pola

3 10 F1 5 F2 12 F3

* * *

3 32 5 15 20 F1 F2 F3

rozmiar całości

0 1 2 3 4 5 15 20

(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?

(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

(27)

Układanie rekordów w blokach

bloki ...

plik

Zakładamy bloki stałego rozmiaru

Zakładamy, że jest

(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

(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

R2

R1 R3

(30)

• Niełańcuchowane: rekord musi mieścić się w jednym bloku

blok 1 blok 2

...

• Łańcuchowane

blok 1 blok 2

(2) Łańcuchowane vs. niełańcuchowane

R1 R2 R3 R4 R5

(31)

należy wskazać należy wskazać że to jest część że to kontynuacja

(+ wskaźnik na resztę) (+ ew. wskaźnik zwrotny)

R1 R2 (a)R3 (b)R3 R4 R5 R6 (a)R7

Przy łańcuchowaniu rekordów:

(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

Łańcuchowane vs. niełańcuchowane

(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 pustychR1 R2

• Zmarnowanych bajtów = 2 x 109

• Rozmiar pliku = 4 x 109 (wykorzystanie 50%)

(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

(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

(36)

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

(37)

• 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

(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

(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

(40)

Pytanie

• Jaka jest różnica między

– rekordami wieloczęściowymi a

– po użyciem dwóch zwykłych typów rekordów?

(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

(42)

Możliwości porządkowania

(a) Kolejne rekordy są fizycznie sąsiednie ...

(b) Powiązane wskaźnikami

Next (R1) R1

R1 Next (R1)

(43)

(c) Obszar nadmiarowy Rekordy

posortowane

R1 R2 R3 R4 R5

W praktyce trzeba obie opcje połączyć:

nagłówek

R2.1 R1.3 R4.7

(44)

• Jak się odwoływać do rekordów?

(6) Adresowanie, wskaźniki

Rx

• Wiele możliwości na skali:

Fizyczne Logiczne

(45)

Czysto fizyczne

ID urządzenia Np., Adres Nr cylindra

rekordu = Nr ścieżki lub ID Nr sektora

Offset w bloku

ID bloku

(46)

Czysto logiczne

• Np. ID rekordu to dowolny ciąg bitów odwzorowanie

ID rekordu r

Adres Adres a

fizyczny ID

rekordu

(47)

Kompromis

Elastyczność Koszt

przenoszenia rekordów pośredniości

– przy usuwaniu – przy modyfikacji – przy porządkach

(48)

Przykład 1 Pośredniość w bloku

Nagłówek

Blok: Wolny obszar

R3 R4

(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

(50)

Przykład 2 Użycie identyfikatora bloku znanego systemowi operacyjnemu

Id rekordu Id pliku Nr bloku

Nr rekordu lub Offset

Id pliku, Odwzorowanie Fizyczne

(51)

Blok

Usuwanie

Rx

(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

(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

(54)

• Rozwiązanie 1: Don’t worry, be happy

• Prawa Murphiego wykluczają tę opcję

Problem z usuwaniem: wiszące wskaźniki

R1 ?

(55)

• Pozostaw marker w fizycznej lokacji lub odwzorowaniu

• Adresy fizyczne:

Rozwiązanie 2: Nagrobki

Blok

To miejsce To miejsce

będzie będzie

niedostępne dostępne

(56)

• Adresy logiczne

ID lokacja

7788

odwzorowanie

ID 7788 nie będzie już nigdy użyte

Rozwiązanie 2: Nagrobki logiczne

(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

(58)

• Budując wskaźnik użyj pary (wskaźnik + hasz) lub (wskaźnik + klucz)?

Rozwiązanie 4 (?):

wsk.+

hasz klucz

(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

(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?

(61)

Wolne miejsce

(62)

Wymiana wskaźników

Pamięć Dysk

Rek A

blok 1

Rek A

blok 2 blok 2

blok 1

(63)

• Tablica translacji

Adres dyskowy Adres pamięciowy Rek-A Rek-A-RAM

Możliwość 1

(64)

Wskaźniki pamięciowe (podwójne) + bit rodzaju

do dysku

M

do pamięci

Możliwość 2

(65)

Wymiana wskaźników

• Automatyczna

• Na żądanie

• Brak wymiany: aplikacja dba o to

(66)

• Są miliony sposobów ułożenia danych na dysku. Który wybrać?

Elastyczność Użycie przestrzeni

Porównanie

(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:

Cytaty

Powiązane dokumenty

Węglowodory, które mają dwa razy więcej atomów wodoru niż węgla mają dwa razy większą zawartość procentową wagową wodoru niż węgla..

Wykonaj niezbędne obliczenia w celu ustalenia, czy roztwór ten powstał przez rozpuszczenie w wodzie wodorotlenku sodu, wodorotlenku potasu, czy amoniaku oraz

Anna Kamieńska W oparciu o przeczytane przez Ciebie utwory odnieś się w formie eseju do myśli Anny Kamieńskiej.. (Odwołaj się przynajmniej do jednego wiersza i dwóch utworów

Jeśli pamięci nie można przydzielić, to zwraca wartość NULL Przydzielona pamięć nie jest inicjowana. Zwracaną wartość wskaźnika należy rzutować na

Podobne teorię w istocie były rozpatrywane (np. skalarna teoria Bransa-Dicka) i nie mogą być w łatwy sposób potwierdzone eksperymentalnie w przypadku kiedy wkład dodatkowych

Narysuj prostokąt, równoległobok i trapez prostokątny o polu powierzchni równym

Spółka

z polami danych wypełnionymi w sposób rosnący liczbami losowymi z zakresu 1..100 (proszę wykorzystać pomysł z umieszczaniem w kolejnym węźle