Моя цель здесь - создать систему, аналогичную системе на первой странице reddit.Масштабируемость времени для веб-приложения
У меня есть вещи, и для простоты эти вещи имеют голоса. Лучшая система, которую я сгенерировала, использует распад времени. С половиной времени в 7 дней, если сегодня голосование стоит 20 очков, то через семь дней оно стоит 10 очков, а через 14 дней оно будет стоить 5 очков.
Проблема в том, что, хотя это дает результаты, я очень доволен, она не масштабируется. Каждый голос требует от меня эффективного пересчета стоимости каждого другого голосования.
Итак, я думал, что смогу отменить эту идею. Голосование сегодня стоит 1 балл. Голосование через семь дней стоит 2 балла, а через 14 дней стоит 4 балла и так далее. Это хорошо работает, потому что для каждого голосования мне нужно только обновить одну строку. Проблема в том, что к концу года мне нужен тип данных, который может содержать фантастически огромные цифры.
Итак, я попытался использовать линейный рост, который произвел ужасное ранжирование. Я пробовал полиномиальный рост (возведение в квадрат и кубирование числа дней с момента запуска и подачи сайта), и это дало несколько лучшие результаты. Однако, когда я получаю несколько лучшие результаты, я быстро возвращаюсь к недостижимым числам.
Итак, я прихожу к вам в stackoverflow. У кого есть гениальная идея или ссылка на идею о том, как моделировать эту систему, чтобы она хорошо масштабировалась для веб-приложения.
http://www.seomoz.org/blog/reddit-stumbleupon-delicious-and-hacker-news-algorithms-exposed немного полезно, но с первого взгляда ничто из этого, похоже, не масштабируется. –
Я не вижу ни одной системы, допускающей нелинейный распад, когда вам не придется перечитывать счет в какой-то момент. Вопрос в том, нужно ли вам делать это при каждом голосовании, или, может быть, задание на работу cron? –
cron jobs suck. Это было бы так, но я определенно решил найти непостоянное решение стиля процесса. –