Ochrona integralności bazy
danych
dwie podstawowe formy
zabezpieczenia w RBD:
1. mechanizm transakcji
2. więzy integralności
Po co transakcje? – Współbieżność
Zagrożenie dla integralności bazy gdy wiele procesów działa jednocześnie na BD
Wynik powinien być 130 a jest 120
Działając równolegle i nie synchronizując swoich akcji jedna
aktualizacja została zgubiona.
Zeg
ar
Wpłata klienta A
Wpłata klienta B
Stan
kont
a A
Stan
kont
a B
1
Odczyt stanu konta
= 100
-
100
-
2
Odczyt stanu konta
= 100
100
100
3
Wpłata = 10
110
100
4
Wpłata = 20
110
120
5
Zapis stanu konta =
110
110
120
6
Zapis stanu konta =
120
-
120
Po co transakcje? – Współbieżność
c.d.
Inny przykład: mamy 4-ch autorów, którzy równolegle aktualizują pewien tekst.
Jeżeli nie umówią się, który z nich aktualnie ma prawo wprowadzać poprawki, to
część poprawek może zostać zgubiona.
Transakcje umożliwiają zachowania spójności w takiej sytuacji
bez potrzeby umawiania się.
Zega
r
Zakup klienta A
Zakup klienta B
1
Odczyt stanu magazynu
= 100
-
2
Klient się zastanawia
Odczyt stanu magazynu
= 100
3
Klient zamawia 70
sztuk
Klient zamawia 50
sztuk
4
Zapis nowego stanu
=30
Zapis nowego stanu
=50
Przykre konsekwencje:
1. Klienci mogą nie otrzymać towaru bo go zabraknie w
magazynie
2. Stan magazynowy jest fałszywy i następni klienci dalej
wykonują zakupy
Po co transakcje? - Przeciwdziałanie
awariom
W systemie bankowym następują operacje na kontach klientów:
1. Klient wczytuje kartę magnetyczną i jest rozpoznawany
2. Klient określa sumę wypłaty
3. Konto klienta jest sprawdzane
4. Konto jest zmniejszane o sumę wypłaty
5. Wysyłane jest zlecenie do kasy
6. Kasjerka odlicza sumę wypłaty od stanu kasy
7. Kasjerka wypłaca klientowi pieniądze
Pytanie: co się stanie, jeżeli pomiędzy operacją 4 i 5 zabraknie zasilania?
Konto zostało zmniejszone, klient nie dostał pieniędzy,
zaczyna się awantura,...
Transakcje umożliwiają uniknięcie tego rodzaju
nieprzyjemnych sytuacji
związanych z dowolnymi awariami sprzętu, błędów w
oprogramowaniu i innych okoliczności losowych.
Własności transakcji: ACID
A
C
I
D
Atomowość (atomicity) - w ramach jednej transakcji
wykonują się albo wszystkie operacje, albo żadna. Jeśli nie
powiedzie się jedno polecenie wycofywane są wszystkie.
Spójność (consistency) - o ile transakcja zastała bazę
danych w spójnym stanie, po jej zakończeniu stan jest
również spójny. (W międzyczasie stan może być chwilowo
niespójny)
Izolacja (isolation) - transakcja nie wie nic o innych
transakcjach i nie musi uwzględniać ich działania.
Czynności wykonane przez daną transakcję są niewidoczne
dla innych transakcji aż do jej zakończenia.
Trwałość (durability) - po zakończeniu transakcji jej skutki
są na trwale zapamiętane
i nie mogą być odwrócone przez zdarzenia losowe (np.
wyłączenie prądu)
Zachowanie własności ACID dla transakcji jest zadaniem
SZBD
Rodzaje transakcji
Rodzaje transakcji
1.Transakcje jawne – konfigurowane przez
użytkownika
2.Transakcje niejawne i automatyczne
Transakcje jawne
BEGIN TRANSACTION
Treść transakcji
Wykonanie zakończone powodzeniem
COMMIT TRANSACTION (potwierdzenie
zakończenia transakcji)
Wykonanie zakończone niepowodzeniem
ROLLBACK TRANSACTION (wycofanie transakcji i
cofnięcie bazy do stanu sprzed jej rozpoczęcia)
Przykład – MS SQL
Begin transaction
Update towary set cena = cena
*1.1 -- podniesienie cen
wszystkich towarów o 10%
IF @error >0
Rollback transaction
Else
Commit transaction
Etapowanie transakcji
Możliwe jest także etapowanie transakcji przy pomocy tzw.
Savepoints
Po utworzeniu takich punktów można wtedy wycofać
transakcję do ustalonego punktu
BEGIN transaction
UPDATE towary set cena = cena *1.1 where cena <100
podniesienie cen towarów tańszych niż 100 o 10%
SAVE transaction poaktualizacji1
UPDATE towary set cena = cena *0.9 where cena >110 –
obniżenie cen towarów droższych niż 110 o 10%
IF @error >0
ROLLBACK transaction poaktualizacji1
ELSE
COMMIT transaction
Transakcje niejawne i
automatyczne
Transakcje niejawne i automatyczne
tworzy SZBD w celu wykonania
niektórych operacji np. operacji
DELETE lub UPDATE. Przed
rozpoczęciem wykonywania tych
poleceń automatycznie otwierane są
transakcje. W przypadku przerwania
tych operacji BD powraca do stanu
sprzed rozpoczęcia wykonywania
polecenia.
Podsumowanie transakcji
1. Transakcje są jednym z najprostszych i najbardziej
skutecznych środków zapewnienia bezpiecznego
współbieżnego dostępu do wspólnej bazy danych.
2. Transakcje mogą być uważane za prosty i w miarę
uniwersalny środek synchronizacji równoległych
procesów (bez semaforów, monitorów, kanałów i innych
trudnych pojęć). Synchronizacja polega na
uniemożliwieniu jednoczesnej aktualizacji tych samych
zasobów.
3. Jednocześnie, transakcje maja zdolność
przeciwdziałania losowym awariom.
4. Brak środków przetwarzania transakcji w takich
systemach jak LotusNotes, MS Office, czy też
systemach przepływu prac (workflows) lub pracy
grupowej jest ogromnym utrapieniem, które w dużym
stopniu dyskwalifikuje te narzędzia.
5. Transakcje są szczególnie istotne w systemach
rozproszonych baz danych lub w systemach opartych o
Internet lub Intranet.
(K.Subieta)
REGUŁY I WIĘZY
INTEGRALNOŚCI
Dla zapewnienia zgodności zawartości bazy
z rzeczywistością oraz jej funkcjonowania
zgodnie
z
przebiegającymi
w
rzeczywistości procesami należy na BD
nałożyć określone prawa.
Integralność BD to bowiem jej własność
bycia dokładnym odbiciem modelowanej
rzeczywistości
Reguły c.d.
Prawa, które muszą być przestrzegane podczas
użytkowania BD nazywamy więzami integralności lub
regułami.
Niektóre z reguł zawarte są w samej strukturze bazy
danych (np. już określenie typu atrybutu jest
ograniczeniem), inne zapisujemy w postaci procedur.
Wartość atrybutu też często nie może być dowolna.
Może być ona ustalona w postaci reguły odwołującej
się do konkretnych wartości lub do wartości innych
atrybutów.
Również działania na BD podlegają regułom: tworzenie
nowych krotek, modyfikacja istniejących a nawet
działania nie zmieniające stanu bazy (raporty) mogą
być wykonane tylko w określonych warunkach.
Kto/co Jest Odpowiedzialne Za
Przestrzeganie Reguł
Odpowiedzialnością za przestrzeganie reguł można
obciążyć:
• użytkownika,
• Programistę,
• SZBD.
Najwygodniejszym
sposobem
jest
zdefiniowanie
odpowiednich reguł na etapie budowy SBD i
przerzucenie obowiązku ich przestrzegania na SZBD.
Kontrola więzów polega na wyliczeniu wartości formuł dla
bieżącego stanu bazy i historii stanów poprzednich. Jeśli
wartością formuły dla któregoś z więzów jest FAŁSZ, to
bieżący stan nie zachowuje więzów integralności. Jeśli
natomiast formuły odpowiadające wszystkim więzom są
prawdziwe, to stan bieżący jest poprawny
Rodzaje reguł
Reguły działania
Dynamiczne reguły wnioskowania
Statyczne reguły wnioskowania
Statyczne reguły ograniczające
Reguły
Dynamiczne reguły ograniczające
Reguły wnioskowania
Reguły ograniczające
Reguły ograniczające
reguły ograniczające (constrains rules) – pozwalające
wyspecyfikować warunki integralności (spójności logicznej)
BD. Dzielą się one na:
– więzy statyczne (static constrains rules), które muszą być
spełnione w każdym z istniejących stanów bazy danych np.
cena towaru nie może być mniejsza od zera, płaca
pracownika nie może być mniejsza niż płaca minimalna,
pojemność silnika samochodu osobowego jest zawsze z
przedziału [500, 5000], nie można przypisać pojazdowi
marki nie wpisanej do słownika marek, itp.,
– reguły przejścia (transitions constrains rules), które
określają warunki dokonania zmiany stanu bazy np. stawka
pracownika nie może spadać. Mogą one wyrażać również
bardziej złożone zależności.
Reguły wyprowadzania
reguły wyprowadzania (derivation rules) – są wyrażeniami, które
definiują własności nie zapisane wprost w bazie, ale które
mogą być z niej wywiedzione. Musi istnieć dokładnie jedna
reguła wnioskowania dla każdej takiej własności. Reguły
wnioskowania dzielą się na:
• statyczne
reguły
wyprowadzania
–
pozwalają
na
wyprowadzenie (wyliczenie) wartości atrybutów z wartości
istniejących np. wartość brutto towaru jest iloczynem jego
aktualnej ilości, ceny sprzedaży oraz podatku VAT,
• dynamiczne
(temporalne)
reguły
wyprowadzenia
–
umożliwiające wyliczanie wartości z co najmniej dwóch różnych
stanów bazy np. cena sprzedaży promocyjnej to średnia z
trzech ostatnich zakupów klienta powyżej 10 sztuk towaru
Reguły działania
•
Reguły działania (aktywacji) tzw. reguły wyzwalaczy,
określające warunki uruchomienia odpowiednich
procedur. Reguły wyzwalaczy zawierają zbiór
warunków, w tym warunków temporalnych, które
muszą być spełnione, aby dana procedura mogła
być uruchomiona. Przykład: Jeśli ilość materiału X
jest mniejsza niż Y uruchom procedurę tworzenia
zamówienia na ten materiał.
Implementacja reguł
Statyczne ograniczające – właściwie wszystkie SZBD
Dynamiczne ograniczające:
W SZBD ORACLE w wyzwalaczach związanych z
operacjami INSERT i UPDATE można odwołać się do
wartości istniejącej w bazie poprzez prefix :OLD,
natomiast do wartości wprowadzanej poprzez
prefix :NEW.
W MS SQL Server możliwe jest wykorzystanie dwóch
wartości, ponieważ w czasie wykonywania transakcji
przechowywane są one w dwóch specjalnych
tabelach. Tabela DELETED przechowuje wartości już
istniejące w bazie natomiast tabela INSERTED
zawiera wartości proponowane.
Schemat stosowania reguł
BD
zdarzeni
e
Sprawdzen
ie
możliwości
obsługi
zdarzenia
Wykonanie
działań
Odrzuceni
e żądania
BD w
nowym
stanie
Zadania systemów
transakcyjnych
1. Celem działania systemów transakcyjnych jest
rejestrowanie zdarzeń lub wspomaganie terminowej
reakcji na zdarzenia występujące w otoczeniu oraz
ich terminowe przygotowanie i generowanie.
2. Systemy transakcyjnych baz danych wspomagają
zatem zmianę bieżącego stanu organizacji na nowy,
zgodny z wymuszeniem wygenerowanym przez
zdarzenie.
3. Systemy te muszą (i to niemal natychmiast)
odpowiadać na pytania dotyczące aktualnego stanu
rzeczywistości, gdyż od otrzymanej informacji
zależy możliwość realizacji ewentualnej transakcji.
Zadania systemów
transakcyjnych c.d.
• Informowanie o stanach bieżących
• Systematyczne raportowanie
• Udostępnianie zdefiniowanych list
i zbiorów informacji (np. list płac)
• Obsługa rutynowych i
powtarzalnych operacji
Cechy systemów transakcyjnych
• są zdolne do reakcji na sygnały zachodzące w otoczeniu, ale w
bardzo ograniczonym zakresie posiadają zdolności do operowania
informacją historyczną,
• ze względu na odgrywaną w przedsiębiorstwie rolę można je
określić jako systemy odpowiedzialne za reakcję na zdarzenia lub
systemy obsługi zdarzeń. Są również jako systemy sterowane
zdarzeniami (event-driven). Podejście to jest zgodne z rozwijanym
paradygmatem traktowania systemów wspomagających działalność
gospodarczą w kategoriach systemów czasu rzeczywistego – wobec
coraz burzliwszego otoczenia, w jakim muszą one pracować,
• pamięć takiego systemu jest ograniczona do historii realizacji
konkretnej transakcji (sprzedaży, produkcji, montażu itp.).
• do utrzymania bazy w stanie spójności logicznej wystarczają
wyłącznie statyczne reguły integralności.
Przykład zadań z dziedziny
sprzedaży
Z punktu widzenia użytkownika końcowego istotne jest
jedynie czy dostępna jest taka ilość towaru, jakiej domaga
się klient. Nie jest ważne jakie były w przeszłości ceny
sprzedaży tego towaru a jedynie, po jakiej cenie ma być
dokonana aktualna transakcja. Odpowiedzi na inne pytania:
Jak zmieniały się ceny towaru?, Jaki jest przewidywany
kierunek tych zmian? Jakie ceny oferował poprzedni
dostawca?, Dlaczego towaru jest tak mało/dużo?, Jaka jest
średnia wielkość zakupu towaru? – są z punktu widzenia
realizacji kolejnych transakcji nieistotne.
Transakcja
Ewentualne
utworzenie
kopii
Zdarzenie
Transakcja
Ewentualne
utworzenie
kopii
Zdarzenie
Transakcja
Ewentualne
utworzenie
kopii
Zdarzenie
Transakcja
Nowoczesne systemy
transakcyjne
Budując nowoczesne systemy transakcyjne uwzględnia się również
zagadnienia:
• działań w grupie,
• grupowego podejmowania decyzji,
• interakcji człowieka z komputerem,
• automatyzacji biura,
• wizualizacji i automatycznego przetwarzania dokumentów,
• organizacji obiegu dokumentów,
• nowoczesnych środków wymiany informacji itp.
W ten sposób zakres działania systemów transakcyjnych został
rozszerzony na wspomaganie zespołów ludzkich poprzez
porządkowanie,
organizowanie,
automatyzowanie,
przekazywanie i śledzenie prac realizowanych przez zespół.
Systemy MRP, ERP (Material
Requirement Planning / Enterprise
Requirement Planning)
planowanie i zarządzanie procesami technologicznymi według zasady
Just in Time, a w tym:
planowania dostaw i zużycia materiałów,
kontroli zabezpieczenia potrzeb materiałowych produkcji,
automatycznego regulowania poziomu zapasów, łącznie z
wystawianiem zamówień i zgłaszaniem upłynnienia,
sterowania zaopatrzeniem, zapasami i dostawami, a w tym:
kontroli realizacji i rozliczania dostaw,
rozliczania inwentaryzacji,
limitowania zużycia materiałów,
sygnalizowania zużycia ponadnormatywnego,
racjonalizacji transportu i składowania materiałów,
wsparcia wszechstronnej analizy gospodarki materiałowej,
planowania i sterowania wykorzystaniem zdolności produkcyjnych,
bieżącego zarządzania finansami w przedsiębiorstwie.