Лучший вариант для хранения большого соответствия ключ-значение на диске для высокой пропускной способности только для чтения?

У меня есть словарь (простое сопоставление значения ключа между небольшими строками) размером ~1 ГБ (который может увеличиваться со временем), который я хочу использовать для целей исправления заклинаний и автозаполнения. Я планировал сохранить его в оперативной памяти, но пока я не наберу некоторый трафик, я хочу придерживаться бесплатных планов хостинга, так что это на самом деле не вариант в моем случае.

Альтернативой является сохранение его на диске (SSD) и использование некоторого ограниченного (например, до 128 МБ) умного кеширования (например, с помощью комбинированной политики удаления LRU/LFU), чтобы поддерживать время доступа приемлемым. Однако я не уверен, какую форму дискового хранилища мне следует использовать для увеличения пропускной способности. Варианты, которые я рассмотрел до сих пор:

Используйте базу данных:

Используйте индивидуальное решение:

Просто используйте файловую систему:

  • иметь файл для каждой записи в словаре, имя которого является ключом, а содержимое - значением

Прежде чем я начну пачкать руки и оценивать вышеизложенное с помощью реализации и профилирования, я хотел бы знать, если кто-то делал что-то подобное раньше, каков был ваш подход и результаты. Обратите внимание, что словарь создается только один раз, а не изменяется впоследствии. То есть после создания будут выполняться только операции чтения (поиска), и для одного "запроса на исправление / предложение" обычно требуется 15-20 операций поиска.

Заранее спасибо за любой полезный вклад!

PS: я разрабатываю с использованием стека MEAN.

0 ответов

Другие вопросы по тегам