Мы запускаем приложение, больше похожее на конкурсы, организующие сайты, такие как HackerEarth.com, HackerRank.com. При запуске задач мы видим огромную нагрузку на наш сервер. Проблема в том, что нам нужно активно взаимодействовать с Postgres, чтобы задавать случайные вопросы и затем отправлять их ответы. Есть JOINS между несколькими таблицами, поиском и другими вещами, что приводит к большому трафику данных и делает нашу систему медленной и не отвечающей много раз, что смущает.
Что мы можем сделать, чтобы это стало лучше? Как обрабатывать вещи, которые много взаимодействуют с СУБД, любое кеширование или использование базы данных в памяти. Я много искал в разных источниках, но не смог найти конкретных решений для наших нужд. Как компании организуют базы данных и взаимодействие с пользователями? Какие архитектуры подходят для подобных моделей? Любая информация будет полезна.
Вам необходимо установить мониторинг для сбора показателей и использования Научный метод выявить узкие места.
Затем вы можете планировать, внедрять и тестировать решения.
При необходимости повторите.
В общем, есть пара моментов, о которых вам нужно позаботиться.
Итак, у вас должны быть правильные типы данных столбцов в соответствии с хранимыми данными и индексы столбцов, которые используются для SELECT / JOINs.
Используйте кеширование для данных, которые не должны обновляться при каждой загрузке страницы.
Выделите необходимые ресурсы для вашей СУБД. Убедитесь, что он использует достаточный объем реальной памяти и не использует подкачку.
Не может быть конкретных источников вроде how to do it exactly
, поскольку все зависит от вашего конкретного приложения и данных, которые вы храните.