Wykład 8

Transkrypt

Wykład 8
Bazy danych
Wykład 6
dr Lidia Stępień
Cel wykładu
●
●
Fizyczne przechowywanie danych
Składniki jądra SZBD i jego podstawowe
funkcje
●
Organizacja plików
●
Mechanizmy dostępu
●
Zarządzanie: transakcjami, słownikiem,
zapytaniami
●
Kopia zapasowa i odtwarzanie
Rozmieszczenie rekordów
●
Dane przechowywane są w postaci rekordów.
●
Każdy rekord składa się ze zbioru powiązanych ze
sobą logicznie wartości danych składających się z
pewnej liczby bajtów i odpowiadających
poszczególnym polom.
●
Każdy rekord ma określony typ rekordów.
●
Typ rekordów jest równoważny formatowi tych
rekordów.
Rozmieszczenie rekordów
●
Plik jest sekwencją takich rekordów
●
Wszystkie rekordy w pliku są zazwyczaj tego
samego typu.
●
Pliki i rekordy muszą być odwzorowane na bloki
dyskowe, które są fizycznymi jednostkami
dyskowych operacji przesyłania danych.
●
W każdym bloku przechowuje się wiele rekordów.
●
Plik składa się z wielu bloków.
Rozmieszczenie rekordów
●
Każdy plik ma najczęściej nagłówek.
●
Nagłówek zawiera informacje potrzebne do
określenia dyskowego adresu bloków i informacje
na temat typu rekordów.
Wyszukiwanie rekordu na dysku
●
●
●
●
●
Do buforów pamięci głównej kopiujemy jeden lub
więcej bloków.
Następnie na podstawie informacji zawartej w
nagłówku pliku wyszukiwany jest rekord.
Jeśli nie jest znany adres bloku, w którym znajduje
się dany rekord, to musi być wykonane liniowe
wyszukiwanie.
Stąd organizacja plików oraz operacje dostępu i
wejścia-wyjścia są ze sobą powiązane.
Celem dobrego fizycznego projektu bazy danych jest
zminimalizowanie operacji we-wy.
Składniki jądra SZBD
●
●
●
●
Baza danych i katalog systemowy
przechowywane są na dysku.
System operacyjny szereguje dyskowe operacje
we-wy.
Wszystkie operacje dostępu do informacji w
bazie danych są wykonywane pod kontrolą
menedżera danych.
Menedżer danych używa funkcji zarządzania
danymi niższego poziomu, dostarczonymi przez
system operacyjny gospodarza lub używa
własnych podprogramów.
Składniki jądra SZBD
●
●
●
Kompilator języka definicji DDL bierze instrukcje
wyrażone w DDL i uaktualnia katalog
systemowy.
Wszystkie moduły SZBD muszą mieć dostęp do
katalogu, by móc otrzymywać informacje na
temat obiektów BD.
Procesor czasu wykonywania obsługuje
operacje wyszukiwania i modyfikowania
względem bazy danych. Dostęp do dysku jest
realizowany przez menedżera danych.
Składniki jądra SZBD
●
●
●
Proces zapytań obsługuje zapytania SQL, dokonuje
ich analizy składniowej i semantycznej, a następnie
generuje wywołania procesora czasu wykonywania.
Prekompilator wycina polecenia DML z programu
użytkowego i przekazuje je do kompilatora DML,
który tworzy kod wynikowy realizujący dostęp do
bazy danych.
Pozostałe części programu użytkowego po
kompilacji są wiązane z częścią określoną wyżej,
tworząc transakcję wykonywaną na bazie danych.
Podstawowe funkcje jądra
●
●
●
●
●
●
Organizacja plików.
Mechanizmy dostępu.
Zarządzanie transakcjami: kontrola
współbieżności i spójności.
Zarządzanie słownikami.
Zarządzanie zapytaniami.
Sporządzanie kopii zapasowych (backup) i
odtwarzanie.
Organizacja plików
●
●
●
●
Pliki sekwencyjne:
Plik nieuporządkowany – rekordy są ustawiane w pliku w
porządku ich wstawiania, co jest bardzo sprawne.
Wyszukiwanie rekordu wymaga liniowego przeszukania
całego pliku. (Średnio musimy przeszukać N/2 spośród N
rekordów.)
Plik uporządkowany – rekordy są uporządkowane według
wartości jednego lub więcej pól (np. klucza głównego).
Wstawianie wymaga więcej przetwarzania. Wyszukiwanie
może być realizowanie np. algorytmem wyszukiwania
binarnego.
Pliki haszowe – dostarczają bardzo szybkiego dostępu do
rekordów na podstawie określonego kryterium.
Klastry
●
Klastry – jest zbiorem tabel umieszczonych obok
siebie na dysku w celu przyspieszenia szybkości
wyszukiwania.
CREATE CLUSTER nazwa_klastra
(kolumna <typ>, …)
[opcjonalne informacje na temat rozmiaru];
CREATE TABLE nazwa_tabeli
(…)
CLUSTER nazwa_klastra (kolumna_tabeli);
Indeksy proste
●
●
●
Dodatkowy plik dodawany do systemu bazy
danych o dwóch polach: pierwsze zawiera
posortowaną listę logicznych wartości kluczy,
drugie – listę adresów bloków dla wartości
kluczy.
Problem – utrzymanie odpowiednio małego
indeksu.
Wyszukiwanie, np. algorytmem wyszukiwania
binarnego.
Indeks jako B-drzewo
●
Drzewo wyważone – hierarchiczna struktura
danych. Wyważone – wszystkie jego liście
znajdują się w tej samej odległości od
korzenia drzewa.
CREATE INDEX
CREATE INDEX nazwa_indeksu
ON nazwa_tabeli (nazwa_kolumny)
Słowo kluczowe UNIQUE oznacza, że indeks
będzie przechowywał tylko różne wartości.
DROP INDEX nazwa_indeksu
Zarządzanie transakcjami
●
●
●
Transakcje – procedury, które wprowadzają zmiany do
bazy danych lub które wyszukują dane w bazie danych.
Odpowiada ona pewnej spójnej operacji wykonywanej na
bazie danych przez organizację.
Rozważmy bazę danych jako część systemu rezerwacji
lotów. Transakcją może być rezerwacja kliku, łączonych
ze sobą lotów dla klienta. Rezerwacja zostaje
potwierdzona tylko wtedy, gdy są wolne miejsca na
wszystkich lotach w proponowanej podróży.
Transakcja musi:
●
●
●
Odczytać pewną liczbę rekordów z informacjami
o datach, czasach, numerach lotów i dostępności
miejsc.
Sprawdzić, czy proponowana grupa lotów ma
miejsca dostępne do rezerwacji.
Jeśli miejsca są wolne na każdy lot, to
zarezerwować miejsca. W przeciwnym wypadku
przekazać komunikat o niepowodzeniu.
Własności transakcji
●
●
●
●
Niepodzielność – albo cała transakcja zostanie
wykonana, albo w ogóle nic.
Spójność.
Izolacja – Jeżeli transakcja modyfikuje dzielone dane, to
te dane mogą być tymczasowo niespójne. Takie dane
muszą być niedostępne dla innych transakcji dopóty,
dopóki transakcja nie zakończy ich używać. Menedżer
transakcji stwarza „iluzję”, że transakcja jest izolowana
od innych.
Trwałość – zmiany po zakończeniu transakcji muszą
być utrwalone, nawet w wypadku awarii.
Współbieżność
●
●
●
●
●
●
●
Synchronizacja równolegle wykonywanych kilku
transakcji na współdzielonych danych.
Utracona modyfikacja:
Użytkownik A otrzymuje dostęp do rekordu lotu 21 w czasie t1.
Użytkownik B otrzymuje dostęp do rekordu lotu 21 w czasie t2.
Użytkownik A zwiększa o 1 liczbę zarezerwowanych miejsc w
rekordzie lotu 21 w czasie t3.
Użytkownik B zwiększa o 5 liczbę zarezerwowanych miejsc w
rekordzie lotu 21 w czasie t4.
Modyfikacja użytkownika A zostaje stracona, bo modyfikacja
użytkownika B została zapisana po niej.
Blokady do odczytu
Dają dostęp tylko do odczytu danych i chronią
dane przed modyfikacją przez inną transakcję.
Dowolna liczba transakcji może mieć założoną
blokadę do odczytu na elemencie danych. W
ten
sposób
nie
pozwalamy
innym
użytkownikom na modyfikowanie danych w
czasie, gdy je odczytujemy.
Blokady do zapisu
Umożliwiają dostęp do elementów danych
zarówno w celu ich odczytu, jak i zapisu.
Jednocześnie uniemożliwia innym transakcjom
jakikolwiek odczyt i zapis dla tego elementu
danych. Z tego powodu nazywamy je również
blokadą wyłączoną.
Blokady
●
●
●
●
Mogą być deklarowane na poziomie plików, stron,
rekordów, a nawet pól w rekordach.
Jeśli zablokowane elementy danych są duże, to
wydajność
operacji
modyfikowania
może
się
zmniejszyć.
Jeśli zablokowane elementy danych są na poziomie
pól, to rozmiar tabeli blokad utrzymanej przez SZBD i
ilość przetwarzania dokonywanego na tabeli blokad
może spowodować zmniejszenie wydajności całego
systemu.
Element może być zablokowany tylko podczas dostępu
do danych. Może jednak prowadzić to do
zakleszczenia.
Zakleszczenie
●
●
Wzajemna blokada lub „śmiertelny uścisk”.
Rozważmy dwie transakcje T1 i T2:
●
●
●
●
●
W chwili t1 T1 zakłada blokadę do zapisu elementu danych A.
W chwili t1 T2 zakłada blokadę do zapisu elementu danych B.
W chwili t2 T1 żąda blokady do zapisu na elemencie danych B.
Musi czekać, ponieważ T2 zablokowała B.
W chwili t2 T2 żąda blokady do zapisu na elemencie danych A.
Musi czekać, ponieważ T1 zablokowała A.
Żadna transakcja nie może być kontynuowana zakleszczenie.
Zapobieganie zakleszczeniom
●
Wymaganie, by transakcje zakładały swoje
blokady przed rozpoczęciem działania.
●
Obniżenie wydajności, bo duże transakcje
mogą ciągle czekać na rozpoczęcie
działania.
●
Wykrycie zakleszczenia po wystąpieniu i
zlikwidowanie go.
Spójność
●
●
●
Zbiór powiązanych akcji jest wykonywany
cały, albo wcale.
SPT – system obsługi wszystkich transakcji
wykonywanych na bazie danych.
Transakcja to ciąg instrukcji SQL, która
kończy się zapisem zmian w bazie danych
przez zatwierdzenie pomyślnie zakończonej
transakcji COMMIT, albo wycofaniem
wszystkich dokonanych zmian ROLLBACK
(transakcja niepomyślna).
UWAGI
●
●
●
Niektóre polecenia SQL, np. CREATE
TABLE i CREATE INDEX są automatycznie
zatwierdzane.
Dla większości poleceń opcję stanowi
niezatwierdzanie.
Można zmienić tą opcje poleceniem SZBD,
które ustawia automatyczne zatwierdzanie
wszystkich zmian od razu po wykonaniu
każdej instrukcji SQL.
Zapis transakcji
●
●
●
●
●
●
●
●
●
●
Dziennik transakcji.
Kroki przy wykonywaniu transakcji:
Uruchom transakcję. Przekaż transakcję do SPT.
Zapisz transakcję do dziennika. Zapisz w dzienniku informacje
początkowe o transakcji.
Sprowadź rekordy z bazy danych.
Zapisz do dziennika obraz przed transakcją, to jest wartości przed
przetworzeniem przez transakcję.
Oblicz nowe wartości.
Zapisz do dziennika obraz po transakcji, to jest wartości po
przetworzeniu przez transakcję.
Zapisz w dzienniku zatwierdzenie.
Zapisz nowe rekordy do bazy danych.
Dziennik transakcji
●
SPT odtworzy dane na podstawie dziennika
transakcji po awarii systemu.
●
Jest używany w każdej strategii dokonywania
kopii zapasowej i odtwarzania.
●
Poziomy izolacji – odzwierciedlają zależności
między współbieżnością a spójnością, np.
„niezatwierdzony odczyt”
Zarządzanie słownikiem
●
Administrator bazy danych:
●
Tworzy grupy użytkowników;
●
Określa ich hasła;
●
Przydziela uprawnienia do danych i operacji dla
każdej grupy użytkowników.
●
●
Informacje te zapisywane są do tabel
systemowych.
Informacje o wykonywanych przez
użytkowników instrukcji definicji danych są
zapisywane w słowniku danych.
Słownik danych
Przechowuje następujące informacje w
zbiorze tabel:
●
Opis relacji w BD: nazwy relacji, nazwy kolumn,
typy danych kolumn, charakterystyki null kolumn;
●
Deklaracje kluczy głównych i obcych;
●
Opis perspektyw;
●
Deklaracje grup użytkowników i uprawnień;
●
Informacje na temat indeksów, rozmiarów plików,
struktur plików i klastrów.
Zarządzanie zapytaniami
Zapytanie sformułowane w SQL podlega etapom:
●
●
●
●
●
Sprawdzania poprawności składniowej – analiza
składniowa;
Sprawdzania poprawności względem informacji ze słownika
bazy danych, np. sprawdza się poprawność nazw kolumn
i tabel;
Optymalizacji – następuje przetłumaczenie zapytania
użytkownika na plan wykonania, który jest tworzony z
uwzględnieniem struktur danych i indeksów
zadeklarowanych dla danego SZBD;
Wykonanie;
Wyniki zwracane są do użytkownika lub użytkownik
otrzymuje komunikaty o błędach.
Optymalizacja zapytania
Wypisać nazwisko pracownika i nazwę zespołu,
zatrudnionego w zespole o identyfikatorze 100.
SELECT p.nazwisko, z.nazwa
FROM pracownik p, zespol z
WHERE p.id_zesp = z.id_zesp AND
z.id_zesp = 10;
Wykonanie
●
●
●
●
●
●
Sposób I
Utwórz połączony rekord informacji o
pracownikach i zespołach;
Wyznacz w powstającej tabeli te rekordy, które
mają identyfikator zespołu równy 10.
Sposób II
Wyznacz w tabeli zespół rekord o identyfikatorze
10;
Uzgodnij wynik z tabelą pracownik korzystając z
otrzymanego identyfikatora zespołu.
Koszt
Dla 100 rekordów w tabeli zespół i 1000 w tabeli
pracownik, gdzie 10 występuje tylko 50 razy:
●
Sposób I:
●
Odczytaj 1100 rekordów i zapisz na dysk 100 x 1000
rekordów;
●
Odczytaj 100 000 rekordów i utwórz w pamięci
głównej tabelę z około 50 rekordami, z których można
odczytać nazwiska pracownika i nazwę zespołu.
●
W sumie 1100 + 100 000 + 100 000 = 201 100
operacji we-wy.
Koszt
●
Sposób II
●
Odczytaj 1000 rekordów i utwórz w pamięci
głównej tabelę z około 50 rekordami;
●
Odczytaj 100 rekordów i utwórz złączenie
informacji na temat zespołów z informacją na
temat pracowników;
●
Wypisz nazwiska pracowników biorąc je z
rekordów w pamięci głównej.
●
W sumie: 1100 + 100 = 1200 operacji we-wy.
Proces optymalizacji
●
●
Optymalizatory oparte na składni (lub inaczej na
heurystyce) – wybierają plan wykonania oparty na
podstawie składni SQL, np. postać i kolejność
warunków w klauzuli WHERE;
Optymalizatory oparte na statystyce (lub inaczej na
koszcie) – dwa różne składniowo, ale semantycznie
podobne zapytania zostaną przekształcone w tę
samą postać bazową. Plan wybierany jest w oparciu o
definicję tabel, kolumn i indeksów w słowniku danych
biorąc również pod uwagę statystyki, np. rozmiary
plików. Zużywa więcej zasobów i opiera się na
statystykach SZBD, które muszą być aktualizowane.
Kopia zapasowa i odtwarzanie
●
●
●
●
DBA po awarii, np. uszkodzenie dysku, musi odtworzyć
dane z wcześniej wykonanej kopii zapasowej, np. z
pamięci zewnętrznej. DBA sporządza również kopię
dziennika transakcji.
Kopię uzyskujemy z pomocą narzędzi SZBD.
Proces kopiowania jest czasochłonny i często wymaga
zawieszenia zwykłego użytkowania.
Niektóre SZBD dostarczają narzędzi do przyrostowego
sporządzania kopii zapasowych, bez konieczności
zawieszenia użytkowej pracy SZBD.