(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