@marklondon

Стоит ли делать кэширование результата запроса из бд?

Приложение - чат-бот, модератор групп. При каждом апдейте от соц. сети я проверяю пользователя на существование в базе данных и если его нет, то я добавляю сведения о нём. Во избежание абьюза со стороны клиентов есть защита от спама запросами, но всё же мне кажется не самая лучшая идея после каждого сообщения проверять человека на наличие в базе данных. Вот я и подумал, стоит ли делать кэширование списка пользователей? Документация языка: "Caching works best with data that changes infrequently and is expensive to generate." Это меня и смутило) Мой список меняется часто (будем считать что в будущем бот будет популярен) и данные сгенерировать очень легко. Поэтому я не знаю, как тут поступить? Оставить как есть или добавить кэширование?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@rPman
Подумай хорошенько, где ты собираешься кешировать и как инвалидировать кеш (проверять что данные в кеше устарели), получишь ответ на этот вопрос почти сразу

Второй вопрос очень важный, как запускается код бота, в режиме получил запрос (реакция от пользователя) и завершил процесс либо процесс запускается как сервис и работает в единственном экземпляре (тоже важно, так как бывает что то типа кластера, но явно не твой случай)?

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

Ну и если продолжать, вариант хранения всего в оперативной памяти может быть накладно если данных ну очень много (гигабайты.. сотни), с другой стороны у тебя бот, маловероятно что твоя клиентская база не поместится в сотню другую мегабайт.

Вот от сюда и думай, что хранить, где хранить надо ли делать запрос в базу или можно из памяти и т.п.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы