У меня есть набор хэшей (первые 64 бита MD5, поэтому они распределены очень случайным образом), и я хочу видеть, есть ли новый хеш в наборе и добавить его в набор.
Наборы не слишком большие, самые большие будут миллионы элементов, но есть сотни наборов, поэтому я не могу держать их в памяти.
Некоторые идеи, которые я имел до сих пор:
- Я пробовал просто хранить все это в таблице sqlite, но он становится действительно очень медленным, когда он не может вместить все в память.
- Фильтры Bloom звучат так, будто у них будет очень высокий коэффициент ошибок. Я не против крошечной частоты ошибок (64-битный хеш дает 1 столкновение по набору элементов 4G уже), но ошибки, такие как 1%, слишком высоки.
- Сохранять отсортированный список хэшей с пробелами в файле и изменять размер, если у меня недостаточно пробелов. Хаши равномерно распределены, поэтому даже очень простая схема должна работать.
Я пропустил что-то действительно очевидное? Любые подсказки, как реализовать хорошую хэш-таблицу на основе диска?