Вопрос проверяет, умеете ли вы отделять “оперативные данные для быстрого ответа” от “сырых данных для аналитики”, выбирать подходящее хранилище и строить быстрые агрегации без тяжёлых запросов на критическом пути.
Короткий ответ
Для быстрого runtime-доступа обычно делают отдельный слой “профиля пользователя”: компактные данные, оптимизированные под чтение, часто в Redis или в отдельной таблице/витрине. Сырые события (клики, просмотры) хранят отдельно, а агрегаты (топ категорий, счётчики за 7/30 дней) считаются асинхронно и складываются в быстрый store. В запросе сервиса читают уже готовые агрегаты, а не пересчитывают их. Важно продумать TTL/инвалидацию, версионирование схемы профиля и частичные обновления, чтобы не перетирать данные.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.