Doc. dr inż. Maria Chałon. Ochrona i bezpieczeństwo danych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Doc. dr inż. Maria Chałon. Ochrona i bezpieczeństwo danych"

Transkrypt

1 Doc. dr inż. Maria Chałon Ochrona i bezpieczeństwo danych

2 Integralność baz danych Integralność (ang.data integrity) to formalna poprawność bazy danych, jej fizycznej organizacji, zgodność ze schematem bazy danych i regułami dostępu..

3 Integralność baz danych. Odpowiednie mechanizmy zabezpieczające przed skutkami przypadkowych błędów logicznych, konfliktów we współbieżnym dostępie do danych oraz skutkami awarii oprogramowania i sprzętu komputerowego. System integralny to taki, który dostarcza nam wiarygodne dane i jest zabezpieczony przed nieautoryzowaną modyfikacją informacji. Systemy baz danych powinny zapewniać możliwość sprawdzania i ewentualnej korekty wprowadzanych danych oraz powinny zawierać odpowiednie mechanizmy zapewniające prawidłowe przetwarzanie danych.

4 Integralność to zapewnienie kompletności, poprawności i wiarygodności danych zgromadzonych w bazie. Proces ochrony integralności obejmuje: * kontrolę danych wejściowych oraz synchronizację dostępu do danych, * poprawianie czyli korektę danych, cofanie i odtwarzanie stanu bazy, * archiwizacje poprzez tworzenie kopii bazy oraz zapisów działania systemu, * testowanie czyli sprawdzanie poprawności zawartości bazy.

5 Pojęcie integralności obejmuje integralność statyczną i transakcyjną. Źródłem naruszenia integralności statycznej są błędy logiczne w danych oraz brak poprawnie skonstruowanego schematu bazy danych. Zagrożeniem integralności transakcyjnej są awarie oprogramowania i sprzętu oraz współbieżny dostęp do danych.

6 Integralność statyczna Integralność statyczna dotyczy poprawnie zaprojektowanego schematu bazy danych jak również spełnienia ograniczeń nałożonych na wartości atrybutów opisujących obiekty w bazie. Wyróżniamy: INTEGRALNOŚĆ SEMANTYCZNĄ INTEGRALNOŚĆ ENCJI INTEGRALNOŚĆ REFERENCZJNĄ

7 Integralność semantyczna. Jeżeli wartości danych spełniają wcześniej zdefiniowane i nałożone ograniczenia wówczas mówimy, że zachowana jest integralność semantyczna. Niżej podano opisany w języku SQL przykład zapewnienia integralności semantycznej w bazie relacyjnej. Przykład 1. CREATE TABLE Studenci (NrIndeksu Number(5) NOT NULL UNIQUE; NazwiskoStud Varchar (15); NazwaWydziału Varchar (20); Stypendium Decimal (7,2); PRIMARY KEY (NrIndeksu)); CHECK (NrStud BETWEEN 10 AND 500);

8 Na przykład utrata integralności semantycznej może wynikać z: niewłaściwej wartości pola danych ( np. wiek 200 lat), niezgodności między wartościami pól tej samej jednostki danych, niespójności między polem jednostki, a polem jednostki połączonej, obecności pustych pól, nieważnych wartości. Zapewnienie integralności semantycznej ma na celu zabezpieczenie danych przed celową lub przypadkową błędną modyfikacją danych, a więc odrzucenie wszelkich akcji powodujących niespójność bazy lub uruchomienie akcji, które przywracają poprawność i spójność bazy.

9 Integralność można wymusić w sposób deklaratywny poprzez więzy integralności oraz w sposób proceduralny poprzez tzw. wyzwalacze (ang. triggers). Więzy integralności są to pewne warunki, które muszą być spełnione poprzez określony podzbiór danych w bazie. Warunki te muszą pozostać prawdziwe przy każdej operacji modyfikacji w bazie danych. Każda operacja naruszająca te więzy musi zostać anulowana. Typowy przykład narzuconych ograniczeń: wartości atrybutów w danej tabeli muszą pochodzić z określonej dziedziny. Więzy integralności dzielimy na statyczne i dynamiczne. Więzy statyczne muszą być spełnione w bieżącym i następnym stanie bazy, więzy dynamiczne, temporalne określają poprawność danych w odniesieniu do historii stanów przechowywanych w bazie.

10 Wyzwalacze są to procedury uruchamiane automatycznie przez system przy zajściu jakiegoś zdarzenia dotyczącego danego obiektu. Przykład Ich zadaniem jest kontrola poprawności wprowadzanych lub przetwarzanych danych do postaci akceptowalnej przez użytkownika. Wyzwalacze nie dopuszczają lub cofają zmiany, które naruszają zasady integralności. Utworzenie wyzwalacza polega na określeniu zdarzenia uruchamiającego wyzwalacz tabeli będącej jego celem i zaprojektowaniu akcji jaka ma ta procedura wykonać.

11 W języku SQL instrukcje INSERT, UPDATE, DELETE służą do uruchamiania procedury wyzwalacza. IF UPDATE nazwa kolumn BEGIN wyrażenie SQL END lub IF UPDATE nazwa kolumn AND UPDATE nazwa kolumn BEGIN wyrażenie SQL END

12 Akcja może być uruchamiana przed (wyzwalacz typu BEFORE) lub po (wyzwalacz typu AFTER) określonym zdarzeniu. Może też zdarzenia. chronić przed zajściem zdarzenia lub może zmienić wynik Wyzwalacz może zadziałać raz dla operacji, która go wywołuje lub wielokrotnie dla każdego wiersza ( z klauzulą FOR EACH ROW). Wykorzystanie tej klauzuli umożliwia dostęp zarówno do wartości sprzed zajścia zdarzenia (OLD. atrybut relacji) jak i do nowych wartości atrybutu (NEW. atrybut relacji) powstałych w wyniku wstawienia, modyfikacji czy skreślenia wiersza w trakcie zdarzenia.

13 ALTER TRRIGER DELETE Klient; ON Klient FOR DELETE; AS; BEGIN; DELETE FROM Polisa; WHERE Polisa.ubezpieczony.nr = Klient.klient.nr; END Przykłady wyzwalaczy ALTER TRRIGER policz przychody; ON Ksiega przychodu FOR INSERT; AS; BEGIN; UPDATE Ksiega przychodu SET; Przychód=składka*Prowizja/100; END

14 Wyzwalacze mogą zagnieżdżać w sobie inne wyzwalacze. Każdy wyzwalacz może uruchamiać inny. Liczba poziomów zagnieżdżenia zależy od systemu. Bardzo efektywnym mechanizmem zabezpieczającym integralność danych są procedury składowane. Poprzez te procedury realizowany jest dostęp do danych. Są one wywoływane bezpośrednio przez aplikacje klienta. Klient poprzez podanie nazwy i parametrów wywołuje procedurę, która sprawdza, czy wprowadzone zmiany nie naruszają integralności semantycznej.

15 Integralność encji i integralność referencyjna. Integralność encji zapewnia się na etapie definiowania schematu bazy danych. Przykład CREATE TABLE Studenci (NrIndeksu Number(5) NOT NULL UNIQUE; NazwiskoStud Varchar (15); NazwaWydziału Varchar (20); Stypendium Decimal (7,2); PRIMARY KEY (NrIndeksu));

16 W schemacie bazy danych tablice powiązane są między sobą kluczami Powiązania te realizowane są przez klucze obce (ang. FOREIGN KEY). Powiązania między kluczami encji pociągają za sobą konieczność określenia reguł postępowania w wypadku wykonywania operacji na tabelach nadrzędnych w stosunku do innych tabel. To właśnie integralność referencyjna określa stany w jakich może znajdować się wartość klucza obcego w danej tabeli. Wartość klucza obcego w danej tabeli musi być albo równa wartości klucza głównego w tabeli z nią powiązanej, ewentualnie wartości NULL. Niżej podano przykłady zapewnienia integralności referencyjnej w języku SQL.

17 Przykład CREATE TABLE Wydziały; (NazwaWydziału Char (15); RokStudiów Smallint; KodKursu Char (3); NrStud Number (5); PRIMARY KEY (NazwaWydziału); FOREIGN KEY(NrIndeksuIDENTIFIES Studenci); ON DELETE SET NULL; ON UPDATE CASCADE)

18 Przykład CREATE TABLE Wydziały; (NazwaWydziału Char (15); RokStudiów Smallint; KodKursu Char (3); NrStud Number (5); PRIMARY KEY (NazwaWydziału); FOREIGN KEY(NrIndeksu IDENTIFIES Studenci); DELETE RESTRICTED; ON UPDATE CASCADE)

19 Definicja dwóch tabel z uwzględnieniem więzów integralności oraz określenie asercji czyli więzów niezależnych od tabeli i dziedziny podano w przykładzie. Przykład 5 CREATE TABLE Grupy; (NrGrupy Integer (2), NOT NULL UNIQUE, NazwaGrupy Varchar (30), NrStarGrupy Integer (2), PRIMARY KEY (NrGrupy));

