Алгоритм популярности - SQL / Django

Я изучал алгоритмы популярности, используемые на сайтах, таких как Reddit, Digg и даже Stackoverflow.

Алгоритм Reddit:

t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes

y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 0, otherwise x}

log(z) + (y * t)/45000

Я всегда выполнял простое упорядочивание в SQL, я задаюсь вопросом, как я должен иметь дело с таким упорядочиванием.

Это должно использоваться для определения таблицы, или я мог создать SQL с упорядочиванием в формуле (не препятствуя производительности)?

Я также задаюсь вопросом, если возможно использовать несколько алгоритмов упорядочивания в различных случаях, не подвергаясь в проблемы производительности.


Я использую Django и PostgreSQL.

Справка очень ценилась бы! ^^

6
задан RadiantHex 22 March 2010 в 23:38
поделиться

1 ответ

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

3
ответ дан 17 December 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: