Лучший вариант для хранения большого соответствия ключ-значение на диске для высокой пропускной способности только для чтения?
У меня есть словарь (простое сопоставление значения ключа между небольшими строками) размером ~1 ГБ (который может увеличиваться со временем), который я хочу использовать для целей исправления заклинаний и автозаполнения. Я планировал сохранить его в оперативной памяти, но пока я не наберу некоторый трафик, я хочу придерживаться бесплатных планов хостинга, так что это на самом деле не вариант в моем случае.
Альтернативой является сохранение его на диске (SSD) и использование некоторого ограниченного (например, до 128 МБ) умного кеширования (например, с помощью комбинированной политики удаления LRU/LFU), чтобы поддерживать время доступа приемлемым. Однако я не уверен, какую форму дискового хранилища мне следует использовать для увеличения пропускной способности. Варианты, которые я рассмотрел до сих пор:
Используйте базу данных:
- MongoDB
- BerkleyDB ( https://en.wikipedia.org/wiki/Berkeley_DB)
Используйте индивидуальное решение:
Просто используйте файловую систему:
- иметь файл для каждой записи в словаре, имя которого является ключом, а содержимое - значением
Прежде чем я начну пачкать руки и оценивать вышеизложенное с помощью реализации и профилирования, я хотел бы знать, если кто-то делал что-то подобное раньше, каков был ваш подход и результаты. Обратите внимание, что словарь создается только один раз, а не изменяется впоследствии. То есть после создания будут выполняться только операции чтения (поиска), и для одного "запроса на исправление / предложение" обычно требуется 15-20 операций поиска.
Заранее спасибо за любой полезный вклад!
PS: я разрабатываю с использованием стека MEAN.