Afish napisał(a):
bonifacy napisał(a):
lock, a potem leci: write, write, ... i na końcu: unlock (i + flush ewentualnie).
zatem każdy normalny system powinien to realizować poprawnie,
co znaczy że od momentu:
lock, system ma czekać na unlock, zanim zacznie zapisywać na dysk... a nie od razu!co znaczy że w międzyczasie musi buforować te zapisywane dane, a nie walić prosto w pliki!
To się wywala nawet na jednym komputerze, a co dopiero w rozproszonym systemie, wystarczy ubić aplikację/system przy flushowaniu (i buforowanie nic tu nie da, bo bufory mogą być utracone albo race condition może zapisać je wielokrotnie itp). To da się zrobić ze wsparciem transakcyjnego modyfikowania plików albo innymi sztuczkami na systemie plików (na przykład dwie wersje pliku + wskaźnik do aktualnej + podwójny zapis + podwójny odczyt), ale trudno powiedzieć, czy Twoja baza to robi (a jeżeli Twój opis jest zgodny ze stanem faktycznym, to tego nie robi).
Żartujesz sobie?
Transakcje są zupełnie inaczej realizowane: nie ma tu znaczenia, czy coś się wyłączy, niedokończy w trakcie,
bo wtedy zostanie to dokończone albo zupełnie wycofane w kolejnej sesji: 1 albo 0; nigdy 0.5, czy 0.99.