Я разрабатываю веб-приложение на Rails, которое должно выполнять поиск и обработку данных с интенсивными вычислениями при ответе на запрос.
Я написал расширение ruby C, которое выполняет эти вычисления, но чтобы ускорить процесс, мне нужно создать индекс.
Чтобы сохранить индекс быстрым, я хочу просто использовать хеш-таблицу в C в памяти. Эта хеш-таблица будет большой. На порядок 0,5 - 1 ГБ памяти. Я думал об использовании базы данных, но мне нужен очень специфический формат для этого индекса, и в конечном итоге хеш-таблица довольно проста и будет очень быстрой.
Индекс должен уметь делать две вещи:
1) отвечать на запросы поиска
2) отвечать на запросы о добавлении элементов в индекс без перезапуска программы
Я бы предпочел не писать полный текст на C-сервере для создания и управления этим индексом.
Есть ли способ, которым я могу написать расширение ruby C двумя вышеупомянутыми методами, которое сохраняет индекс в памяти между вызовами расширения?
Есть ли другой способ достичь того, что мне нужно выше, без написания полного на сервере в C?
В худшем случае я могу написать C-сервер, с которым может общаться мое приложение rails, но я надеялся найти что-то более простое.