20 CREATE TABLE Studenci; (NrIndeksu Integer(2), NOT NULL, Nazwisko Varchar (20), Adres Varchar (50), DataRozp.Stud DATE DEFAULT Sysdate, Stypendium Decimal (8,2), NrGrupy Integer (2); PRIMARY KEY (NrIndeksu); FOREIGN KEY (NrGrupy); REFERENCES Grupy; ON UPDATE CASCADE; ON DELETE SET NULL; CHECK (NrStud BETWEEN 10 AND 500);

21 CREATE ASSERTION MinStypendium; AFTER INSERT ON Studenci; UPDATE OF Stypendium ON Studenci; CHECK ( NOT EXIST (SELECT * FROM Studenci WHERE Stypendium > 700)); Dzięki więzom asercji uniemożliwia się przyznanie studentom zbyt niskich stypendiów. Innym sposobem zachowania integralności referencyjnej są wspomniane wyżej procedury zwane wyzwalaczami.

22 Integralność w różnych modelach baz danych. Jeżeli mamy do czynienia z obiektową bazą danych to problem integralności jest bardziej skomplikowany niż miało to miejsce w bazach relacyjnych. W bazie obiektowej każdy obiekt musi mieć unikatowy identyfikator w bazie. Ponieważ dostęp do obiektów odbywa się za pomocą metod tych obiektów ograniczenia integralności muszą być definiowane poprzez pewne warunki umieszczone w treściach metod. Integralność danych wynika ze związków między obiektami i klasami.

23 Model obiektowy obejmuje cztery rodzaje integralności: * integralność klasa-klasa- nadklasa nie może być usunięta dopóki nie zostaną usunięte powiązane z nią podklasy, * integralność klasa-obiekt -klasa nie może być usunięta dopóki nie zostaną usunięte powiązane z nią obiekty, * integralność dziedziny- atrybuty są definiowane na wcześniej utworzonych klasach lub na zbiorach identyfikatorów obiektów, * integralność referencyjna- ponieważ klasy mogą być powiązane z innymi klasami poprzez związki, to w modelu obiektowym mamy do czynienia z integralnością referencyjną podobną do integralności referencyjnej w modelu relacyjnym.

24 Ciekawostkę stanowią bazy temporalne, czyli modelujące historię zmian rzeczywistości. Model temporalny to model uwzględniający czas rejestracji danych oraz rzeczywisty czas zajścia zdarzeń. Temporalne więzy integralności określają poprawność danych zarówno dla bieżącego stanu bazy danych jak i stanów poprzednich i przyszłych. Ogólnie są one przydatne wszędzie tam, gdzie są istotne zależności czasowe między danymi. Np. można zadać taki warunek: pensja pracownika nie może wzrosnąć o więcej niż 12% w ciągu 4 kolejnych posiedzeń zarządu. W bazach statycznych możliwe jest tylko sprawdzenie warunku czy np. pensja pracownika nie może wzrosnąć jednorazowo o więcej niż 12%. Do specyfikacji temporalnych więzów integralności stosowana jest logika temporalna. Wykorzystuje ona operatory odnoszące się do przeszłości. Jeżeli chce się dołączyć nowy stan należy zweryfikować poprzednie, jeżeli są spełnione to nowa historia stanów jest zapamiętana.

25 Integralność transakcyjna Transakcja jest to ciąg operacji wykonywanych na danych w bazie, inaczej mówiąc ciąg instrukcji języka SQL tworzących pewną całość. Transakcja od momentu jej rozpoczęcia, aż do chwili jej zakończenia może znajdować się w jednym z pieciu stanów: aktywna, częściowo zatwierdzona, zatwierdzona, nieudana, odrzucona. Transakcja może zakończyć się: -powodzeniem, wówczas jest zatwierdzana (ang. Commit), -niepowodzeniem, wówczas jest odrzucana (ang. Abort), lub wycofywana (ang. Rollback)

26 Transakcja powinna posiadać następujące cechy: * niepodzielność (ang. Atomicity) gwarantuje, że transakcja musi być wykonana w całości lub całkowicie anulowana, * spójność (ang. Consistency)- zapewnia nienaruszalność zasad integralności, czyli baza po operacji musi być spójna, * izolacja (ang. Isolation)-mówi nam o tym, że dane, które są modyfikowane przez jedną transakcję przed jej zakończeniem muszą być niedostępne dla innych transakcji, * trwałość (ang. Durability)- gwarantuje, że po pomyślnym zakończeniu transakcji zmiany w bazie będą na stałe zapisane i nie zostaną utracone w wyniku jakiejkolwiek późniejszej awarii.

27 Źródłem zagrożeń dla integralności transakcyjnej są: * awarie programowe i sprzętowe zaistniałe w trakcie wykonywania transakcji. Na ogół wynikają one z utraty zawartości pamięci operacyjnej komputera, * błędy transakcji spowodowane wykonywaniem zabronionych operacji (dzielenie przez zero), czy niemożnością wykonania danej operacji ( niewystarczający stan konta), * nieprawidłowa realizacja równoczesnego dostępu do tych samych danych przez różnych użytkowników, * błędy zapisu lub odczytu danych z dysku podczas wykonywania transakcji, * zanik napięcia, zamazanie danych przez operatora, pożar, kradzież, sabotaż.

28 Utrzymanie integralności wymaga: * właściwego zarządzania transakcjami, aby po awarii przywrócić spójny stan bazy danych, * odpowiednich mechanizmów sterowania współbieżnym dostępem do danych. Można wyróżnić dwie strategie działania transakcji: -transakcje działają na własnych kopiach, które są zamieniane z oryginalnymi obiektami w fazie zatwierdzenia. Rozwiązanie to, wymagające większego obszaru pamięci, jest rzadko stosowane ze względu na wiekszą możliwość awarii. -transakcje działają bezpośrednio na bazie danych w specjalnych plikach zwanych dziennikami, potocznie nazywanych logami (ang.log). W logach zapisują wszelkie operacje aktualizacyjne, które wykonały, wraz z obiektami przed i ewentualnie po aktualizacji. W razie awarii baza jest odtwarzana poprzez analizę informacji zapisanej w logu.

29 Dzienniki transakcji. Jeżeli w wyniku awarii systemy ciąg operacji tworzących transakcje zostanie przerwany wówczas stosuje się zasadę wszystko albo nic to znaczy należy wycofać z bazy efekty częściowego wykonania transakcji. Jest to możliwe dzięki prowadzeniu dziennika transakcji zwanego w skrócie logiem. Log jest to plik, w którym rejestruje się przebieg wykonywania operacji. W logu rejestrowany jest: * identyfikator transakcji, * adresy wszystkich obiektów aktualizowanych przez daną transakcję, * wartości obiektów przed i po modyfikacji * informacje dotyczące przebiegu transakcji.

30 Dopiero po zapisaniu polecenia zatwierdzającego transakcje (ang.commit), a dokładnie punktu zatwierdzenia transakcji (ang. COMMIT POINT), wszelkie modyfikacje wykonywane przez transakcje są przepisywane do fizycznej bazy danych. Przed osiągnięciem punktu zatwierdzenia wszystkie takie aktualizacje trzeba uważać za tymczasowe, ponieważ mogą być odwołane. Technika ta zwana wyprzedzającym zapisem do logu pozwala łatwo wycofać transakcje, która nie może zostać dokończona. Czyli zostawia się stan bazy bez zmiany, pozostaje tylko poinformować użytkownika, że transakcja nie doszła do skutku.

31 Jeśli transakcja została zatwierdzona, to zmiany przez nią wprowadzone muszą być na trwałe zapamiętane w bazie, nawet jeśli wystąpiła awaria i nie zostały przepisane do fizycznej bazy. Należy wówczas ustalić, które transakcje zostały zatwierdzone, a nie przepisane do fizycznej bazy, a które nie były zatwierdzone i powinny zostać anulowane. W tym celu jest określany tzw. punkt kontrolny logu (CP) czyli punkt zapisu do logu wszystkich transakcji i uaktualnianie ich.

32 Tworzenie punktu kontrolnego polega na: * wstrzymaniu uruchomień nowych transakcji, * zaczekaniu aż wszystkie rozpoczęte transakcje wprowadzą do logu zapisy potwierdzenia<commit> lub odrzucenia <ABORT>, * przesłaniu logu na dysk, * wprowadzenie do logu zapisu <CP> i ponownym przesłaniu logu na dysk, * wznowieniu wstrzymanych transakcji. Jeśli wystąpi awaria to bada się przebieg transakcji od ostatniego punktu kontrolnego. Wszystkie transakcje, które po punkcie kontrolnym są zatwierdzone instrukcją COMMIT uaktualnia się i zapisuje się na dysku. Transakcje te mogły nie być fizycznie przepisane. Inne transakcje anuluje się stosując instrukcje ROLLBACK.

33 Można wyróżnić kilka rodzajów logów. Na szczególną uwagę zasługują * logi z unieważnieniem, * logi z powtarzaniem, * logi hybrydowe powstałe z połączenia tych dwóch typów. W logach z unieważnieniem przy odtwarzaniu likwiduje się zmiany wprowadzone przez nie zatwierdzone transakcje. Odtwarzanie odbywa się przez przywrócenie uprzednich wartości wszystkich nie zatwierdzonych transakcji. Zmiany w bazie danych muszą być zapamiętane na dysku zanim w logu na dysku zostaje zapamiętany zapis COMMIT. Dane należy zapisywać na dysk natychmiast po zakończeniu transakcji, co wielokrotnie może prowadzić do zwiększenia liczby potrzebnych dostępów do dysku.

34 W logach z trybem powtarzania ignoruje się transakcje niezatwierdzone. Zmiany wykonywane przez transakcje zatwierdzone powtarza się. Odtwarzanie obejmuje przypisanie nowych wartości ze wszystkich transakcji zatwierdzonych. Zapis COMMIT zostaje zapamiętany na dysku, zanim wartości zmienione zapisze się na dysku. Prowadzi to do konieczności przechowywania zmodyfikowanych bloków w buforach. Bloki te trzyma się aż do zatwierdzenia transakcji i zakończenia tworzenia zapisów w logu. Może to zwiększyć liczbę buforów potrzebnych przy wykonywaniu transakcji.

35 Oba typy logów mogą spowodować powstanie sprzecznych wymagań. Dotyczy to obsługi buforów w trakcie wstawiania punktów kontrolnych, o ile elementy danych nie są całymi blokami lub zbiorami bloków. Dlatego też stosuje się logi stanowiące połączenie dwóch technik: odtwarzania i powtarzania. Logi te są bardziej elastyczne w zakresie kolejności wykonywania czynności, ale z kolei wymagają zapisywania większej liczby danych do logu. Odtwarzanie polega na powtórzeniu transakcji zatwierdzonych oraz unieważnieniu transakcji nie zatwierdzonych.

36 Aby w sposób jasny i klarowny opisać efekty wykonania transakcji w warunkach awaryjnych wprowadzono pseudojęzyk oparty na komendach SQL. INPUT < X > pobieranie do bufora pamięci elementów bazy danych X z dysku OUTPUT < X > kopiowanie bufora pamięci na dysk READ < X, y > kopiowanie elementu bazy danych X do lokalnej zmiennej transakcji y WRITE < X, y > kopiowanie wartości zmiennej y do elementu bazy danych X w buforze pamięci

37 SET < X > tworzenie przez transakcje nowej wartości w swojej przestrzeni adresowej <SEND LOG> przesyłanie logu, czyli skopiowanie pliku na dysk < BEGIN T > rozpoczęcie transakcji <COMMIT T > zatwierdzenie transakcji < ABORT T > unieważnienie transakcji

38 < T, y, old w > zapis aktualizujący w logu z unieważnieniem < T, y, new w > zapis aktualizujący w logu z powtórzeniem < T, y, old w, new w > zapis aktualizujący w logu hybrydowym (z unieważnieniem/powtórzeniem)

39 < CP> punkt kontrolny < BEGIN CP ( T1, T2,...TK) > początek bezkolizyjnego punktu kontrolnego (transakcje aktywne) < END CP> koniec punktu kontrolnego

40 Ri (X) transakcja Ti czyta element z bazy danych Wi (X) transakcja Ti zapisuje element do bazy danych P(Ti,Tj) plan sekwencyjny gdy i-ta transakcja poprzedza transakcję j-tą P(Tj,Ti) plan sekwencyjny gdy j-ta transakcja poprzedza transakcję i-tą Ok(Ti) k-ta operacja i-tej transakcji, STOPi (X) blokada do odczytu zakładana przez transakcję Ti GOi (X)- zwolnienie blokady przez transakcję Ti

41 Zazwyczaj przebieg transakcji odbywa się w dwóch krokach: Krok 1. Operacja odczytania elementu bazy danych: INPUT < X > pobieranie do bufora pamięci elementów bazy danych X z dysku READ < X, y > wczytanie zawartości buforów do przestrzeni adresowej transakcji

42 Krok 2. Operacja zapisania nowej wartości elementu do bazy danych: SET < X > tworzenie przez transakcję nowej wartości w swojej przestrzeni adresowej WRITE < X, y > kopiowanie wartości zmiennej y do elementu bazy danych X w buforze pamięci OUTPUT < X > zapisanie z bufora pamięci na dysk Wszystkie trzy typy logów mają podobna postać, różnią się tylko zapisem aktualizacyjnym. Niżej przedstawiono zapis w logach dla uproszczenia przyjmując, że mamy do czynienia z jedną transakcją składającą się z dwóch elementów A i B.

43 Postać logu typu unieważnienie: < BEGIN T > < T, A, old w > < T, B, old w > <COMMIT T > Postać logu typu powtarzanie: < BEGIN T > < T, A, new w > < T, B, new w > <COMMIT T >

44 Postać logu typu unieważnienie/powtarzanie: < BEGIN T > < T, A, old w, new w > < T, B, old w, new w > <COMMIT T >

45 Cały problem polega na tym w jaki sposób i kiedy zapisuje się powstałe w wyniku transakcji zmiany na dysku. W logu z unieważnieniem nie można skopiować A i B na dysk, zanim nie znajdzie się tam log z zapisem zmian. A więc najpierw wykonujemy operacje SEND LOG. Potem dopiero następuje zapisanie wartości A i B na dysk, zatwierdzenie transakcji T, zapisanie <COMMIT T > w logu. Kolejny krok to ponowne umieszczenie logu na dysku, aby zapewnić, że zapis <COMMIT T > jest trwały.

46 W przypadku logu z powtarzaniem w zapisach logu, które opisują zmiany są nowe wartości (new w) A i B. Po zakończeniu transakcji WRITE < X, y > następuje jej zatwierdzenia <COMMIT T >. Potem log jest przesyłany na dysk < SEND LOG>, czyli wszystkie zapisy dotyczące zmian wykonywanych przez transakcję T zostają zapamiętane na dysku. Dopiero wtedy można na dysku zapamiętać nowe wartości A i B. W przypadku logu typu unieważnienie/powtarzanie istotne jest, aby zanim na dysku zapisze się zmianę wartości elementu X spowodowaną działaniem transakcji T, należy najpierw na dysk wprowadzić zapis < T, X, old w, new w >.

47 Logi z unieważnieniem. Jeżeli w wyniku awarii transakcja nie została wykonana w całości należy wówczas odtworzyć spójny stan bazy danych przy pomocy logu. Algorytm. Krok1: Badamy, czy dla danej transakcji T wykonała się operacja SEND LOG. Krok2: Jeśli TAK to przechodzimy do Kroku 8, jeśli nie to Krok3: Badamy, czy dla danej transakcji T <COMMIT T > jest zapisana na dysku. Krok4: Jeśli TAK to przechodzimy do Kroku 8, jeśli nie to Krok5: Kolejno od ostatniej komendy sprawdzamy wszystkie operacje i przypisujemy elementom stare wartości < T, y, old w >. Krok6: Do logu wprowadzamy zapis < ABORT T > Krok 7: Wykonujemy SEND LOG Krok8: STOP

48 Jeżeli w trakcie odtwarzania wystąpiła awaria to powtarzamy algorytm. Bardzo często wiele transakcji wykonuje się równocześnie. Aby określić jakie zmiany nastąpiły i w jaki sposób przywrócić spójny stan bazy danych wprowadza się punkty kontrolne. Na rysunku przedstawiono przykład realizacji w pewnym przedziale czasowym czterech transakcji T1, T2, T3, T4.

49 T T 4 COMMITT 3 T 3 T 2 T 1 COMMITT 1 t 1 t a + t 2 t a ++ t Rys.1 Przykład transakcji zapisywanych w logach z unieważnieniem. t

50 Bezkolizyjne punkty kontrolne oznaczono t1 i t2, moment wystąpienia awarii ta gdzie: t1 : < BEGIN CP (T2, T3) > t2 : < END CP > Jeśli t1< ta< t2 czyli ta =ta+ to awaria nastąpiła między punktami kontrolnymi, jeśli ta> t2 czyli ta =ta++ to awaria nastąpiła po zakończeniu punktu kontrolnego. Ograniczymy się tylko dla transakcji aktywnych w trakcie wystawiania punktu kontrolnego. A więc transakcja T1 nie jest brana pod uwagę.

51 Rozważymy 2 przypadki wystąpienia awarii, które w pełni oddają skutki awarii: 1.ta =ta+ W chwili ta+ transakcje T2, T4 są aktywne, nie zostały zakończone dlatego należy unieważnić zmiany wprowadzone przez te transakcje. Czyli wprowadzamy zapisy aktualizacyjne < T2, X, old w >, < T4, X, old w > i komendy< ABORT T2 >,< ABORT T4 >. Badając operacje od punktu ta+ wstecz ( w logu z unieważnieniem zaczynamy sprawdzanie wszystkich transakcji od końca logu) natrafiamy na punkt t1 : < BEGIN CP (T2, T3) >. Oczywiste jest, że awaria nastąpiła w tym przedziale kontrolnym. Oprócz transakcji T2, T4 tylko transakcja T3 może być nie zatwierdzona. Napotykamy jednak na zapis <COMMIT T3 >, a więc transakcja została zatwierdzona i nie bierze się jej pod uwagę. Dlatego nie ma sensu sprawdzania logu wstecz dalej niż do początku najwcześniejszej z tych transakcji w tym wypadku T2.

52 2.ta =ta++ Awaria nastąpiła w chwili ta++. Badając operacje od punktu ta++ wstecz napotkamy na koniec punktu kontrolnego w chwili t2 : < END CP >. Wiadomo, że wszystkie nie zakończone transakcje zaczęły się po poprzednim zapisie: < BEGIN CP (T2,T3) >. Sprawdzając wstecz należy uaktualnić niezatwierdzoną transakcję T4 wprowadzając <T4, X, old w>, następnie usuwamy transakcje T4 poprzez komendę <ABORT T4>. Wszystkie inne transakcje (T2,T3 ) są zatwierdzone przez <COMMIT T2 > i <COMMIT T3 > czyli nic się nie zmienia.

53 Logi z powtarzaniem. Jeżeli w wyniku awarii transakcja nie została wykonana w całości należy wówczas odtworzyć spójny stan bazy danych przy pomocy logu. Dla logów z powtarzaniem skupiamy się na transakcjach zatwierdzonych komendą COMMIT. Transakcje te należy powtarzyć. Jeśli transakcja T nie jest zatwierdzona, to znaczy, że zmiany nie zostały zapisane na dysku i traktujemy T jakby jej w ogóle nie było. Dwie różne transakcje zatwierdzone mogą zmieniać w różnym czasie wartość tego samego elementu bazy danych. Zapisy w logach sprawdzamy od najwcześniejszego do najpóźniejszego. W wypadku transakcji zatwierdzonej pojawia się problem, które zmiany zostały na dysku zapamiętane.

54 Aby odzyskać dane po awarii wykonujemy następujące kroki: Krok1: Badamy, czy dla danej transakcji Ti wykonała się operacja <COMMIT Ti >, Krok2: Jeśli NIE to przechodzimy do Krok6, Krok3: LOG. Jeśli TAK badamy, czy dla danej transakcji Ti wykonano SEND Krok4: Jeśli TAK to transakcja Ti jest zakończona, sprawdzamy log, aktualizujemy zapisy < Ti, X, new w > Krok5:Jeśli NIE (to mimo to, że zapis mógł znaleźć się w logu, ale może nie być na dysku) Ti traktujemy jako nie zakończoną i wprowadzamy zapis < ABORT Ti > Krok6: STOP

55 Na rysunku przedstawiono przykład realizacji w pewnym przedziale czasowym trzech transakcji T1, T2, T3, T COMMI T 3 COMMI T 2 T 1 COMMIT t 1 t a + t 2 t a ++ t a +++ t Rys.2 Przykład transakcji zapisywanych w logach z powtarzaniem.

56 Punkty kontrolne oznaczono t1 i t2, moment wystąpienia awarii ta gdzie: t1 : < BEGIN CP (T2, T3) > t2 : < END CP > jeśli t1< ta< t2 czyli ta =ta+ to awaria nastąpiła między punktami kontrolnymi oraz przed zatwierdzeniem transakcji T2, T3. jeśli ta> t2 są 2 przypadki a)ta =ta++ to awaria nastąpiła po zatwierdzeniu transakcji T2, i przed zatwierdzeniem transakcji T3 i po komendzie < END CP > b)ta =ta+++ to awaria nastąpiła po zatwierdzeniu transakcji T2, T3 i po komendzie < END CP >

