Мне нужно выполнять операции в хронологическом порядке на огромных временных рядах, реализованных в виде IList. Данные в конечном итоге сохраняются в базе данных, но не имеет смысла отправлять десятки миллионов запросов в базу данных.
В настоящее время IList в памяти вызывает исключение OutOfMemory при попытке сохранить более 8 миллионов (маленьких) объектов, хотя мне потребуется иметь дело с десятками миллионов.
После некоторых исследований, похоже, что лучший способ сделать это - сохранить данные на диске и получить к ним доступ через оболочку IList.
Файлы с отображением в памяти (представленные в .NET 4.0) кажутся подходящим интерфейсом для использования, но мне интересно, как лучше написать класс, который должен реализовывать IList (для простого доступа) и внутренне иметь дело с отображенным в память файлом.
Мне также любопытно услышать, если вы знаете о других способах! Я подумал, например, об обертке IList, использующей данные из db4o ( кто-то упомянул здесь , использующий файл с отображением в памяти в качестве IoAdapterFile, хотя использование db4o, вероятно, повышает производительность по сравнению с работой непосредственно с файлом, отображенным в память ).
Я встречал этот вопрос , заданный в 2009 году, но он не дал полезных ответов или серьезных идей.