-
Добрый день, мастера.
Суть вопроса такова:
Есть программка, которая каждые N секунд (N в пределах от 1 до 10 секунд) сохраняет некие данные в файлик. Сохранение происходит следующим образом: удаляется исходный файл, и заново создаётся.
В случае казуса (отключение света, отказ системы, отказ программы) данные могут либо вообще потеряться, либо записаться не полностью.
Какие есть более безопасные пути сохранения данных?
-
> Какие есть более безопасные пути сохранения данных?
Переименовать старый файл, записать новый. Старые копии можно удалять.
-
Самый тупой способ: 2 файла, в один идут "четные сохранения", в другой - "нечётные".
-
Ведение журнала в БД, теория по этим вещам называется "системы гарантированной доставки".
-
> Strate (05.02.09 17:51)
Я делал так: 1. Сохраняем данные в новый файл со случайно сгенерированным именем(по GUID-у подойдёт) и расширением tmp. 2. Переименовываем данный файл в нужное имя(в NTFS это атомарная журналируемая операция).
При старте программы трём все tmp в своём рабочем каталоге.
-
Strate (05.02.09 17:51) хорошо хоть не "удаляем файл, ждём N секунд, записываем новый файл" :)
-
возьми пример с MS Word - тот, сколь я понимаю, создает кучу временных файлов каждые N секунд, а при корректном выходе все временные файлы удаляет
|