Насколько велика потребность в исторических данных в этом случае?Моей первой мыслью было бы усечь данные старше определенного порогового значения или переместить их в архивную таблицу, которая не требует такого же частого или быстрого доступа, как ваши текущие данные.
Вы также упоминаете о сохранении данных за 90 дней.на пользователя, но данные используются только для отображения графика изменений в рейтинге за последние 30 дней.Используются ли дополнительные 60-дневные данные для анализа изменений за предыдущие периоды?Если нет необходимости хранить эти данные (или, по крайней мере, не хранить их в первичном хранилище данных, согласно моему первому предложению), вы аккуратно сократите количество ваших данных на две трети.
У нас есть полная картина, хотя?Если у вас есть ежедневная запись на пользователя и у вас есть 90 дней под рукой, у вас должно быть порядка четверти миллиона пользователей, если вы создали более двадцати миллионов записей.Это так?
Обновление:
Основываясь на комментариях ниже, я подумаю: если у вас сотни тысяч пользователей, и вы должны сохранить часть данных для каждого изих, каждый день в течение 90 дней, то в конечном итоге у вас будут миллионы фрагментов данных - не существует простого способа обойти это.То, что вы можете посмотреть, это минимизация этих данных.Если все, что вам нужно представить, это вычисленный ранг на пользователя в день, и предполагать, что ранг - это просто числовая позиция для данного пользователя среди всех пользователей (например, целое число от 1 до 200000), хранение двадцати миллионов таких записей не должнонеоправданно напрягать ресурсы базы данных.
Итак, что именно вас беспокоит?Объем данных (т. Е. Занимаемое место на жестком диске) должен быть относительно управляемым в соответствии с описанным выше сценарием.Вы должны быть в состоянии управлять производительностью с помощью индексов, до определенной точки, после которой упомянутые концепции усечения и разбиения данных могут вступить в игру (например, хранить блоки пользователей в разных таблицах или базах данных, хотя это не идеальный дизайн)..)
Другая возможность заключается в том, что хотя специфика несколько выходит за рамки моей компетенции, у вас, кажется, есть идеальный кандидат на OLAP-куб , здесь: у вас есть факт (ранг)что вы хотите просмотреть в контексте двух измерений (пользователь и дата).Существуют инструменты для эффективного управления такого рода сценариями, даже для очень больших наборов данных.