Próbuję zaimplementować mechanizm przechowywania plików, który przechowuje wiele rekordów o zmiennym rozmiarze w jednym pliku z gwarancją, że zestaw rekordów zawsze będzie można odzyskać w stanie spójnym, nawet jeśli system nie działał poprawnie na sprzęcie poziom.Czy dane w pliku odwzorowanym w pamięci są gwarantowane do sekwencyjnego przepłukiwania?
Do tej pory każdy system, który wpadł mi w ręce, na sekwencję zapisu danych. Niektóre dane zostaną dołączone na końcu każdego rekordu, co potwierdza, że zapis się powiódł. Jednakże, jeśli dane niekoniecznie są zapisywane na dysku sekwencyjnie po przepłukaniu, wówczas dane potwierdzające mogą być zapisane przed danymi treści.
Istnieją dwa oczywiste sposoby obejścia tego, ale oba są niepożądane:
- przepłukać zawartość, a następnie napisać potwierdzenie i opróżnić go. Dodanie dodatkowego koloru może pogorszyć wydajność.
- Dołącz sumę kontrolną do potwierdzenia (wymagałoby przeczytania treści w celu potwierdzenia jej ważności).
używam C# w systemie Windows (32- i 64-bitowy) i pamięci odwzorowany realizację
Drugi pomysł (weryfikacja danych , znacznik czasu, numer porządkowy i suma kontrolna) wydaje się być zgodny z prawem. Generalnie jednak powinieneś szukać klastrów wysokiej dostępności z oddzielnymi maszynami w sieci. Wszystkie zapisy lub zapisy w dzienniku muszą być replikowane w sieci na dwie lub więcej maszyn. Nie można wyodrębnić żadnej gwarancji z jednego komputera, kropka. – rwong