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.