Я работаю над программой на Python, которой необходимо хранить постоянную структуру данных «набор», содержащую множество хэш-значений фиксированного размера (SHA256, но это не важно). Важнейшими операциями являются вставка и поиск. Удаление не требуется для обычной работы. Набор будет расти со временем и в конечном итоге может не все поместиться в памяти.
Я рассмотрел:
set
, хранящийся на диске с использованиемpickle
(медленно [несколько секунд] для записи нового файла на диск, в конечном итоге не помещается в память)- база данных SQLite (дополнительная зависимость недоступна по умолчанию)
- настраиваемая сбалансированная древовидная структура на основе диска, такая как B-дерево или аналогичная
В идеале должен быть встроенный модуль Python, обеспечивающий поддержку этих операций. Какой здесь хороший вариант?
После того, как я составил это, я нашел Fast disk-based hashtables?, у которого есть несколько хороших идей. Мне нравится принятый там ответ mmap/bucket.
(Это для перезаписи shaback, если вам интересно.)