Конференция "Прочее" » Обеспечить безопасность сохранения данных
 
  • Strate (05.02.09 17:51) [0]
    Добрый день, мастера.

    Суть вопроса такова:

    Есть программка, которая каждые N секунд (N в пределах от 1 до 10 секунд) сохраняет некие данные в файлик. Сохранение происходит следующим образом: удаляется исходный файл, и заново создаётся.

    В случае казуса (отключение света, отказ системы, отказ программы) данные могут либо вообще потеряться, либо записаться не полностью.

    Какие есть более безопасные пути сохранения данных?
  • tesseract © (05.02.09 17:55) [1]

    > Какие есть более безопасные пути сохранения данных?


    Переименовать старый файл, записать новый. Старые копии можно удалять.
  • Ega23 © (05.02.09 17:56) [2]
    Самый тупой способ: 2 файла, в один идут "четные сохранения", в другой - "нечётные".
  • test © (05.02.09 17:58) [3]
    Ведение журнала в БД, теория по этим вещам называется "системы гарантированной доставки".
  • Городской Шаман (05.02.09 18:01) [4]

    > Strate   (05.02.09 17:51)  


    Я делал так:
    1. Сохраняем данные в новый файл со случайно сгенерированным именем(по GUID-у подойдёт) и расширением tmp.
    2. Переименовываем данный файл в нужное имя(в NTFS это атомарная журналируемая операция).

    При старте программы трём все tmp в своём рабочем каталоге.
  • БарЛог © (05.02.09 18:23) [5]
    Strate   (05.02.09 17:51)  
    хорошо хоть не "удаляем файл, ждём N секунд, записываем новый файл" :)
  • axis_of_evil © (05.02.09 18:47) [6]
    возьми пример с MS Word - тот, сколь я понимаю, создает кучу временных файлов каждые N секунд, а при корректном выходе все временные файлы удаляет
 
Конференция "Прочее" » Обеспечить безопасность сохранения данных
Есть новые Нет новых   [134454   +42][b:0][p:0]