У меня есть служба, которая отвечает за сбор постоянно обновляемого потока данных из сети. Предполагается, что весь набор данных должен быть доступен для использования (только для чтения) в любое время. Это означает, что самое новое сообщение с данными, которое приходит к самому старому, должно быть доступно клиентскому коду.
В настоящее время планируется использовать отображенный в памяти файл в Windows. Прежде всего потому, что набор данных огромен, охватывая десятки ГиБ. Нет никакого способа узнать, какая часть данных будет необходима, но когда это необходимо, клиенту, возможно, придется прыгать по желанию.
Файлы с отображенной памятью отвечают всем требованиям. Однако я видел, как сказано (написано), что они лучше всего подходят для наборов данных, которые уже определены и не постоянно меняются. Это правда? Может ли сценарий, который я описал выше, достаточно хорошо работать с файлами отображения памяти?
Или лучше оставить файл отображения памяти для всех данных до некоторого количества МБ последних данных, чтобы файл отображения памяти содержал почти 99% истории входящих данных, но я храню больше всего последние, скажем, 100 МБ в отдельном буфере памяти. Каждый раз, когда этот буфер заполняется, я перемещаю его в файл отображения памяти и затем очищаю его.