(do wykladu 9)
Transkrypt
(do wykladu 9)
Politechnika Wrocławska Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład IX Paweł Skrobanek C-3, pok. 323 e-mail: [email protected] Politechnika Wrocławska INTERNETOWE BAZY DANYCH PLAN NA „DZIŚ”: 0. Ciekawostka 3. Transakcje 4. Blokowanie rekordów Politechnika Wrocławska 0. Ciekawostka INFORMACJA (http://www.pwr.wroc.pl ) „Specjaliści z Politechniki Wrocławskiej pracujący pod kierunkiem prof. Mirosława Kutyłowskiego odkryli słabe punkty protokołów SSL/TSL i SSH (…)” Zatem: •możliwość odszyfrowania wszystkich komunikatów wysyłanych (po zainfekowaniu wirusem ), •konieczność zastosowania kluczy znanych twórcy wirusa. Politechnika Wrocławska 1. Transakcje TRANSAKCJA (ang. transaction) - niepodzielne „działanie” na bazie danych Przy czym przez „działanie” rozumiemy pojedynczą operację lub zbiór operacji od umownego znacznika początku do zatwierdzenia. Politechnika Wrocławska 1. Transakcje Początek transakcji Wykonanie operacji Zatwierdzenie transakcji (commit) Rys.1. Typowy schemat transakcji Politechnika Wrocławska 1. Transakcje Cechy transakcji: • niepodzielność (ang. atomicity) – może być wykonana w całości, • spójność (ang. consistency) – stan bazy danych może być tylko z przed lub po transakcji (nie może obejmować zapisu części operacji), • niezależność (ang. isolation) – transakcje są odseparowane od siebie, Politechnika Wrocławska 1. Transakcje Cechy transakcji cd.: • trwałość (ang. durability) – jeśli nastąpi awaria w trakcie wykonywania transakcji, to istnieje możliwość odtworzenia stanu bazy danych z przed lub po transakcji (jeśli została zatwierdzona) Politechnika Wrocławska 1. Transakcje - uwagi Mechanizm kronikowania (ang. journalling) - dane na bieżąco zapisywane są do „kroniki”, np. z wykorzystaniem tymczasowego pliku na dysku (jeśli przerwany zostanie zapis danych z kroniki, to po „przywróceniu systemu do pracy” nastąpi dokończenie zapisu. Przykład algorytmu zatwierdzania transakcji: http://en.wikipedia.org/wiki/Two-phase-commit_protoc http://www.vermicelli.pasta.cs.uit.no/ipv6/students/andrer/d Politechnika Wrocławska 1. Transakcje Przykład 1: UPDATE ludzie SET filia=3; Co się stanie, jeśli będzie aktualizowanych np. 1000 rekordów, a operację przerwiemy (awaria)? Typowo: dla żadnego z nich nie będzie zmian. UWAGI: • rozpoczęcie oraz zatwierdzenie – automatycznie, • tak będzie w typowych, renomowanych produktach (np. postgreSQL), ale czy w każdej bazie - trzeba sprawdzić dokumentację! Politechnika Wrocławska 1. Transakcje Przykład 2 (PostgreSQL): Bond przeszedł na naszą stronę (skrypt lub linia komend); BEGIN WORK; INSERT INTO agenci_nasi VALUES (007); DLETE FROM agenci_do_odzysku WHERE ID = ‘007’; COMMIT WORK; Politechnika Wrocławska 1. Transakcje Przykład 3 (Oracle): Bond przeszedł na naszą stronę Politechnika Wrocławska Proponuję prześledzenie wprowadzania zabezpieczeń (nie zdążyliśmy ostatnio – informacja na kartce), decydujemy się na: • ja demonstruję – wszyscy śledzą, • razem wykonujemy Politechnika Wrocławska Przydatne strony podręcznika: http://php.net.pl/manual/pl/function.getenv.php http://php.net.pl/manual/pl/ref.session.php http://php.net.pl/manual/pl/language.variables.predefined.php http://php.net.pl/manual/pl/reserved.variables.php#reserved.variables.en http://php.net.pl/manual/pl/function.exit.php Politechnika Wrocławska 2. Blokowanie rekordów BRAK REKORDU BLOKOWANIE BAZY TABELI OBSZARU Politechnika Wrocławska 2. Blokowanie rekordów BLOKOWANIE AUTMATYCZNE (domyślne ustawienia SZBD) USTALONE ( przez użytkownika np. - opcje formularza (ACCESS), - polecenie SQL (SELECT … FOR UPDATE) - polecenie lock /unlock Politechnika Wrocławska 2. Blokowanie rekordów Przykład (access): • formularz pozwala na opcje: bez blokowania, edytowany rekord, wszystkie rekordy Ale np. wg. [1] nie działa blokowanie rekordu w tabelach połączonych z serwera SQL, a we wcześniejszych wersjach tylko możliwość blokowania obszaru o wielkości 2kB (strona). Więcej informacji, np.: [1] http://main2.amu.edu.pl/~mhanckow/pwsb_bd08.htm Politechnika Wrocławska 2. Blokowanie rekordów Przykład (język SQL): BEGIN WORK; SELECT * FROM pensjonariusze WHERE wiek>100 FOR UPDATE; UPDATE pensjonariusze SET premia = 100 WHERE wiek>100; COMMIT WORK; Uwagi: • możliwość ręcznego blokowania polecenie LOCK, • unikanie deadlock (np. dla transakcji – mechanizm auto - ROLLBACK WORK). Politechnika Wrocławska 2. Blokowanie rekordów IF mamy jeszcze czas THEN sprawdźmy, co będzie jak wszyscy zaczniemy edytować jeden rekord w naszej bazie danych