Informatyka (7-8) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

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

Bazy danych. Andrzej Łachwa, UJ, /15

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

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

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

Właściwości transakcji

Bazy danych 9. SQL Klucze obce Transakcje

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

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

Zarządzanie transakcjami

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

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

Informatyka (6) Widoki. Indeksy

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

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

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

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

Bazy danych 9. Klucze obce Transakcje

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

Przechowywanie danych

Bazy danych. Dr inż. Paweł Kasprowski

Transakcje jednocześnie ACID

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

SQL 4 Structured Query Lenguage

Bazy danych 2. Wykład 6 Transakcje

Tadeusz Pankowski

PODSTAWY BAZ DANYCH 13. PL/SQL

Oracle PL/SQL. Paweł Rajba.

Kursory. A. Pankowska 1

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

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

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

Składowane procedury i funkcje

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Izolacje transakcji oraz anomalie. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Wykład 8. SQL praca z tabelami 5

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Systemowe aspekty baz

Procedury i funkcje składowane

Microsoft SQL Server Podstawy T-SQL

Internetowe bazy danych

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Systemowe aspekty baz danych

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Bazy danych. Plan wykładu. Czynniki wpływające na fizyczny projekt bazy danych. bazy danych

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Oracle PL/SQL. Paweł Rajba.

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

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Cele. Definiowanie wyzwalaczy

Paweł Rajba

BAZY DANYCH Cz III. Transakcje, Triggery

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

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Wprowadzenie (1) Przetwarzanie transakcyjne. Wprowadzenie (2) Problemy przygotowania aplikacji

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

Język SQL, zajęcia nr 1

Administracja i programowanie pod Microsoft SQL Server 2000

Adam Cankudis IFP UAM

Tadeusz Pankowski

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Wyzwalacze (triggery) Przykład

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

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

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

PL/SQL. Zaawansowane tematy PL/SQL

Obowiązuje od wersji

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

Projektowanie systemów baz danych

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część II

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

Bazy danych i usługi sieciowe

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

Administracja i programowanie pod Microsoft SQL Server 2000

Ćwiczenie 9 współbieŝność

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

Aspekty aktywne baz danych

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

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

Język PL/SQL Procedury i funkcje składowane

BAZA DANYCH SIECI HOTELI

Paweł Cieśla. Dokumentacja projektu

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Transakcje Wykład z bazy danych dla studen

Wykład :45 BD-1 W_3

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Transkrypt:

Informatyka (7-8) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro katpalik@pg.gda.pl katarzyna.palikowska@wilis.pg.gda.pl

Powtórzenie Tabela, rekord, krotka, wiersz Atrybut, kolumna, pole Atomowość atrybutu Klucz główny, alternatywny, obcy, sztuczny Integralność danych, integralność referencyjna Normalizacja Pierwsza postać normalna, Druga postać normalna, Trzecia postać normalna Redundancja danych Anomalia Indeks Hurtownia danych

Nowe pojęcia Identyfikacja, Uwierzytelnienie, Autoryzacja T-SQL: Kursor, Trigger, Procedura składowana Transakcja, ACID Dziennik transakcji LOG, Poziom izolacji, Brudny wiersz, Fantom, Blokada, Zakleszczenie, Zagłodzenie, Szeregowalność

CASE WHEN THEN END

IIF(warunek, T, F)

PIVOT

Zadania DBMS System Zarządzania Bazą Danych (DataBase Management System) powinien zapewnić: 1. Autoryzację dostępu Poufność 2. Spójność bazy danych Wiarygodność 3. Współbieżny dostęp do danych 4. Odporność na awarie 5. Efektywne przetwarzanie danych Indeksy

Autoryzacja dostępu Identyfikacja (identification) podmiot deklaruje swoją tożsamość (identity) Uwierzytelnianie (authentication) strona ufająca stosuje odpowiednią technikę uwierzytelniania (authentication mechanism) w celu weryfikacji zadeklarowanej wcześniej tożsamości. Na przykład: serwer prosi użytkownika o wpisanie hasła i weryfikuje jego zgodność z wcześniej ustawioną wartością Autoryzacja (authorisation) potwierdzenie, czy dany podmiot jest uprawniony do uzyskania dostępu do żądanego zasobu / funkcjonalności / wykonania komendy. Mixed Mode

Role - służą do grupowania kont użytkowników.

USE master CREATE LOGIN Student WITH PASSWORD = Axyz98! SELECT * FROM sys.sql_logins Widok systemowy CREATE USER Student FROM LOGIN Student EXEC sp_addrolemember db_owner, Student Procedura składowana CREATE USER Niezalezny WITH PASSWORD = xxxx

Spójność bazy danych Wierne odzwierciedlenie danych rzeczywistych Poprawność modelu Autoryzacja dostępu Odporność na awarie / trwałość Spełnienie ograniczeń integralnościowych Foreign Key ALTER TABLE Zaliczenie ADD CHECK (Ocena in (2,3,4,5)) Nazwisko varchar(30) NOT NULL ON UPDATE/DELETE CASCADE ON UPDATE/DELETE RESTRICT ON UPDATE/DELETE SET NULL Brak anomalii wynikających ze współbieżnego dostępu do danych

Trigger (wyzwalacz) Paczka PK ID FK id_nadawcy FK id_odbiorcy Czy_zaplacono Kwota Klient PK ID Nazwisko Imie Konto PK ID FK id_klienta Warunek: Akcja: Jeżeli czy_zaplacono zmieni się z 0 na 1 to przelej Kwotę z konta odbiorcy na konto nadawcy

Trigger (wyzwalacz) Transact SQL T-SQL

T-SQL Kursor DECLARE @I INT declare kur SCROLL cursor for select lp from dane ORDER BY LP OPEN kur; FETCH NEXT FROM kur INTO @I; WHILE @@FETCH_STATUS=0 BEGIN PRINT @I; IF @I % 2 =0 UPDATE dane SET flaga=0 WHERE lp = @I FETCH NEXT FROM kur INTO @I; END CLOSE kur DEALLOCATE kur

Konto Transakcja Nr_konta Kwota 23000011110000 1000 34555512130101 300 BEGIN TRAN Operacja przelewu z konta na konto update Konto set kwota = kwota + 100 where nr_konta= 34555512130101 Awaria, odczyt niespójnych danych update Konto set kwota = kwota - 100 where nr_konta= 23000011110000 END TRAN COMMIT TRANSACTION ROLLBACK TRANSACTION Zatwierdzenie zmian Cofnięcie zmian

Transakcja to logiczna jednostka pracy, składa się z jednej lub wielu operacji dostępu do bazy danych (np. wstawiania, usuwania, modyfikacji czy pobierania), Transakcja przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny. Zasada wszystko albo nic. Transakcja wykonywana jest w całości lub wcale. DBMS nie może dopuścić do częściowego wykonania transakcji.

Atomicity Atomowość Własność ACID Transakcje są niepodzielne. Consistency Spójność Transakcja przekształca bazę z jednego stanu spójnego w inny (bez konieczności zachowywania spójności bazy w punktach pośrednich), transakcja nie może naruszać ograniczeń integralnościowych. Isolation Durability Izolacja Trwałość Oznacza odizolowanie transakcji jednej od drugiej, jeśli mamy wiele transakcji przebiegających równocześnie ich wykonywanie nie powinno ze sobą kolidować, mimo współbieżnego wykonywania, transakcje widzą stan bazy danych tak, jak gdyby były wykonywane w sposób sekwencyjny. Zmiany dokonane w bazie przez zatwierdzone transakcje muszą być trwałe, niezmieniane nawet przez różnego rodzaju awarie (muszą być odtwarzalne)

Dziennik Transakcji (LOG) Zbiór informacji (przechowywany na dysku) w którym zapisywane są informacje o wszystkich operacjach aktualizacji, Zapamiętywane są wartości sprzed i po aktualizacji, Dziennik jest okresowo archiwizowany (uniknięcie awarii), Pozwala na cofnięcie aktualizacji w ramach transakcji lub ponowienie transakcji, jeśli aktualizacja dziennika nie była całkowita Przechowuje tzw. rekordy dziennika wraz z identyfikatorem transakcji T rozpoczęcie transakcji T zapisywanie elementu X: T, X, stara i nowa wartość zatwierdzenie T anulowanie T

Problemy współbieżnego dostępu Utrata modyfikacji Lost updates

Odczyt niezatwierdzonej wartości Dirty reads

Odczyt niespójnych danych Non-repeatable reads Inconsistent Analysis id 1 2 3 Saldo 40 50 30 Przelew kwoty 10 z konta id=3 na konto id=1

Rekordy fantomowe Phantoms Reads Zależność wyniku od kolejności wykonania

Problem czytelników i pisarzy Procesy współbieżne Czytelnik 1 Czytelnik 2 Czytelnik n Czytelnia Pisarz 1 Pisarz 2 Pisarz n Dowolna liczba czytelników może czytać dane. Pisarz musi przebywać w czytelni sam. Problem pięciu filozofów Filozof myśli. Gdy zgłodnieje pobiera 2 widelce i posila się.

Blokady Blokowanie jest techniką kontroli współbieżności, Polega na nakładaniu blokad na obiekty, które mają nie ulec zmianie w czasie gdy dana transakcja się nimi nie zajmuje, Efektem nałożenia blokady jest brak możliwości dostępu (a szczególnie modyfikacji) do tego obiektu przez inne transakcje Blokady S (shared), X (exclusive) i inne Transakcja która chce posiadać dostęp do wiersza musi najpierw uzyskać blokadę S na tym wierszu, Transakcja która chce zmodyfikować wiersz musi najpierw uzyskać blokadę X na tym wierszu lub zwiększyć poziom blokady z S na X

Cechy transakcji Tryb dostępu READ ONLY i READ WRITE Poziom izloacji ISOLATION LEVEL READ UNCOMMITTED (najniższy poziom izolacji) READ COMMITTED REPEATABLE READ SNAPSHOT SERIALIZABLE (najwyższy poziom izolacji) Szeregowalność

Protokół ścisłego blokowania dwufazowego (Strict 2PL): Każda transakcja musi uzyskać blokadę S (współdzieloną) na obiekcie zanim odczyta ten obiekt oraz blokadę X (wyłączną) na obiekcie przed zapisaniem go. Jeśli transakcja trzyma blokadę X na obiekcie, żadna inna transakcja nie ma prawa założyć żadnej blokady (ani typu S ani X) na tym obiekcie. Jeśli transakcja trzyma blokadę S na obiekcie, żadna inna transakcja nie ma prawa założyć blokady X na tym obiekcie. Gdy transakcja nie może założyć blokady na obiekcie, może ustawić się w kolejce oczekujących transakcji stowarzyszonej z tym obiektem albo może zostać wycofana. Wszystkie blokady trzymane przez transakcję są zwalniane jednocześnie, w chwili gdy transakcja kończy się (wycofaniem lub zatwierdzeniem). Protokół Strict 2PL nazywa się dwufazowym, ponieważ determinuje dwie fazy działania każdej transakcji związane z blokadami: transakcja zakłada blokady i dokonuje wymaganych odczytów i zapisów na obiektach, na których założyła blokadę; transakcja wykonuje COMMIT/ROLLBACK jednocześnie zwalniając wszystkie blokady. Zakładanie blokad i ich zwalnianie są oddzielonymi w czasie fazami.

Zakleszczeniemnazywamy stan w którym dwie lub więcej transakcji znajduje się w stanie wzajemnego oczekiwania na zwolnienie blokady w celu wykonywania dalszych operacji, System powinien wykrywać i likwidować blokady, co może być realizowane za pomocą grafu oczekiwań (wait-for-graph), Usuwanie zakleszczenia polega na wybraniu jednej z dwóch transakcji zablokowanych i cofnięcie jej, tak aby druga mogła się wykonywać.

Zagłodzenie - transakcja nie może być kontynuowana przez określony czas, a inne transakcje są normalnie wykonywane Taka sytuacja wystąpi gdy nie ma mechanizmu obsługiwania transakcji i jedne mają pierwszeństwo w stosunku do drugich, Rozwiązaniem problemu jest kolejkowanie: obsługa transakcji na zasadzie pierwsza zgłoszona pierwsza obsłużona, Należy także nadawać transakcjom priorytety, zwiększające się w miarę upływu czasu lub w przypadku częstego cofania transakcji, im wyższy priorytet tym szybciej będzie wykonana

DECLARE @zmienna INT T-SQL

CREATE PROCEDURE <Nazwa> ( IN OUT INOUT nazwa_parametru TYP, ) BEGIN END;

IF <warunek> THEN <lista instrukcji> ELSEIF <warunek> THEN <lista instrukcji> ELSE <lista instrukcji> END IF; WHILE <warunek> DO <lista instrukcji> END WHILE; <etykieta>: LOOP <lista instrukcji> LEAVE <etykieta>; END LOOP; REPEAT <lista instrukcji> UNTIL <warunek>;

Procedura składowana (ang. stored procedure) jest nazwanym zbiorem zapytań w języku SQL, który jest przechowywany na serwerze (w SZBD) i jest kompilowany przy pierwszym wykonaniu. Procedury wnoszą do środowiska serwera baz danych przetwarzanie warunkowe i możliwości programistyczne. W SZBD wykonanie dowolnego fragmentu kodu języka SQL wiąże się z pewnym ciągiem procesów - począwszy od sprawdzenia składni aż do kompilacji i wykonania.

1. Kod musi zostać sprawdzony pod względem poprawności składni (kontrola poprawności semantycznej - czyli czy kod nie odwołuje się do nieistniejących obiektów lub używa nieistniejących poleceń oraz kontrola poprawności syntaktycznej - czy użyta składnia jest poprawna). 2. Następnie kod jest rozdzielany na fragmenty (często nazywane znacznikami) interpretowane przez ZSBD. Proces ten nazywamy parsowaniem (ang. parsing). 3. Następnie SZBD standaryzuje wyodrębnione części kodu, tzn. zapisuje je w jednoznacznej postaci (usuwając niepotrzebne znaczniki). 4. Kolejnym etapem jest optymalizacja - każde zapytanie może posiadać wiele przygotowanych tzw. planów wykonania (ang. execution plan). MS SQL Server posiada wewnętrzny proces (Query Optimizer), który wybiera optymalny sposób dostępu do danych - tzn. taki plan wykonania zapytania, w którym serwer będzie skanował (przeszukiwał) najmniejszą ilość stron danych. Na optymalizację szczególny wpływ mają struktura indeksów oraz sposób łączenia tabel. 5. Następuje kompilacja zapytania wg optymalnego planu wykonania i wykonanie skompilowanego zapytania. 6. Wyniki działania zapytania są zwracane do klienta.

Procedury składowane dzięki temu, że są zapisane na serwerze oraz dzięki skompilowanemu planowi wykonania przechowywanemu w cahe'u procedur posiadają dwie zasadnicze zalety: zwiększają wydajność bazy danych, ograniczają ruch w sieci (przesyłane są tylko nazwy procedur i wartości parametrów). zapewniają jedną logikę biznesową dla wszystkich aplikacji klienckich, przesłaniają szczegóły tabel w bazie danych (przezroczystość struktury dla zwykłego użytkownika aplikacji), umożliwiają modyfikację danych bez bezpośredniego dostępu do tabel bazy danych, dostarczają mechanizmów bezpieczeństwa (można nadawać uprawnienia do wykonywania procedur poszczególnym użytkownikom bazy danych).