delef
@delef
Разработчик (Crystal, Python, Ruby, PHP, JS)

Отложенное сохранение большого объема статистики?

Всем привет!

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

Сервис занимается сбором статистики активности пользователей (простейшей), сохраняем user_id, app_id (web/mobile/ios/android, etc), date. Сохраняем "отметку" только один раз с уникальным индексом, для того, что бы лишний раз не непрягать СУБД - делаем отметку в Redis, что "отметка" была проставлена. В кабинете статистику обновляем раз в 3-5 минут (сохраняем уже агрегированные данные в другой бд).

Суть вопроса в том, что в последнее время пользовательская активность выросла и часто бывает, что Redis не успевает сохранить строку, как идет 2-3 попытки записи. Возможное решение вопроса - сохранять куда-то эти данные и как-то их сохранять в базу весь пулл раз в 1-2 минуты, но как это сделать более "нормально"? Учитывая, что уникальных юзеров бывает больше 1 миллиона в сутки
  • Вопрос задан
  • 654 просмотра
Пригласить эксперта
Ответы на вопрос 1
terrier
@terrier
Миллион пользователей в сутки - это 11 запросов в секунду - копейки для postgresql на хоть сколько либо нормально настроенном железе, никакой Redis вам не нужен.
Окей, учитываем, что пользователи приходят неравномерно в течение дня плюс есть запросы на дублирующий insert, но в любом случае простой
INSERT ... ON CONFLICT DO NOTHING
вам абсолютно достаточно.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:23
2500 руб./за проект
25 апр. 2024, в 12:21
10000 руб./за проект