57 Rozważymy trzy przypadki wystąpienia awarii: 1.ta =ta+ Awaria nastąpiła miedzy punktami kontrolnymi przed <END CP>. Wówczas wyszukujemy wstecz najbliższy zapis początku bezkonfliktowego punktu kontrolnego < BEGIN CP (T2, T3) >. Zbiór wszystkich transakcji to{ T2, T3 }. Ponieważ < BEGIN CP (T2, T3) > jest to jedyny punkt kontrolny to sprawdzamy cały log. Jedyną zatwierdzoną transakcją jest T1. Powtarzamy jej działanie < T1, X, new w > i po odtworzeniu do logu wprowadza się < ABORT T2 > i < ABORT T3 >

58 2.ta =ta++ Awaria wystąpiła pomiędzy komendami <COMMIT T2 > i <COMMIT T3 >. Szukamy wstecz pierwszego wystąpienia komendy <END CP>. Jest to punkt t2. Wiadomo więc, że wystarczy powtórzenie tylko tych transakcji, które zaczęły się po zapisie < BEGIN CP >, albo są ze zbioru {T2, T3}. Znajdujemy zapis <COMMIT T2 > czyli powtarzamy T2. Aktualizujemy zapisy tylko dla transakcji T2 gdzie < T2, X, new w > nic nie zmieniając dla T3. Po odtworzeniu do logu wprowadza się zapis usunięcia transakcji T3 < ABORT T3 >.

59 3.ta =ta+++ Awaria wystąpiła poza przedziałem kontrolnym. Szukamy wstecz pierwszego wystąpienia <END CP>. Jest to punkt t2. Wiadomo więc, że wystarczy powtórzenie tylko tych transakcji, które zaczęły się po zapisie < BEGIN CP (T2, T3) >, albo są ze zbioru {T2, T3}. Znajdujemy zapis <COMMIT T2 > i <COMMIT T3 >. Wiadomo, że trzeba je powtórzyć. Przeszukujemy log wstecz do napotkania rekordów: < BEGIN T2>, < BEGIN T3>, aktualizujemy wszystkie zapisy < T2, X, new w > i < T3, X, new w > dla transakcji T2 i T3. Aby uniknąć przechowywania zbyt dużej liczby informacji można w zapisie: < BEGIN CP (T1 T2. Tm) oprócz nazwy transakcji dodać wskaźnik do tych adresów w logu w których te transakcje się zaczynają.

60 Logi hybrydowe (unieważnienie/powtarzanie). Algorytm odtwarzania po awarii za pomocą logów hybrydowych polega na powtórzeniu wszystkich transakcji zatwierdzonych poleceniem <COMMIT Ti > zaczynając od najwcześniejszych. Następnie unieważniamy wszystkie nie zakończone transakcje zaczynając od najpóźniejszych.

61 T COMMITT3 T 3 COMMITT2 T 2 T 1 COMMITT 1 t 1 t a + t 2 t a ++ t a +++ t Rys.3 Przykład transakcji zapisywanych w logach hybrydowych.

62 Rozważymy trzy przypadki wystąpienia awarii: 1.ta =ta+ Awaria nastąpiła gdy obydwie transakcje T2 i T3 nie są zatwierdzone. Unieważniamy transakcje T2 i T3, aktualizujemy wszystkie zapisy <T2, X, old w > i <T3, X, old w > dla transakcji T2 i T3, cofamy transakcje T2 i T3 poprzez < ABORT T2 > i < ABORT T3 > 2.ta =ta++ Awaria nastąpiła gdy transakcja T2 jest zatwierdzona, a transakcja T3 nie jest kompletna. Powtarzamy transakcje T2, aktualizujemy wszystkie zapisy <T2, X, new w > dla transakcji T2 zapamiętując na dysku <new w>. Aktualizujemy wszystkie zapisy <T3, X, old w > dla transakcji T3 i cofamy transakcje T3 < ABORT T3 >.

63 3.ta =ta+++ Awaria nastąpiła gdy obydwie transakcje T2 i T3 są zatwierdzone. Ponieważ transakcja T1 była zatwierdzona przed < BEGIN CP >, to zakładamy, że jest zapisana na dysk. Powtarzamy transakcje T2 i T3, aktualizujemy wszystkie zapisy < T2, X, new w > i < T3,X, new w > dla transakcji T2 i T3. zapamiętując na dysku <new w>.

64 Współbieżność. W przypadku sekwencyjnego wykonywania poszczególnych transakcji baza danych zawsze będzie w stanie spójnym, jeśli oczywiście będzie zachowana semantyczna integralność. W systemach wielodostępnych, a szczególnie w rozproszonych bazach danych, zachowanie spójności przy współbieżnym wykonywaniu transakcji jest dużym problemem. Nie mniej jednak ze względu na efektywność systemu, ważne jest, aby wiele transakcji było wykonywane jednocześnie. Celem sterowania współbieżnością jest ochrona spójności bazy danych w sytuacji równoczesnego dostępu do tych samych danych przez wielu użytkowników. Wiąże się to z koniecznością zapewnienia bezkolizyjności przebiegu wielu transakcji. Jedną z metod sterowania współbieżnością jest planowanie.

65 Plany Każda transakcja Ti składa się z ciagu operacji o1 (Ti),o2 (Ti).on (Ti). Plan P={ T1, T2, Ti} jest to zbiór transakcji lub zbiór operacji uporządkowanych w czasie. Zakładamy, ze kilka transakcji może mieć dostęp do tego samego elementu bazy danych. Mówimy wtedy o współbieżności dostępu do danych.

66 Przeanalizujemy następujące przypadki: * Każda transakcja Ti wykonywana jest w całości. Zachowana zostaje zasada izolacji. Po wykonaniu transakcji Ti baza przechodzi z jednego stanu spójnego w drugi stan spójny. Wprowadzimy pojęcie planu sekwencyjnego. Plan sekwencyjny jest to taki plan, w którym wszystkie operacje jednej transakcji poprzedzają wszystkie operacje innej transakcji. Jeśli jakaś operacja on (Ti) poprzedza operacje ok (Tj) to wszystkie operacje transakcji Ti muszą poprzedzać wszystkie operacje transakcji Tj.

67 Przykład 6 Mamy dane dwie transakcje Ti i Tj. Ograniczamy się tylko do operacji na buforach READ < X, y > i WRITE < X, y > bez przepisywania informacji na dysk. Transakcja Ti składa się z następujących operacji: READ < A, x > operacja o1 (Ti). x:=x+10 operacja o2 (Ti). WRITE < A, x > operacja o3 (Ti). READ < B, x > operacja o4 (Ti). x:=x+10 operacja o5 (Ti). WRITE < B, x > operacja o6 (Ti).

68 Transakcja Tj składa się z następujących operacji: READ < A, y > operacja o1 (Tj). y:=y*2 operacja o2 (Tj). WRITE < A, y > operacja o3 (Tj). READ < B, y > operacja o4 (Tj). y:=y*2 operacja o5 (Tj). WRITE < B, y > operacja o6 (Tj). gdzie A=B=20

69 Na rysunku przedstawiono plan sekwencyjny P={Ti,Tj). Najpierw są wykonywane wszystkie operacje transakcji Ti, a potem wszystkie operacje transakcji Tj. A,B 60 transakcje T i transakcje T j t Rys. Plan sekwencyjny P={Ti,Tj).

70 Wartości początkowe A=B=20 Po wykonaniu transakcji Ti wartość A=30, wartość B=30 Po wykonaniu transakcji Tj wartość A=60, wartość B=60 Stan bazy po wykonaniu operacji jest spójny. Ciąg operacji planu jest następujący: P{Ti,Tj)=Ri(A);Wi(A);Ri(B);Wi(B);Rj(A);Wj(A); Rj(B);Wj(B);

71 Na rysunku 5 przedstawiono plan sekwencyjny P={Tj,Ti). Najpierw są wykonywane wszystkie operacje transakcji Tj, a potem wszystkie operacje transakcji Ti. A,B transakcje Tj transakcje T i t Rys. 5 Plan sekwencyjny P={Tj,Ti).

72 Wartości początkowe A=B=20. Po wykonaniu transakcji Tj wartość A=40, wartość B=40 Po wykonaniu transakcji Ti wartość A=50, wartość B=50 Stan bazy po wykonaniu operacji jest spójny A=B Ciąg operacji planu jest następujący: P{Tj,Ti)=Rj(A);Wj(A);Rj(B);Wj(B);Ri(A);Wi(A); Ri(B);Wi(B); Końcowe wartości A i B w obu planach są różne. W wyniku wykonania planu P={Ti,Tj)najpierw wykonuje się transakcję Ti a A i B uzyskują wartość 60, natomiast gdy pierwsza jest transakcja Tj w planie P={Tj,Ti) to wartość A i B wynosi 50. Końcowa wartość nie jest istotna. Ważne jest, że przy planach sekwencyjnych kolejność wykonywania operacji zależy tylko od kolejności wykonywania całych transakcji, a więc spójność jest zachowana.

