У кого-нибудь есть опыт хранения данных на диске? У меня есть приложение для моделирования в памяти, которое может выполнять вычисления и т. Д. В основном данные хранятся в виде списков объектов, которые имеют вложенные коллекции значений ключей, такие как Dictionary >.
Сейчас я использую SQL-Server в качестве слоя персистентности, но я использую его очень мало. Поэтому я думаю, что могу записать / прочитать данные на диск самостоятельно, чтобы уменьшить зависимости и упростить установку.
Итак, я написал небольшую процедуру, которая записывает каждый массив на диск примерно в таком формате, где слова «ObjId», «Type», «Valid» и «Count» на самом деле не находятся в файле, они , 2nd, 3rd и 4th int в byte [], затем идут пары . 52 происходит от 4 * 4 + 3 * (4 + 8). (4 байта для int, 8 для двойного)
Bytes: 52
ObjId: 123
Valid: 234
Type: double
Count: 3
1 .23
2 .34
3 .45
В реальной жизни нет отступов и т. Д., Все они представляют собой последовательные байты в длинном потоке.
Это нормально, написать один раз. Но когда я хочу написать дополнительное значение где-то посередине, я должен переписать все это. Также я не могу легко обновить одно значение.
Одна альтернатива - записать каждый объект в отдельный файл, поэтому мне нужно будет только переписать это. Но это кажется довольно неэффективным, потому что я получаю файлы размером 1 КБ, но 4 КБ на диске, так что я бы тратил на них место.
Так что мне нужно сделать, чтобы иметь возможность постепенно записывать этот файл на диск? Я знаю, что у SqlServer есть «страницы», куда он записывает данные, это путь?
Есть ли какая-либо библиотека, готовая для решения этой проблемы? Может быть, какой-нибудь виртуальный файл, который позволит мне обрабатывать их как отдельный байт [], но обрабатывает хранилище как один физический файл? Идеально сжатый .. (толкает его, но кто знает .. Я был удивлен раньше: -)
Заранее спасибо,
Герт-Ян