Как мне сделать резервную копию моих данных в реальном времени? Есть ли лучшее решение?

Вопрос

Как мне сделать резервную копию данных в реальном времени в моей программе? В настоящее время я использую отображенные в память файлы, предоставляемые библиотекой Interprocess в C ++ Boost. Интересно, есть ли лучшее альтернативное решение?

Подробнее

Моя программа периодически получает данные в реальном времени от оборудования и сохраняет их в буфере фиксированного размера. Обычно период короткий, скажем, 3 секунды. Поскольку буфер важен, Я хочу сделать резервную копию, чтобы в случае сбоя моей программы она могла восстановить первоначальное состояние до того, как произошла ошибка.

Я делаю это так: Оцените максимальный размер буфера и создайте файл сопоставления памяти в том же размере. Свяжите буфер в памяти и сопоставленный файл, чтобы при изменении памяти изменение немедленно записывалось в локальный файл.

Когда программа восстанавливается после сбоя, она просто читает сопоставленный файл и десериализует данные.

Это решение отлично работает на основе некоторых предварительных условий:
1). Количество данных известно заранее: 3 элемента данных или 5 элементов.
2). Размер каждого элемента данных устанавливается заранее (в языке C / C ++ это означает структуру / класс фиксированного размера).

Тем не менее, я предвижу что-то случится в моем проекте, что может нарушить эти предварительные условия:
1). Количество элементов данных может измениться во время работы системы. Клиент может начать использовать больше оборудования, поэтому будет больше данных, которые будут получены. Это означает, что мне нужно воссоздать сопоставленный файл, реплицировать старые данные и начать сохранять новые. Это может привести к проблемам с производительностью.
2). Размер некоторых специальных данных не может быть определен заранее, например, некоторая информация описания, введенная пользователем.

Так: Как вы делаете резервную копию данных в вашей программе?
Интересно, если есть лучшее решение, чем файл с отображенной памятью?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector