Задать вопрос
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 миллиона в сутки
  • Вопрос задан
  • 655 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 1
terrier
@terrier
Миллион пользователей в сутки - это 11 запросов в секунду - копейки для postgresql на хоть сколько либо нормально настроенном железе, никакой Redis вам не нужен.
Окей, учитываем, что пользователи приходят неравномерно в течение дня плюс есть запросы на дублирующий insert, но в любом случае простой
INSERT ... ON CONFLICT DO NOTHING
вам абсолютно достаточно.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект