В памяти mongodb для приложений с интенсивным чтением
У меня есть проект, в котором данные доступны только для чтения (вообще без записи), и для каждого запроса выполняется несколько тысяч операций чтения, и поэтому узким местом является получение данных из базы данных.
Мы запускаем tokumx для tmpfs (~12 ГБ сжатой базы данных), и он все еще медленный, поскольку сериализация и обмен данными через сокеты требуют значительного времени, поэтому я хотел "кэшировать" одну критическую коллекцию из 4,5 млн документов, доступ к которым осуществляется с помощью одного простого запроса. В конце концов, мы можем перенести всю базу данных в какое-то хранилище данных в памяти, поскольку это сделает ее еще быстрее.
На данный момент я думал о том, чтобы просто использовать простую хэш-карту, загружаемую при запуске приложения, но я не уверен, что это лучший способ сделать это:) Другие опции, такие как Fongo, все созданы для модульного тестирования, и я не уверен, что они достаточно быстры для такой ситуации
Любые предложения, что использовать для этой проблемы?
1 ответ
Я предлагаю вам проверить библиотеку Google гуавы.
https://github.com/google/guava
С помощью кеша вы можете загружать свои данные при запуске приложения, но если данные не находятся внутри кеша, вы можете создать функцию для запроса вашей базы данных.