У меня есть следующий дизайн. Существует пул идентичных рабочих процессов (максимум 64 из них, в среднем 15), которые используют общую базу данных только для чтения. База данных составляет около 25 МБ. В настоящее время она реализована в виде базы данных MySQL, и все работники подключаются к ней. Пока это работает, но я бы хотел:
- исключить межпроцессную передачу данных - i. е. выполнить SQL в процессе
- постоянно хранит данные в памяти (я имею в виду, 25 МБ!)
- не загружать указанные 25 МБ отдельно в каждый процесс (т.е. как-то хранить его в общей памяти)
Поскольку все это чтение, проблем с одновременным доступом не существует, и блокировка не требуется. Время от времени происходит обновление данных, но это происходит нечасто, и я готов отключить для них весь шебанг.
Доступ осуществляется через довольно ванильные SQL SELECT. Нет подзапросов, нет соединений. LIKE условия - самая модная особенность, когда-либо использовавшаяся. Индексы, однако, очень необходимы.
Вопрос - может ли кто-нибудь придумать библиотеку базы данных, которая обеспечила бы цели, изложенные выше?