Я пытаюсь реализовать механизм хранения файлов, который хранит несколько записей переменного размера в одном файле с гарантией того, что набор записей всегда можно будет восстановить в согласованное состояние, даже если система не удалась при аппаратный уровень.
Пока что каждая схема, которую я придумал, сводится к последовательной записи данных. Некоторая часть данных будет добавлена в конец каждой записи, что подтверждает, что запись прошла успешно. Однако, если данные не обязательно записываются на диск последовательно при сбросе, возможно, что данные подтверждения будут записаны раньше данных контента.
Есть два очевидных способа обойти это, но оба нежелательны:
- Очистите содержимое, затем напишите подтверждение и очистите его. Добавление дополнительной промывки может ухудшить производительность.
- Включите контрольную сумму в подтверждение (потребуется прочитать содержимое, чтобы подтвердить его действительность).
Я использую C # в Windows (32- и 64-разрядной версии) и реализацию файла сопоставления памяти в .Net 4.0