73 * Transakcje nie są wykonywane w całości. Wprowadzimy pojęcie planu szeregowanego. Plan szeregowany to taki plan, którego wpływ na bazy danych jest taki sam jak planu sekwencyjnego niezależnie od stanu początkowego bazy danych. Korzystając z przykładu zawierającego transakcje Ti i Tj na rysunku przedstawiono plan szeregowany.

74 A,B transakcje Ti transakcje Tj transakcje T i transakcje Tj t Psz={Ti,Tj).

75 Wynik przetwarzania tego planu jest taki sam jak planu P={Ti,Tj). Ciąg operacji planu: P{Ti,Tj)=Ri(A);Wi(A);Rj(A);Wj(A);Ri(B);Wi(B); Rj(B);Wj(B);

76 * Transakcje nie są wykonywane w całości. Plan nie jest ani sekwencyjny, ani szeregowany. Korzystając z przykładu zawierającego transakcje Ti i Tj na rysunku przedstawiono trzeci przypadek. A,B transakcje Ti transakcje Tj transakcje Ti t Rys. 7 Plan P={Ti,Tj).

77 Wartości początkowe A =B=20, po wykonaniu operacji A=60, B=50 czyli zaczynając od stanu spójnego przechodzimy w stan niespójny. Jeśli jedna z operacji transakcji Ti działa jako pierwsza na A to również powinna działać jako pierwsza na B, Inaczej mamy do czynienia z pojawieniem się stanu niespójnego. W naszym przypadku po wykonaniu obu transakcji A=2(A+10), a B=2B+10. Ciąg operacji planu: P=Ri(A);Wi(A);Rj(A);Wj(A);Rj(B);Wj(B); Ri(B);Wi(B);

78 Konflikty Zasada poprawności bazy danych brzmi, że transakcje wykonywane w izolacji przekształcają spójny stan bazy w inny spójny stan. Stanem spójnym nazywamy stan bazy danych, w którym są spełnione wszystkie deklarowane lub ustalone przez projektanta więzy. Jeżeli nie zapewnimy izolacji transakcji mogą pojawić się następujące problemy: * brudny odczyt (ang.dirty reads) występuje wtedy, gdy wiele transakcji próbuje uzyskać dostęp do tej samej tabeli w tym samym czasie. Może zdarzyć się, że jedna transakcja modyfikuje dane, inna czyta te dane przed ich potwierdzeniem, następnie pierwsza zostaje cofnięta i stan bazy powraca do stanu sprzed zmian. Druga transakcja może póżniej próbować modyfikować tabelę w oparciu o dane uzyskane podczas odczytu, które jednak nie są już poprawne.

79 * niepowtarzalny odczyt (ang.nonrepeatable reads) występuje wtedy, gdy jedna transakcja czyta z tabeli, a potem inna transakcja modyfikuje dane w tabeli. Jeśli pierwsza transakcja próbuje potem jeszcze raz odczytać dane z tej tabeli, odczyt powoduje uzyskanie innych danych. * odczyt fantomów (ang.phantom reads) występuje wtedy, gdy jedna transakcja odczytuje dane w oparciu o pewne warunki wyszukiwania, inna transakcja modyfikuje dane w tabeli, a następnie pierwsza transakcja odczytuje dane z tabeli ponownie, opierając się na tych samych warunkach wyszukiwania. W wyniku zmiany danych w tabeli, jako rezultat wyszukiwania otrzymuje zupełnie inne dane.

80 Aby zapobiec tego typu problemom, w standardzie SQL wprowadzono cztery poziomy izolacji. Poziom izolacji to stopień w jakim dana transakcja może mieć dostęp do danych modyfikowanych przez inne transakcje przed ich zatwierdzeniem. Inaczej mówiąc jest to wymuszanie szeregowalności transakcji. Wyróżniamy poziomy: * READ UNCOMMITED- odczyt nie zatwierdzony. Jest to najmniej restrykcyjny z poziomów izolacji. Dopuszcza czytanie przez transakcje danych jeszcze nie zatwierdzonych. Jest używany do transakcji zawierających ogólne informacje, takie jak dane statystyczne, które nie powinny być modyfikowane. Poziom ten dopuszcza: brudny i niepowtarzalny odczyt oraz odczyt fantomów.

81 * READ COMMITED odczyt zatwierdzony. Poziom ten zabrania odczytu danych niezatwierdzonych, umożliwia jednak zapisywanie danych w transakcjach niezatwierdzonych. Dopuszcza występowanie niepowtarzalnych odczytów i odczytu fantomów, zabrania występowania brudnych odczytów. * REPEATABLE READ odczyt powtarzalny. Poziom ten zabrania zapisywania w transakcjach niezatwierdzonych. Jeśli więc transakcja niezatwierdzona przeczytała daną, to dana ta może być tylko czytana przez inna transakcję. Jeśli transakcja niezatwierdzona zapisała jakąś daną, to nie można jej ani odczytać, ani zapisać dopóki ta transakcja nie zostanie zatwierdzona. Poziom ten dopuszcza występowanie odczytu fantomów, jednak blokuje występowania brudnych odczytów i niepowtarzalnych odczytów.

82 * SERIALIZABLE szeregowalność czyli jedyny bezpieczny poziom izolacji. Poziom ten nie dopuszcza występowania brudnych i niepowtarzalnych odczytów oraz odczytu fantomów. Zapewnienie zachowania wysokiego poziomu poprawności danych przy jednoczesnym realizowaniu transakcji nazywamy szeregowalnością, a nawet szeregowalnością ze względu na konflikt. Sytuacje konfliktowe mogą wystąpić wtedy, gdy dwie transakcje Ti i Tj gdzie i j są zainteresowane dostępem do tego samego obiektu lub kolejność występowania operacji w transakcji zostaje zmieniona.

83 Mamy dane dwie transakcje Ti i Tj gdzie i j. Rozważymy następujące przypadki: * Odczyt (Ri(X)) Odczyt (Rj(Y)) dla X=Y i X Y. Para ta nie stanowi konfliktu ponieważ żadna z operacji odczytu Ri(X)) i (Rj(Y)) nie zmienia ani X ani Y. Każda z tych operacji może być wykonywana w dowolnej kolejności. * Odczyt (Ri(X)) Zapis (Wj(Y)) dla X Y. Para ta nie stanowi konfliktu ponieważ X nie jest zmieniane i transakcja Tj może zapisać wartość Y przed i po transakcji Ti.

84 * Zapis (Wi(X)) Odczyt (Rj(Y)) dla X Y. Para ta nie stanowi konfliktu ponieważ Y nie jest zmieniane i transakcja Ti może zapisać wartość X przed i po transakcji Tj. * Zapis (Wi(X)) Zapis (Wj(Y)) dla XY. Para ta nie stanowi konfliktu * Zapis (Wi(X)) Zapis (Wj(Y)) dla X=Y. Dwa zapisy tego samego elementu przez dwie różne transakcje Ti i Tj są konfliktem. Zmiana kolejności wykonywania operacji powoduje, że wartości wyliczane przez Ti i Tj mogą być różne.

85 * Odczyt (Ri(X)) Zapis (Wi(Y)) Odczyt i zapis tej samej transakcji stanowi konflikt. Kolejność działań danej transakcji jest ustalona i nie może być zmieniona. * Odczyt (Ri(X)) Zapis (Wj(X)) i Zapis (Wi(X)) Odczyt (Rj(X)) Odczyt i zapis oraz zapis i odczyt tego samego elementu bazy danych wykonywany przez różne transakcje stanowi konflikt. Zmiana kolejności operacji Ri(X) i Wj(X)) ma wpływ na wartość X.

86 Z przytoczonych przypadków wynika, że nie można zmieniać kolejności wykonywania operacji, jeśli dotyczą one tego samego elementu bazy danych lub co najmniej jedną czynnością jest operacja zapisu WRITE. W przykładzie 7 pokazano przekształcenie planu szeregowanego na plan sekwencyjny z r bez konfliktów. Przykład 7 Ri(A);Wi(A);Rj(A);Wj(A);Ri(B);Wi(B); Rj(B);Wj(B); zapis-odczyt x y Ri(A);Wi(A);Rj(A);Ri(B);Wj(A);Wi(B);Rj(B);Wj(B); odczyt-odczyt Ri(A);Wi(A); Ri(B); Rj(A);Wj(A);Wi(B);Rj(B);Wj(B); zapis-zapis x y Ri(A);Wi(A); Ri(B); Rj(A); Wi(B); Wj(A);Rj(B);Wj(B); zapis-odczyt x y Ri(A);Wi(A);Ri(B);Wi(B);Rj(A);Wj(A); Rj(B);Wj(B);

87 Rozróżnia się trzy metody synchronizacji współbieżnego dostępu do danych: blokady, optymistyczne sterowanie dostępem oraz znaczniki czasowe. Blokady Mechanizm blokad polega na tym, że każda transakcja przed uzyskaniem dostępu do danego obiektu bazy danych musi założyć odpowiednia blokadę na tym obiekcie. Zapewnia to użytkownikowi wyłączność dostępu do modyfikowanych przez siebie danych Blokada uniemożliwia dostęp do obiektu innym transakcjom i jest usuwana w momencie zakończenia transakcji. Żadne dwie transakcje nie mogą zablokować tego samego obiektu, jeśli blokada nie została wcześniej zwolniona.

88 Rozróżnia się: blokadę do odczytu STOPi(X) oraz blokadę do zapisu GOi (X). Mechanizm blokad w pewnym stopniu wymusza szeregowalność transakcji. Ogólnie mechanizm blokad jest bardzo złożony, gdyż blokady mogą być zakładane na pojedyncze krotki, wartości atrybutów, tabele i całe bazy danych. Nazywa się to ziarnistością blokowania.

