2012-09-30 16 views
12

Jaka jest różnica między atomowością a konsystencją? wygląda na to, że obaj mówią to samo w innym słowie.Konsekwencja atomowości bazy danych

Atomowość

Wszystkie zadania są wykonywane transakcji albo żaden z nich. Brak częściowych transakcji. Na przykład, jeśli transakcja rozpocznie aktualizowanie 100 wierszy, ale system zawiedzie po 20 aktualizacjach, wówczas baza danych wycofa zmiany do tych 20 wierszy.

Spójność

Transakcja trwa bazę danych z jednego spójnego stanu do innego stanu spójnego. Na przykład w transakcji bankowej, która obciąża konto oszczędnościowe i przypisuje konto czekowe, niepowodzenie nie może powodować, że baza danych przypisuje tylko jedno konto, co prowadzi do niespójności danych.

+1

Bez atomowej, spójny: Częściowa transakcja może pozostawić system w stanie zgodnym. Atomowy, niekonsekwentny: 2 części systemu mogą utrzymywać atomowość bez spójności (transakcja jest rejestrowana w jednym, a nie w drugiej). – nhahtdh

Odpowiedz

14

Atomowość rzeczywiście mówi, że każda transakcja jest albo całkowita, albo nic, co oznacza, że ​​albo wszystkie lub żadne z jej działań nie są wykonywane i że nie ma operacji częściowych.

Jednak spójność mówi o zapewnieniu, że każda transakcja spowoduje przeniesienie bazy danych z jednego prawidłowego stanu do innego. Wszelkie dane zapisane w bazie danych muszą być ważne zgodnie ze wszystkimi określonymi regułami, w tym, ale nie wyłącznie, z ograniczeniami, kaskadami, wyzwalaczami i dowolną ich kombinacją (taken from Wikipedia). Oznacza to, że tylko ważne stany są zapisywane do bazy danych i że transakcja zostanie wykonana, jeśli nie narusza spójności danych lub zostanie wycofana, jeśli tak się stanie.

Mam nadzieję, że wszystko wyjaśni.

0

proste wyjaśnienie Dla konsystencja: jeśli typ pola w bazie danych jest liczbą całkowitą, powinien akceptować tylko wartości całkowite, a nie jakikolwiek inny. Jeśli chcesz przechowywać inne typy w tym polu, konsystencja jest naruszona. W tym stanie transakcja zostanie wycofana.

0

Atomowość:
Pęczek rachunku tylko brać przykład 100 oświadczeń, które mogą być INSERT także, jeśli którykolwiek z rachunku zawiodły podczas przetwarzania powinny powrócić pozostałe oświadczenia, co oznacza, że ​​baza danych powinna wrócić oryginalny stan.

Blockquote

AUTOCOMMIT = false

try{ 
    statement one ; 
    statement two ; 
    `enter code here` 
    `enter code here` 
    `enter code here` 
    statement three; 
    } 
    catch(){rollback;} 
    finally(){commit;} t 

Konsystencja: Jeśli próbujesz wstawić datę w bazie danych, które muszą być spełniać ograniczenia, kaskady, wyzwala jak chwilę próbujesz wstawić dane do bazy danych, ale tabela ma ograniczenia klucza głównego, więc dane, które planujesz wstawić, powinny być satis z ograniczeniem klucza podstawowego.

Izolacja: jeśli dwa proces jest uruchomiony na bazie zakładamy jeden czyta, a drugi jest zapisywanie danych w bazie danych. wątek odczyt powinien przeczytać tylko popełnionych danych, nie powinno być dane w pamięci

Trwałość: raz dane transakcyjne popełnione do bazy danych powinien być taki sam etap, to nie powinno wpływać na od awarii zasilania lub awarii systemu dowolnym inny