Как сохранить хеш-таблицу в файле?

Использовать простой текстовый файл не получится, т.к. записей может быть до 300.000, а работать с отдельными из них не получится - придётся каждый раз перезаписывать весь файл, что очень долго. Посоветуйте что можно использовать, для шарпа.


Ответы (2 шт):

Автор решения: S.H.

Ответ зависит от того, насколько часто будет обновляться hash - таблица.

При небольшом кол-ве обновлений я бы применил следующую схему:

  1. делаем "дамп" таблицы в файл

  2. начинаем на каждое изменение дописывать в файл (или даже писать в отдельный файл) строку с признаком того, что случилось с таблицей: insert, update или delete

Получается "transaction log для hash table". Внутри файла ничего не меняется, только дописывается в конец.

Недостатки: увеличивается время "загрузки", так как после загрузки основной части таблицы понадобится еще и обработать transaction log

Возможны вариации этой схемы, в зависимости от кол-ва обновлений, например, после того, как обновилось 10% всех записей - делать новый "слепок" основной таблицы, чтобы transaction log не слишком разрастался.

→ Ссылка
Автор решения: Yotic

Ты можешь разделить таблицу на мелкие части, по 100к - 10к - 1к хешей Делаешь по 10 папок, в которых папки и.т.д с первыми цифрами инжекса В этих папках уже будут файлы. Выглядит вот так (У меня разделено не по десяткам, а по степеням двойки) введите сюда описание изображения

→ Ссылка