background image

Spójność bazy danych

Spójność bazy danych

• stan bazy danych jest zgodny ze stanem 

reprezentowanego przez nią fragmentu rzeczywistości,

• wszystkie ograniczenia integralnościowe w bazie danych są 

spełnione.

Poziomy spójności w bazie danych:

Poziomy spójności w bazie danych:

• spójność polecenia – zbiór danych odczytanych przez 

pojedyncze polecenie pochodzi z tego samego momentu w 

czasie (momentu rozpoczęcia wykonania polecenia),

• spójność transakcji – zbiór danych, odczytywanych przez 

wszystkie zapytania w pojedynczej transakcji, pochodzi z 

tego samego momentu w czasie (momentu rozpoczęcia 

transakcji).

Zagrożenia spójności

Zagrożenia spójności

• awarie, działania użytkowników,

• współbieżny dostęp do danych.

Spójność transakcji

Spójność transakcji

background image

• Sytuacja, w której kilka transakcji 

wykonuje równolegle operacje na 

tych samych danych.

Anomalie współbieżnego dostępu:

Anomalie współbieżnego dostępu:

– brudny odczyt (ang. dirty read)
– utracona modyfikacja (ang. lost 

update),

– niepowtarzalny odczyt (ang. non-

repeatable read),

– fantomy (ang. phantoms).

Współbieżność transakcji

Współbieżność transakcji

background image

• odczyt niezatwierdzonych danych 

(ang. read uncommitted)

• odczyt zatwierdzonych danych 

(ang. read committed)

• powtarzalny odczyt (ang. 

repeatable read),

• uszeregowalny (ang. serializable).

Poziomy izolacji transakcji

Poziomy izolacji transakcji

background image

Poziomy izolacji transakcji

Poziomy izolacji transakcji

Poziom 

Poziom 

izolacji/

izolacji/

Anomalia

Anomalia

Dirty

read

Non-

repeatable 

read

Phantoms

Read 

Read 

uncommitte

uncommitte

d

d

możliwa

możliwa

możliwa

Read 

Read 

committed

committed

brak

brak

możliwa

możliwa

możliwa

Repeatable 

Repeatable 

read

read

brak

brak

brak

brak

możliwa

Serializable

Serializable

brak

brak

brak

brak

brak

brak

background image

Określenie poziomu izolacji transakcji:
– dla transakcji:

Określenie poziomu izolacji

Określenie poziomu izolacji

SET TRANSACTION ISOLATION LEVEL
{READ UNCOMMITTED | READ COMMITTED
| REPEATABLE READ | SERIALIZABLE};

dla sesji (SZBD Oracle):

ALTER SESSION SET ISOLATION_LEVEL =
{READ COMMITTED | SERIALIZABLE};

Określenie trybu dostępu transakcji

SET TRANSACTION {READ WRITE | READ ONLY};

background image

Algorytmy:

• optymistyczne – wykorzystanie znaczników 

czasowych,

• pesymistyczne – wykorzystanie blokad, 

najczęściej stosowany algorytm: blokowanie 

dwufazowe (2PL)

Blokada – przydzielenie zasobu do zadania

Rodzaje blokad:

• wyłączne – zasób może być przydzielony tylko 

do jednego zadania,

• współdzielone – zasób może zostać 

przydzielony jednocześnie wielu zadaniom.

Zarządzanie współbieżnością

Zarządzanie współbieżnością

background image

Zadanie, któremu przydzielany jest zasób to 

transakcja

Blokowany zasób:

– atrybut
– rekord
– strona dyskowa
– relacja
– baza danych

Zarządzanie współbieżnością

Zarządzanie współbieżnością

mniejsze ziarno
blokowania

większe ziarno
blokowania

wysoki 
poziom 
współbieżnośc
i

niski poziom 
współbieżnośc
i

background image

Blokady w systemie ORACLE 

Blokady w systemie ORACLE 

• Ziarno blokowania: rekord i relacja
• Rodzaje blokad:

– rekord – blokada wyłączna,
– relacja – blokada wyłączna lub współdzielona.

• Blokowanie jest realizowane automatycznie bez 

udziału użytkownika.

• Operacje odczytu danych nie wymagają 

założenia blokad

background image

Odroczone ograniczenia 

Odroczone ograniczenia 

integralnościowe

integralnościowe

• Sprawdzane w momencie zatwierdzenia transakcji
• Definiowanie:

CONSTRAINT nazwa_ograniczenia ] ograniczenie
DEFERRABLE
INITIALLY 
IMMEDIATE DEFERRED }

• Określenie momentu sprawdzenia w bieżącej transakcji (tylko dla 

ograniczeń zdefiniowanych jako odroczone):

SET CONSTRAINTS { <lista_ograniczeń> | ALL }
DEFERRED IMMEDIATE };

background image

Odroczone ograniczenia 

Odroczone ograniczenia 

integralnościowe

integralnościowe

Przykład:

CREATE TABLE osoby(
id NUMBER(4) PRIMARY KEY
DEFERRABLE INITIALLY DEFERRED
,
nazwisko VARCHAR2(100) NOT NULL);
INSERT INTO osoby VALUES(1, 'Nowacki');
INSERT INTO osoby VALUES(1, 'Kowalski');
SELECT FROM osoby;
COMMIT;

background image

P1.C1.KRAKOW.PL

W1.C1.WARSZAWA.

PL 

P2.WROCLAW.PL

update konta@P1.C1.

update konta@P1.C1.

KRAKOW

KRAKOW

.PL .....;

.PL .....;

update 

update 

konta@W

konta@W

1

1

.C

.C

1

1

.WAR

.WAR

SZAWA

SZAWA

.PL .....;

.PL .....;

update 

update 

accounts@

accounts@

P2.WROCLAW.PL

P2.WROCLAW.PL

 .....;

 .....;

commit;

commit;

Transakcja, której polecenia INSERT, UPDATE, DELETE, SELECT 

odwołują się do tabel znajdujących się co najmniej w dwóch 
węzłach rozproszonej bazy danych

Transakcja rozproszona

Transakcja rozproszona

background image

transakcja, której polecenia DML odwołują się 

do tabel znajdujących się co najmniej w dwóch 

węzłach rozproszonej bazy danych

Transakcja rozproszona

Transakcja rozproszona

reprezentowana jest przez zbiór transakcji 

lokalnych, które są tworzone w każdej z baz 

danych, do których odwołuje się transakcja 

rozproszona

background image

Koordynator globalny KG

 (global 

coordinator) – węzeł, z którego została 

zainicjowana transakcja rozproszona

Zarządza całą transakcją tj. doprowadza ją w 

całości do zatwierdzenia lub wycofania

Węzły uczestniczące w transakcji 

Węzły uczestniczące w transakcji 

rozproszonej

rozproszonej

Koordynator lokalny KL

 (local coordinator) – 

węzeł, który otrzymuje żądanie, przetwarza je i 

wysyła kolejne żądania do innych podległych mu 

węzłów

Nie koordynuje całej transakcji globalnej, a jedynie 

te żądania, które zostały przez niego wysłane

background image

Węzeł zatwierdzania WZ

 (commit point site) – 

węzeł, który jako pierwszy wykonuje 

zatwierdzenie swojej transakcji lokalnej w ramach 

całej transakcji rozproszonej

Węzły uczestniczące w transakcji 

Węzły uczestniczące w transakcji 

rozproszonej

rozproszonej

Przechowuje informacje o stanie transakcji rozproszonej, 

które wykorzystuje się w czasie manualnego kończenia 

transakcji po awarii systemu rozproszonego

Wybierany jest przez KG spośród wszystkich węzłów 

biorących udział w transakcji rozproszonej – decyduje 

najwyższa wartość parametru konfiguracyjnego instancji 

bazy danych 

COMMIT_POINT_STRENGTH

Uczestnik U

 (mode) – węzeł do którego 

kierowane jest żądanie transakcji rozproszonej 

(sam węzeł nie wysyła żadnych żądań)

background image

Protokół zatwierdzania dwufazowego 

Protokół zatwierdzania dwufazowego 

2PC

2PC

Protokół 

Protokół 

2PC 

2PC 

składa się z dwóch głównych faz

składa się z dwóch głównych faz

• przygotowania
• decyzji

Protokół ten może być implementowany jako

Protokół ten może być implementowany jako

:

scentralizowany 2PC

- zdecentralizowany 2PC
- liniowy 2PC

background image

Protokół scentralizowany 2PC

Protokół scentralizowany 2PC

Koncepcja pracy protokołu 2PC jest następująca:

Koordynator globalny, pyta uczestników czy są gotowi do 
zatwierdzenia swoich transakcji lokalnych. 

Jeśli przynajmniej jeden uczestnik odpowiada 
komunikatem ABORT (nie jest gotowy), lub nie odpowie w 
zadanym czasie, wówczas koordynator globalny wysyła do 
wszystkich uczestników komunikat wycofania transakcji. 

Jeśli natomiast wszyscy uczestnicy zgłoszą gotowość do 
zatwierdzenia swoich transakcji lokalnych, wówczas 
koordynator globalny wysyła do nich komunikat żądający 
zatwierdzenia transakcji.

background image

Protokół scentralizowany 2PC

Protokół scentralizowany 2PC

Topologia komunikacyjna

background image

Faza przygotowania

Faza przygotowania

Koordynator globalny

Koordynator globalny

– zapisuje w lokalnym logu (na dysku) 

informacji o rozpoczęciu zatwierdzania

– wysyła do uczestników komunikat PREPARE 

(przygotowanie do zatwierdzania)

– przechodzi do stanu oczekiwania na 

komunikaty od uczestników

background image

Faza przygotowania

Faza przygotowania

Uczestnik:

Uczestnik:

– odbiera komunikatu PREPARE od KG

a) przygotowanie do zatwierdzenia

a) przygotowanie do zatwierdzenia

zapisanie do logu stanu transakcji i rekordu o gotowości 
do zatwierdzania

wysłanie do KG komunikatu READY_COMMIT

b) przygotowanie do wycofania

b) przygotowanie do wycofania

zapisuje do logu stanu transakcji i rekordu o 
wycofywaniu

wysyła do KG komunikatu ABORT

przechodzi do stanu oczekiwania na kolejny komunikat 
od KG

background image

Faza decyzji

Faza decyzji

Koordynator globalny

Koordynator globalny

a) jeżeli wszyscy uczestnicy odpowiedzieli

a) jeżeli wszyscy uczestnicy odpowiedzieli

 

READY_COMMIT

READY_COMMIT

• zapis do logu informacji o zatwierdzeniu
• wysłanie komunikatu GLOBAL_COMMIT do 

uczestników

b) jeżeli przynajmniej jeden U odpowiedział ABORT

b) jeżeli przynajmniej jeden U odpowiedział ABORT

• zapis do logu informacji o wycofaniu
• wysłanie GLOBAL_ABORT do uczestników

oczekiwanie na potwierdzenia od uczestników

background image

Faza decyzji

Faza decyzji

Uczestnik

• jeśli odebrany GLOBAL_COMMIT

zapis do logu informacji o zatwierdzeniu

zatwierdzenie transakcji lokalnej

zwolnienie blokad i zasobów systemowych

wysłanie potwierdzenia do KG

• jeśli odebrany GLOBAL_ABORT

zapis do logu informacji o wycofaniu

wycofanie transakcji lokalnej

zwolnienie blokad i zasobów systemowych

wysłanie potwierdzenia do KG

background image

Faza decyzji

Faza decyzji

Koordynator globalny

– odbiór wszystkich potwierdzeń od 

uczestników

– zapis do logu informacji o 

zakończeniu transakcji

background image

Zdecentralizowany 2PC

Topologia komunikacyjna

Topologia komunikacyjna

background image

Zdecentralizowany 2PC

Cechy

Cechy

• większy ruch sieciowy (większa liczba 

przesyłanych komunikatów)

• każdy węzeł zna decyzje pozostałych węzłów i 

na tej podstawie sam 

 

zatwierdza/wycofuje

faza decyzji nie jest konieczna

background image

Zdecentralizowany 2PC

Cechy

Cechy

• większy ruch sieciowy (większa liczba 

przesyłanych komunikatów)

• każdy węzeł zna decyzje pozostałych węzłów i 

na tej podstawie sam 

 

zatwierdza/wycofuje

faza decyzji nie jest konieczna

background image

Liniowy 2PC

Koncepcja

Koncepcja

– węzły są uporządkowane liniowo
– każdy węzeł otrzymuje numer od 1 (KG) do n 

(U)

– węzeł o numerze i komunikuje się tylko z 

węzłami

sąsiednimi, tj. o numerach i-1, i+1

background image

Liniowy 2PC

Koncepcja

Koncepcja

– węzły są uporządkowane liniowo
– każdy węzeł otrzymuje numer od 1 (KG) do n 

(U)

– węzeł o numerze i komunikuje się tylko z 

węzłami

sąsiednimi, tj. o numerach i-1, i+1

background image

Liniowy 2PC

Liniowy 2PC

Faza przygotowania

Faza przygotowania

• komunikaty wysyłane od węzła 1 do n
• podejmuje decyzję, wysyła swoją decyzję z 

komunikatem do węzła o numerze i+1

• węzeł o numerze i+1 podejmuje swoją decyzję i 

załącza ją w komunikacie do węzła i+2, itd.

• ostatni węzeł w łańcuchu podejmuje decyzję o 

zatwierdzeniu/wycofaniu na podstawie zawartości 
komunikatu od węzła n-1

komunikat ten zawiera decyzje wszystkich 

komunikat ten zawiera decyzje wszystkich 

wcześniejszych węzłów

wcześniejszych węzłów

background image

Liniowy 2PC

Liniowy 2PC

Faza decyzji

Faza decyzji

• komunikaty wysyłane od węzła n do 1
• węzeł i podejmuje decyzję o 

zatwierdzeniu/wycofaniu 
i załącza ją w komunikacie do węzła i-1

• komunikat trafiający do KG zawiera decyzje 

wszystkich węzłów

background image

Graf wywołań transakcji

BANK1

koordynator globalny
COMMIT_POINT STRENGTH=15

BANK3

BANK2

koordynator lokalny 

COMMIT_POINT_STRENGTH=2

0

update 

rachunki@bank2 ....

update rachunki@bank3

węzeł zatwierdzania

COMMIT_POINT_STRENGTH=10

0

delete from 

rachunki@bank4 

...

update rachunki...

insert 
innsurachunki@bank5 ...

BANK5

BANK4

uczestnik

COMMIT POINT 

STRENGTH=1 

uczestnik

COMMIT POINT 

STRENGTH=1 

background image

Protokół zatwierdzania 

Protokół zatwierdzania 

Fazy realizacji

1.przygotowanie (prepare)
2.zatwierdzanie (commit)
3.zakończenie (forget)

background image

2PC - faza przygotowania (KG)

1. KG wybiera węzeł zatwierdzania
2. KG wysyła do uczestników żądanie 

przygotowania do zatwierdzania (uwaga: 
komunikat ten nie jest wysyłany do WZ)

3. Uczestnik przygotowuje się i wysyła komunikat 

PREPARED do KG

4. KG odbiera komunikaty od uczestników

background image

2PC - faza przygotowania (U)

1. Odbiór komunikatu od KG żądającego 

przygotowania do zatwierdzania

2. Zapis do plików dziennika powtórzeń
3. Wysłanie komunikatu PREPARE do podległych 

uczestnikowi węzłów

4. Odbiór komunikatów od węzłów podległych
5. Wysłanie komunikatu do koordynatora 

globalnego

background image

2PC - faza przygotowania (U)

1. W przypadku braku modyfikacji danych -> 

wysłanie do koordynatora globalnego komunikatu 
READ-ONLY

2. Jeśli inne zdalne węzły podległe danemu węzłowi 

uczestnika zgłosiły gotowość i sam uczestnik jest 
gotów -> wysłanie komunikatu PREPARED do 
koordynatora globalnego 

w przeciwnym przypadku 

w przeciwnym przypadku 

1. wycofanie lokalnej transakcji
2. wysłanie ABORT

background image

Wymiana komunikatów fazy 

Wymiana komunikatów fazy 

przygotowania

przygotowania

BANK1

koordynator globalny

BANK3

BANK2

koordynator 

lokalny

1. Wybór WZ

1. Wybór WZ

2. prepare

2. prepare

węzeł 

zatwierdzani

a

BANK5

BANK4

uczestnik

uczestnik

5. prepared

5. prepared

3. prepare

3. prepare

3. prepare

3. prepare

4. prepared

4. prepared

4. prepared

4. prepared

background image

2PC – faza zatwierdzania (zatwierdzenie)

1. KG odbiera potwierdzenia od uczestników 

PREPARED

READ-ONLY (brak modyfikacji)

ABORT (niemożliwość przygotowania do 
zatwierdzania)

2. Jeśli wszyscy odpowiedzieli PREPARED -> KG wysyła 

żądanie zatwierdzenia transakcji do węzła 
zatwierdzania

3. WZ zatwierdza transakcję i wysyła komunikat do KG
4. KG wysyła żądanie zatwierdzenia do pozostałych 

węzłów

background image

2PC – faza zatwierdzania (uczestnik)

1. Odbiór od koordynatora globalnego 

komunikatu żądającego zatwierdzenia 
transakcji

2. Zatwierdzenie lokalnej transakcji
3. Zwolnienie blokad
4. Zapis informacji o zatwierdzeniu w pliku 

dziennika powtórzeń

background image

Wymiana komunikatów fazy 

Wymiana komunikatów fazy 

zatwierdzania

zatwierdzania

BANK1

koordynator globalny

BANK3

BANK2

koordynator 

lokalny

1. commit

1. commit

3. commit

3. commit

węzeł 

zatwierdzani

a

BANK5

BANK4

uczestnik

uczestnik

2. 

2. 

committed

committed

4. commit

4. commit

4. commit

4. commit

5. 

5. 

committed

committed

5. commmitted

5. commmitted

6. 

6. 

commmitted

commmitted

background image

2PC – faza zakończenia

1. Usunięcie z systemu informacji o zakończonej 

transakcji rozproszonej

2. Zwolnienie wszystkich niezwolnionych jeszcze 

zasobów systemowych


Document Outline