89 Wyróżnia się: * grube ziarna to znaczy blokady zakłada się na całą bazę danych, poszczególne krotki. Efektem tego jest mały stopień współbieżności, a tym samym mała wydajność, * miałkie ziarna gdzie blokady zakłada się na na przykład elementy krotki. Zapewnia to większą współbieżność, lepszą wydajność, ale wiąże się ze znacznym nakładem czasu na zakładania blokad oraz zapotrzebowaniem na dodatkową pamięć na blokady. Ziarnistość blokowania odbywa się pod kontrolą tzw. protokołu blokowania zapobiegającego. Im drobniejsza ziarnistość blokowania tym większy poziom współbieżności w dostępie do danych.

90 Często stosuje się tzw. eskalacje blokad. Wraz ze wzrostem aktywności systemu serwery zaczynają blokować większe sekcje informacji, aby ograniczyć zużycie pamięci. Eskalacja powoduje spadek współbieżności w dostępie do danych. Plan z rysunku 4 można przedstawić następująco: Pblok{Ti,Tj)=STOPi(A):Ri(A);Wi(A);GOi(A);STOPi(B);Ri(B);Wi(B);GO i(b); STOPj(A);Rj(A);Wj(A); GOj(A);STOPj(B); Rj(B);Wj(B); GOj(B);

91 Plan z rysunku 5 można przedstawić następująco: Pblok{Tj,Ti)=STOPj(A;Rj(A);Wj(A);GOj(A);STOPj(B);Rj(B);Wj(B);GOj(B ); STOPi(A);Ri(A);Wi(A); GOi(A);STOPi(B); Ri(B);Wj(B); GOi(B); Plan z rysunku 6 można przedstawić następująco: Pblok=STOPi(A);Ri(A);Wi(A);GOi(A);STOPj(A);Rj(A);Wj(A);GOj(A); STOPi(B);Ri(B);Wi(A); GOi(B);STOPj(B); Rj(B);Wj(B); GOj(B); Samo blokowanie nie zapewnia szeregowalności.

92 Znany jest algorytm blokowania dwufazowego 2PL, który wymaga w ramach transakcji najpierw założenia wszystkich blokad, a dopiero potem zwolnienie pierwszej blokady. Aby uniknąć niepotrzebnego blokowania, system zazwyczaj stosuje kilka trybów blokowania i różne zasady przyznawania blokad dla poszczególnych trybów. Znane są blokowania aktualizujące, przyrostowe, elementów hierarchii ziarnistości i inne.

93 W trakcie dostępu współbieżnego istnieje, niebezpieczeństwo zakleszczenia, czyli wzajemnej blokady wykonywanych równocześnie transakcji. Zakleszczenie to sytuacja, w której 2 lub więcej transakcje znajduje się w stanie oczekiwania na uwolnienie z blokady. Przykład: Mamy dwie transakcje : Ti: STOPi(A);Ri(A);A:=A+10;Wi(A);STOPi(B); GOi(A);Ri(B);B:=B+10 Wi(B); GOi(B); Tj: STOPj(B);Rj(B);B=B*2; Wj(B); STOPj(A); GOj(B);Rj(A);A=A*2;Wj(A); GOj(A);

94 Jeżeli operacje w transakcjach będą się przeplatać następująco : STOPi(A);Ri(A); STOPj(B);Rj(B); A:=A+10 ;B=B*2, Wi(A); Wj(B); STOPi(B) zabronione; STOPj(A) zabronione; To żadna z transakcji nie może się wykonać i czas oczekiwania będzie nieograniczony. Element B został wcześniej zablokowany przez transakcję Tj i nie została zwolniona blokada w związku z czym nie jest możliwe założenia blokady STOPi(B) na tym elemencie przez transakcję Ti. To samo dotyczy elementu A.

95 Rozwiązanie tego typu problemów to: * spełnienie warunku, aby każda transakcja zakładała wszystkie potrzebne jej blokady na samym początku w postaci jednej akcji, lub nie zakładała wcale (znaczne ograniczenie współbieżności), * wykrywanie wzajemnej blokady w chwili, gdy ona wystąpi i wycofanie działania jednej akcji (rola ofiary), co pozwala drugiej kontynuowanie działania, * ustalenie limitu czasu oczekiwania na założenie blokady, a po jego upływie tego czasu automatyczne wycofanie oczekującej transakcji.

96 Standard SQL pozwala na kontrolowanie blokady ustawione przez transakcje. Odbywa się to z wykorzystaniem opisanych poprzednio poziomów izolacji w SQL. I tak: * READ UNCOMMITED - brak blokady dla operacji odczytu, dający możliwość równoczesnego korzystania z danych różnym transakcjom czyli dana transakcja będzie mogła odczytywać dane, które właśnie są modyfikowane przez inną transakcję, co może spowodować niespójność danych. * READ COMMITED zwalnianie blokad zakładanych na rekordy natychmiast po ich odczycie, * REPEATABLE READ zwolnienie blokad rekordów pobranych do odczytu, ale nigdy nie odczytanych. Umożliwia to równoczesne wprowadzanie danych realizowane przez inna transakcje. * SERIALIZABLE utrzymanie blokad założonych przy odczycie do zakończenia transakcji. Niemożliwe jest wtedy dokonywanie jakichkolwiek zmian na blokowanych danych, łącznie z dodawaniem nowych rekordów.

97 W przypadku obiektowych baz danych należy wziąć pod uwagę, że klasa dziedziczy atrybuty i metody od swoich nadklas. W związku z tym, gdy jedna transakcja przetwarza instancje klasy, inna nie powinna modyfikować definicji tej klasy ani żadnej nadklasy tej klasy. Czyli dla zapytania dotyczącego danej klasy blokada jest zakładana nie tylko na danej klasie, ale dla wszystkich następników w hierarchii danej klasy.

98 Inne metody sterowania współbieżnym dostępem. Oprócz blokad jednym ze sposobów sterowania współbieżnym dostępem jest podejście optymistyczne. Zakłada się, że konflikty między transakcjami występują bardzo rzadko, dzięki czemu transakcje mają nieograniczony dostęp do danych. Dopiero przed zatwierdzeniem transakcji sprawdza się czy nie wystąpił konflikt. Jeśli tak, to jedną transakcję anuluje się i wykonuje od początku.

99 Istnieje też metoda znaczników czasowych ( ang. timestamps). Szeregowalność transakcji uzyskuje się przez nadanie każdej transakcji unikalnych znaczników, które ustawiają je w pewnym ciągu czasowym. Metodę te stosuje się przede wszystkim w systemach rozproszonych gdzie blokowanie nie zdaje egzaminu. Znaczniki czasowe przypisuje się w kolejności rosnącej w momencie, gdy zaczyna się transakcja. Istnieją różne sposoby określania znaczników. Można korzystać z zegara systemowego, co nie zawsze jest bezpieczne lub z licznika, który zostaje zwiększony o jeden, w chwili rozpoczecia transakcji.

100 Kolejnym typem optymistycznego sterowania współbieżnością walidacja. jest W procesie walidacji utrzymuje się zapis czynności aktywnych transakcji, a nie czas zapisu i odczytu wszystkich elementów bazy danych. Zanim zostaje zapisana wartość elementu bazy danych zbiory elementów przeczytanych przez transakcje i tych, które mają być przez nią zapisane porównuje się ze zbiorami zapisów z innych transakcji aktywnych. Jeśli występują jakieś nieprawidłowości transakcja zostaje cofnięta.

101 Wszystkie metody szeregowalności transakcji czyli: blokowanie, znaczniki czasowe i walidacja ma swoje zalety i wady. Dotyczy to przede wszystkim przestrzeni pamięci potrzebnej dla tych operacji oraz możliwości zakończenia transakcji bez opóźnień. W przypadku blokad potrzebna przestrzeń pamięci jest proporcjonalna do liczby blokowanych elementów bazy danych. W pozostałych dwóch przypadkach pamięć jest potrzebna do zapamiętania czasów zapisu i odczytu związanych z każdym elementem bazy danych, czy zapisu aktywnych transakcji, bez względu na to, czy dostęp do nich następuje w danej chwili.

102 Znaczniki czasowe i walidacja wymagaja więcej przestrzeni pamięci ponieważ muszą utrzymywać dane dotyczące transakcji zakończonych, które nie są potrzebne przy blokowaniu. Wydajność tych trzech metod zależy również od tego, czy transakcja wymaga dostępu, który jest potrzebny innej transakcji współbieżnie. Gdy ta współbieżność jest mała znaczniki czasu i walidacja nie powodują wielu cofnięć i mogą być znaczne efektywniejsze od blokad. Gdy wymagane jest wiele cofnięć, to wygodniej stosowac blokadę.

103 Zarządzanie transakcjami w systemach rozproszonych baz danych. W rozproszonych bazach danych dane są podzielone poziomo czyli krotki tej samej relacji znajdują się w różnych miejscach lub pionowo wówczas na schemacie relacji wykonane są operacje projekcji, dzięki czemu uzyskamy szereg schematów niższego stopnia. Można też powielić dane, czyli replikować co zapewnia identyczne kopie relacji w różnych miejscach. Dzięki temu uzyskuje się niezawodność systemów rozproszonych. wysoką

104 Ze względu na replikację danych w kilku węzłach problem zarządzania transakcjami i ochrona integralności danych jest znacznie trudniejsza. Należy zadbać o dodatkowe zachowanie zgodności danych w całym rozproszonym systemie. Transakcja rozproszona składa się z wielu składowych działających w różnych miejscach. Obejmuje wiele lokalnych baz danych. W związku z tym może wystąpić jej zatwierdzenie tylko w przypadku pomyślnego zakończenia wszystkich transakcji lokalnych będących całością transakcji rozproszonej.

105 Realizacja przetwarzania rozproszonych transakcji wymaga implementacji protokołów zarządzających kontrolą dostępu i niezawodnością transakcji rozproszonego systemu. Typowy algorytm zarządzania kontrolą dostępu protokół zatwierdzania 2PC (ang. two-phase commit). to dwufazowy W pierwszej fazie lokalne bazy informują wyróżniony węzeł zwany koordynatorem transakcji o tym czy ich lokalna część transakcji może zostać zatwierdzona, czy musi być wycofana. W drugiej, jeżeli wszystkie lokalne bazy danych biorące udział w transakcji mogą ją zatwierdzić, wówczas koordynator nakazuje zatwierdzenie (notuje to w swoim dzienniku transakcji) i w każdej bazie lokalnej zatwierdzone są transakcje. W przeciwnym wypadku, jeśli choć jedna z lokalnych transakcji zostaje wycofana, należy wycofać wszystkie.

106 Istnieje również protokół 3PC. Uwzględnia on sytuacje, gdy koordynator ulegnie awarii, umożliwia wybranie nowego koordynatora. Na ogół komercyjne systemy zarządzania bazą danych nie realizują tego protokołu. Replikacja danych zwiększa poziom niezawodności jednak zawsze istnieje ryzyko, że w systemie istnieje kopia danych, która nie mogła być uaktualniona ze względu na jej chwilowe uszkodzenie lub niedostępność spowodowaną uszkodzeniem łącza komunikacyjnego. Utrzymywanie zgodności replik wymaga implementacji protokołów kontroli replik. Najprostszym protokołem kontroli replik jest protokoł ROWA ( ang. read one write all). Zakłada on, że jedna operacja logicznego odczytania zreplikowanych danych jest zrealizowana przez pojedynczą operację fizycznego odczytania z dowolnej repliki zaś operacja logicznego zapisu wymaga wykonania operacji fizycznego zapisu na wszystkich kopiach.

107 Zarządzanie transakcjami w systemie oracle. System Oracle w przeciwieństwie do MYSQL inicjalizuje automatycznie transakcje. Transakcja rozpoczyna w chwili, gdy nawiązane zostanie połączenie z bazą danych. Transakcja kończy się w momencie przerwania połączenie z bazą danych lub gdy wystąpi polecenie zatwierdzenia transakcji- COMMIT lub wycofania transakcji- ROLLBACK. Oracle pozwala również dzięki komendzie SAVEPOINT umieszczonej wewnątrz bloku transakcji na częściowe cofnięcie transakcji zamiast całej. Oczywiście występuje to przy połączeniu SAVEPOINT z ROLLBACK. Aby zachować integralność danych w bazie w ORACLE istnieje mechanizm nazwany logicznym znacznikiem czasowym SCN (ang.system Change Number) służącym do śledzenia kolejności w jakiej zachodzą transakcje w bazie. Informacje te są przydatne, kiedy zachodzi potrzeba, poprawnego i zgodnego z kolejnością wystąpień odtworzenia transakcji po awarii.

Zarządzanie transakcjami

Zarządzanie transakcjami Zarządzanie transakcjami Właściwości ACID Przyjmuje się, że transakcje i protokoły zarządzania transakcjami powinny posiadać właściwości ACID: Atomowość (atomicity) każda transakcja stanowi pojedynczą

Bardziej szczegółowo

przykłady problemów; realizacja dostaw części od producenta do klienta:

przykłady problemów; realizacja dostaw części od producenta do klienta: Przetwarzanie transakcyjne Transakcja zestaw operacji pod szczególną kontrolą transakcja to sekwencja operacji, która musi zakończyć się sukcesem w całości - w przeciwnym wypadku musi powrócić stan początkowy

Bardziej szczegółowo

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. nadzw. Tadeusz Antczak. Transakcje

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. nadzw. Tadeusz Antczak. Transakcje Transakcje Pojęcie transakcji Pojęcie transakcji stało się centralnym elementem w wielu współczesnych zastosowaniach baz danych. Jest kluczowym pojęciem pozwalającym zrozumieć zarówno kontrolę wielodostępu,

Bardziej szczegółowo

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3 Plan wykładu Spis treści 1 Przetwarzanie transakcyjne 1 1.1 Cechy transakcji................................. 2 1.2 Rozpoczęcie i zakończenie........................... 3 1.3 Punkty bezpieczeństwa.............................

Bardziej szczegółowo

Bazy danych. Andrzej Łachwa, UJ, /15

Bazy danych. Andrzej Łachwa, UJ, /15 Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 12/15 WSPÓŁBIEŻNOŚĆ Serwer bazodanowy nie może obsługiwać klientów sekwencyjnie: wszyscy musieli by czekać

Bardziej szczegółowo

Bazy danych 2. Wykład 6 Transakcje

Bazy danych 2. Wykład 6 Transakcje Bazy danych 2 Wykład 6 Transakcje Transakcje Def. Transakcjami nazywamy logiczne jednostki pracy które wprowadzają zmiany do bazy danych lub które wyszukują dane O transakcjach mówimy w kontekście: aktualizacji

Bardziej szczegółowo

I. Techniki wielowersyjne sterowania współbieżnością

I. Techniki wielowersyjne sterowania współbieżnością I. Techniki wielowersyjne sterowania współbieżnością Techniki wielowersyjne multiversion concurrency control. Technika wielowersyjna oparta na znacznikach czasu Dla każdej wersji X i elementu X przechowywane

Bardziej szczegółowo

Bazy danych 9. SQL Klucze obce Transakcje

Bazy danych 9. SQL Klucze obce Transakcje Bazy danych 9. SQL Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Klucze obce Klucze obce powiazanie indeksowanej kolumny jakiejś tabeli z indeksowana kolumna

Bardziej szczegółowo

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

BAZY DANYCH. Transakcje. opracowanie: Michał Lech BAZY DANYCH Transakcje opracowanie: Michał Lech Plan wykładu 1. Transakcje - co to jest? 2. Mechanizmy transakcji 3. Reguły ACID 4. Niekorzystne zjawiska 5. Poziomy izolacji 6. Polecenia PostgreSQL transakcji

Bardziej szczegółowo

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych

Bardziej szczegółowo

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej ransakcje Definicja i własności transakcji, zatwierdzanie i wycofywanie, punkty bezpieczeństwa, spójność, anomalie współbieżnego dostępu do danych, poziomy izolacji transakcji, blokady, zakleszczenie Definicja

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

Właściwości transakcji

Właściwości transakcji Transakcje Właściwości transakcji Transakcja jednostka operowania na bazie danych podlegająca kontroli i sterowaniu System zarządzania transakcjami ma za zadanie takie sterowanie operacjami na bazie danych,

Bardziej szczegółowo

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dziewiaty Transakcje Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dziewiaty Transakcje 1 / 42 Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów

Bardziej szczegółowo

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

Bardziej szczegółowo

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE

Bardziej szczegółowo

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych Plan wykładu Bazy danych Cechy rozproszonej bazy danych Implementacja rozproszonej bazy Wykład 15: Rozproszone bazy danych Małgorzata Krętowska, Agnieszka Oniśko Wydział Informatyki PB Bazy danych (studia

Bardziej szczegółowo

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych Plan wykładu 2 BAZY DANYCH Wykład 5: Transakcje. Hurtownie danych. Transakcje Hurtownie danych Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka Wprowadzenie Przykład Zmiany zachodzące

Bardziej szczegółowo

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia). POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane

Bardziej szczegółowo

Bazy danych w sterowaniu

Bazy danych w sterowaniu Bazy danych w sterowaniu systemy transakcyjne sterowanie dostępem współbieżnym Stan spójny bazy danych zgodność z możliwym stanem reprezentowanego fragmentu świata rzeczywistego; spełnione są wszystkie

Bardziej szczegółowo

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa Wprowadzenie do projektowania i wykorzystania baz danych Katarzyna Klessa POWTÓRKA Z PIERWSZYCH ZAJĘĆ Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

Bardziej szczegółowo

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

Bardziej szczegółowo

Wykład 2. Relacyjny model danych

Wykład 2. Relacyjny model danych Wykład 2 Relacyjny model danych Wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających

Bardziej szczegółowo

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje Bazy danych 9. Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2007/08 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka

Bardziej szczegółowo

070 TRANSAKCJE. Prof. dr hab. Marek Wisła

070 TRANSAKCJE. Prof. dr hab. Marek Wisła 070 TRANSAKCJE Prof. dr hab. Marek Wisła Transakcja - definicja Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, przeprowadzających bazę danych z jednego stanu spójnego w inny

Bardziej szczegółowo

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. UŁ. Tadeusz Antczak. Transakcje

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. UŁ. Tadeusz Antczak. Transakcje Transakcje Pojęcie transakcji Pojęcie transakcji stało się centralnym elementem w wielu współczesnych zastosowaniach baz danych. Jest kluczowym pojęciem pozwalającym zrozumieć zarówno kontrolę wielodostępu,

Bardziej szczegółowo

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Bazy danych 9. Klucze obce Transakcje. P. F. Góra Bazy danych 9. Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2009 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób

Bardziej szczegółowo

Bazy danych 6. Klucze obce. P. F. Góra

Bazy danych 6. Klucze obce. P. F. Góra Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:

Bardziej szczegółowo

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1 Rozdział 1 Wprowadzenie do baz danych 1 Model danych 2 Funkcje systemu zarządzania bazą danych Wymagania spójność bazy danych po awarii trwałość danych wielodostęp poufność danych wydajność rozproszenie

Bardziej szczegółowo

SZKOLENIE: Administrator baz danych. Cel szkolenia

SZKOLENIE: Administrator baz danych. Cel szkolenia SZKOLENIE: Administrator baz danych. Cel szkolenia Kurs Administrator baz danych skierowany jest przede wszystkim do osób zamierzających rozwijać umiejętności w zakresie administrowania bazami danych.

Bardziej szczegółowo

Wyzwalacze (triggery) Przykład

Wyzwalacze (triggery) Przykład Wyzwalacze (triggery) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę, a następnie trigger związany

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 7 Dynamiczny SQL i PL/SQL Pierwotny dynamiczny SQL Pierwotny dynamiczny DDL Pierwotny dynamiczny DML i SELECT Pakiet DBMS_SQL Transakcje

Bardziej szczegółowo

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger

Bardziej szczegółowo

Pojęcie bazy danych. Funkcje i możliwości.

Pojęcie bazy danych. Funkcje i możliwości. Pojęcie bazy danych. Funkcje i możliwości. Pojęcie bazy danych Baza danych to: zbiór informacji zapisanych według ściśle określonych reguł, w strukturach odpowiadających założonemu modelowi danych, zbiór

Bardziej szczegółowo

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Rozdział 17. Zarządzanie współbieżnością zadania

Rozdział 17. Zarządzanie współbieżnością zadania Rozdział 17. Zarządzanie współbieżnością zadania Transakcja DML 1. Uruchom narzędzie Oracle SQL Developer i przyłącz się do bazy danych. Następnie rozpocznij nową transakcję, zmieniając pracownikowi o

Bardziej szczegółowo

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Typy tabel MySQL domyślny MyISAM inne możliwe:

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

Bardziej szczegółowo

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH Kopie bezpieczeństwa NAPRAWA BAZ DANYCH Sprawdzanie spójności bazy danych Jednym z podstawowych działań administratora jest zapewnienie bezpieczeństwa danych przez tworzenie ich kopii. Przed wykonaniem

Bardziej szczegółowo

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok; Temat: Funkcje, procedury i wyzwalacze. Oprócz tabel i widoków w bazach danych możemy tworzyć własne funkcje, procedury i specjalny typ procedur, które będą automatycznie wywoływanie przez MySQL w memencie

Bardziej szczegółowo

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła 030 PROJEKTOWANIE BAZ DANYCH Prof. dr hab. Marek Wisła Elementy procesu projektowania bazy danych Badanie zależności funkcyjnych Normalizacja Projektowanie bazy danych Model ER, diagramy ERD Encje, atrybuty,

Bardziej szczegółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Architektura systemów zarządzania bazami danych Realizacja zapytań algebra relacji Wielodostęp do danych - transakcje Dr inż. Paweł Kasprowski pawel@kasprowski.pl Aplkacja przechowująca

Bardziej szczegółowo

Wielowersyjne metody synchronizacji transakcji

Wielowersyjne metody synchronizacji transakcji Wielowersyjne metody synchronizacji transakcji Jednowersyjne algorytmy synchronizacji Wszystkie modyfikacje danych polegają na zniszczeniu starej wartości danych i wpisaniu w jej miejsce nowej wartości.

Bardziej szczegółowo

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1 Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane

Bardziej szczegółowo

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): Utwórz bazę danych Cw: CREATE DATABASE Cw Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): DBCC USEROPTIONS Przykład z zapisem do tabeli tymczasowej: --Jeśli istnieje tabela tymczasowa

Bardziej szczegółowo

Tadeusz Pankowski

Tadeusz Pankowski Planista (scheduler) Transakcje Blokowanie Dwufazowe (B2F) Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski Zarządzaniem transakcjami zajmuje się wyspecjalizowany moduł planisty. Planista związany

Bardziej szczegółowo

SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II Cel laboratorium

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

2014-06-30 21:11 BD_1_W9

2014-06-30 21:11 BD_1_W9 Wykład 9 Niezawodność bazy danych Odtwarzanie spójnego stanu bazy Odtwarzanie stanu bazy na podstawie dziennika transakcji Odtwarzanie nośników 1 Bardzo ważną funkcją systemu zarządzania bazą danych jest

Bardziej szczegółowo

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wyzwalacze Wprowadzenie Tworzenie wyzwalacza Wyzwalacze typu,,po'' Wyzwalacze typu,,zamiast''

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Rozproszone bazy danych. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Rozproszone bazy danych. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Rozproszone bazy danych Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Scentralizowana baza danych Dane są przechowywane w jednym węźle sieci Można

Bardziej szczegółowo

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi 1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) Tworząc tabelę nie możemy określić, do którego pliku trafi, lecz możemy określić do której grupy plików trafi Zawsze istnieje grupa zawierająca

Bardziej szczegółowo

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Bazy danych Wykład zerowy. P. F. Góra

Bazy danych Wykład zerowy. P. F. Góra Bazy danych Wykład zerowy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Patron? Św. Izydor z Sewilli (VI wiek), biskup, patron Internetu (sic!), stworzył pierwszy katalog Copyright c 2011-12 P.

Bardziej szczegółowo

Systemy baz danych. mgr inż. Sylwia Glińska

Systemy baz danych. mgr inż. Sylwia Glińska Systemy baz danych Wykład 1 mgr inż. Sylwia Glińska Baza danych Baza danych to uporządkowany zbiór danych z określonej dziedziny tematycznej, zorganizowany w sposób ułatwiający do nich dostęp. System zarządzania

Bardziej szczegółowo

Transakcje jednocześnie ACID

Transakcje jednocześnie ACID Transakcje Transakcja to zbiór operacji (u nas - instrukcji języka SQL), które mogą być wykonane jedynie wszystkie lub żadna. Nazwa takiego ciągu instrukcji pochodzi od operacji bankowych - przelew musi

Bardziej szczegółowo

Przykładowa baza danych BIBLIOTEKA

Przykładowa baza danych BIBLIOTEKA Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych

Bardziej szczegółowo

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU (pieczęć wydziału) KARTA PRZEDMIOTU 1. Nazwa przedmiotu: BAZY DANYCH 2. Kod przedmiotu: 3. Karta przedmiotu ważna od roku akademickiego: 2014/2015 4. Forma kształcenia: studia pierwszego stopnia 5. Forma

Bardziej szczegółowo

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, 2017 Spis treści O autorze 9 Wprowadzenie 11 Lekcja 1. Zrozumieć SQL 15 Podstawy baz danych 15 Język SQL

Bardziej szczegółowo

Bazy danych 2. Wykład 1

Bazy danych 2. Wykład 1 Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Instytut Mechaniki i Inżynierii Obliczeniowej  fb.com/groups/bazydanychmt/ Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 4 (Asocjacje,

Bardziej szczegółowo

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion Autor: Joanna Karwowska SQL zapewnia obsługę: zapytań - wyszukiwanie danych w bazie, operowania danymi - wstawianie, modyfikowanie

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,

Bardziej szczegółowo

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Zasady transformacji modelu DOZ do projektu tabel bazy danych Zasady transformacji modelu DOZ do projektu tabel bazy danych A. Obiekty proste B. Obiekty z podtypami C. Związki rozłączne GHJ 1 A. Projektowanie - obiekty proste TRASA # * numer POZYCJA o planowana godzina

Bardziej szczegółowo

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000 Bazy Danych LITERATURA C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000 J. D. Ullman, Systemy baz danych, WNT - W-wa, 1998 J. D. Ullman, J. Widom, Podstawowy

Bardziej szczegółowo

BAZY DANYCH Cz III. Transakcje, Triggery

BAZY DANYCH Cz III. Transakcje, Triggery BAZY DANYCH Cz III Transakcje, Triggery Transakcje Definicja: Zbiór operacji (modyfikacja danych, usuwanie, wstawianie, tworzenie obiektów bazodanowych), które albo wszystkie kończone są sukcesem, albo

Bardziej szczegółowo

Struktura drzewa w MySQL. Michał Tyszczenko

Struktura drzewa w MySQL. Michał Tyszczenko Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu

Bardziej szczegółowo

Bazy Danych. Bazy Danych i SQL Podstawowe informacje o bazach danych. Krzysztof Regulski WIMiIP, KISiM,

Bazy Danych. Bazy Danych i SQL Podstawowe informacje o bazach danych. Krzysztof Regulski WIMiIP, KISiM, Bazy Danych Bazy Danych i SQL Podstawowe informacje o bazach danych Krzysztof Regulski WIMiIP, KISiM, regulski@metal.agh.edu.pl Oczekiwania? 2 3 Bazy danych Jak przechowywać informacje? Jak opisać rzeczywistość?

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

Mechanizm transakcji w relacyjnych i obiektowych bazach danych

Mechanizm transakcji w relacyjnych i obiektowych bazach danych Uniwersytet Mikołaja Kopernika Wydział Matematyki i Informatyki Danuta Posiadała Nr albumu:158137 Praca magisterska na kierunku Informatyka Mechanizm transakcji w relacyjnych i obiektowych bazach danych

Bardziej szczegółowo

Podstawy teoretyczne baz danych. Recovery Transakcyjne odtwarzanie bazy danych po awarii

Podstawy teoretyczne baz danych. Recovery Transakcyjne odtwarzanie bazy danych po awarii Podstawy teoretyczne baz danych Recovery Transakcyjne odtwarzanie bazy danych po awarii Cel odtwarzania Podstawowym celem mechanizmów transakcyjnego odtwarzania bazy danych po awarii jest odtworzenie spójnego

Bardziej szczegółowo

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski Transakcje i ich właściwości Transakcje Tadeusz Pankowski wwwputpoznanpl/~tadeuszpankowski W SZBD stosuje się pojęcie transakcji jako jednostki operowania na bazie danych podlegającej sterowaniu i kontroli

Bardziej szczegółowo

Wykład 3 2014-04-25 12:45 BD-1 W_3

Wykład 3 2014-04-25 12:45 BD-1 W_3 Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Wstęp do problematyki baz danych Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS w. I Jesień 2014 1 / 17 Plan wykładu 1 Bazy danych 1 Motywacja

Bardziej szczegółowo

Model relacyjny. Wykład II

Model relacyjny. Wykład II Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Bazy danych - Materiały do laboratoriów VIII

Bazy danych - Materiały do laboratoriów VIII Bazy danych - Materiały do laboratoriów VIII dr inż. Olga Siedlecka-Lamch Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 23 kwietnia 2011 roku Polecenie COMMIT i ROLLBACK Polecenie

Bardziej szczegółowo

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ zajęcia 1: 2. Procedury składowane

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo