Spójność

Spójność danych - inaczej logiczna poprawność danych. Spójność występuje wtedy kiedy dane spełniają nałożony na nie zbiór ograniczeń. Zbiór ograniczeń jest związany z modelem danych, dla którego spójność jest wymagana. Dla przykładu - model relacyjny jest spójny jeżeli spełnione są następujące ograniczenia:

  • spójność dziedzinowa - zakresy wartości argumentów są zgodne z modelem dziedziny problemu

  • spójność relacyjna - klucze relacji posiadają unikatowe wartości

  • spójność referencyjna - referencje przechowywane w kluczach obcych są poprawne, wskazują na istniejącą krotkę innej relacji

Rodzaje spójności [1]

Point in Time Consistency

Spójność Point in Time występuje wtedy, kiedy wszystkie powiązane struktury danych posiadają taką zawartość, jak by były z jednego punktu w czasie.

Jako przykład mogę przytoczyć proces backupu bazy danych, która całą zawartość przechowuje w jednym pliku na dysku. Plik taki posiada index danych zapisany na samym jego początku oraz właściwe dane rekordów bazy danych, na które wskazuje. W pewnym momencie następuje dodanie rekordu bazy danych, co wiąże się także z modyfikacją indeksu - mamy do wykonania więc dwie operacje. Przypuśćmy, że do bazy danych dodajemy najpierw rekord, a następnie modyfikujemy indeks bazy dodając referencję do nowego rekordu. W tym samym momencie zostaje uruchomiona procedura backupu bazy danych, która polega na skopiowaniu zawartości pliku do innej lokalizacji. Jeżeli backup bazy danych zostanie wykonany pomiędzy zapisem rekordu a modyfikacją indeksu będzie on w niespójnym stanie - w naszym przypadku pewne rekordy będą fantomami, czyli nie będzie na nie wskazywała żadna referencja z indeksu.

Transaction Consistency

Spójność transakcyjna oznacza, że dane są spójne pomiędzy transakcjami (czyli szeregiem modyfikacji danych, które kończą się albo odrzuceniem albo zatwierdzeniem). Oznacza to, że dane mogą być niespójne w trakcie trwania transakcji.

Application Consistency

Spójność aplikacyjna jest bardzo podobna do spójności transakcyjnej, dotyczy jednak większej ilości transakcji, zazwyczaj w systemach o architekturze rozproszonej.

Siła spójności

Taktyki zachowywania spójności

  • protokoły dostępu do zasobów - protokół blokowania dwufazowego, metody znakowania czasowego, blokowanie optymistyczne

  • odpowiednie techniki replikacji danych

Bibliografia

Comments