Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

Zgodnie z właściwościami ACID dotyczącymi wykonywania transakcji wymaganie izolacji (ang. isolation) oznacza, że

A. w przypadku konfliktu z inną transakcją, obie modyfikują te same dane w tym samym czasie.
B. po wykonaniu transakcji system bazy danych będzie spójny.
C. jeżeli dwie transakcje wykonują się współbieżnie, to zwykle nie widzą wprowadzanych przez siebie zmian.
D. pod pewnymi warunkami dane zmieniane przez transakcję mogą zostać wycofane.

Pytanie z egzaminu CKE, czerwiec 2022 (arkusz E.14-SG-22.06).

Izolacja w ACID oznacza, że współbieżnie wykonywane transakcje są od siebie odseparowane tak, jakby każda z nich działała osobno albo przynajmniej w kontrolowany sposób. Dlatego poprawne jest stwierdzenie, że jeżeli dwie transakcje wykonują się równolegle, to zwykle nie widzą wprowadzanych przez siebie zmian, dopóki nie zostaną one zatwierdzone. W praktyce chodzi o ochronę przed problemami typu dirty read, non-repeatable read czy phantom read. Przykład: jeden pracownik aktualizuje stan magazynowy produktu, a drugi w tym samym czasie wystawia fakturę. Baza danych nie powinna pozwolić, żeby drugi użytkownik zobaczył przypadkową, jeszcze niezatwierdzoną wartość i na jej podstawie zrobił bałagan w systemie. Moim zdaniem to jedna z ważniejszych cech transakcji, bo bez niej aplikacje webowe, bankowe czy sklepowe szybko zaczęłyby pokazywać niespójne dane. Standard SQL opisuje różne poziomy izolacji, m.in. READ COMMITTED, REPEATABLE READ i SERIALIZABLE. Dobra praktyka jest taka, aby dobrać poziom izolacji do sytuacji: im wyższa izolacja, tym większe bezpieczeństwo logiczne, ale czasem też mniejsza wydajność przez blokady i oczekiwanie transakcji.
W tym pytaniu łatwo pomylić izolację z innymi właściwościami ACID, bo wszystkie dotyczą poprawnego wykonania transakcji i brzmią trochę podobnie. Stwierdzenie, że po wykonaniu transakcji system bazy danych będzie spójny, opisuje raczej consistency, czyli spójność. Oznacza to, że transakcja nie może złamać reguł integralności, kluczy obcych, ograniczeń CHECK czy innych zasad ustalonych w schemacie bazy. To bardzo ważne, ale nie jest tym samym co odseparowanie transakcji od siebie podczas pracy współbieżnej.

Opis konfliktu, w którym dwie transakcje modyfikują te same dane w tym samym czasie, nie wyjaśnia izolacji, tylko pokazuje sytuację, przed którą mechanizmy izolacji mają chronić. Sama możliwość konfliktu nie jest wymaganiem ACID. System bazy danych powinien taki konflikt obsłużyć przez blokady, wersjonowanie rekordów, wykrywanie zakleszczeń albo wycofanie jednej z transakcji. Z mojego doświadczenia uczniowie często myślą, że izolacja to po prostu fakt, że transakcje się zderzają, a to odwrotnie: izolacja ma sprawić, żeby skutki takiego zderzenia nie były widoczne jako błędne dane.

Możliwość wycofania zmian pod pewnymi warunkami wiąże się głównie z atomicity, czyli atomowością. Transakcja ma wykonać się w całości albo wcale. Jeśli wystąpi błąd, rollback przywraca poprzedni stan danych. To nie tłumaczy jednak, czy inne transakcje widzą tymczasowe zmiany w trakcie wykonywania operacji. Właśnie ten aspekt kontroluje isolation. W praktycznych systemach, np. sklepach internetowych, bankowości czy rezerwacjach biletów, poprawne rozróżnienie tych pojęć jest naprawdę istotne, bo od tego zależy dobór poziomu izolacji, wydajność i bezpieczeństwo danych.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.