Pergunta

Tenho pesquisado algoritmos de popularidade usados ​​em sites como Reddit, Digg e até mesmo Stackoverflow.

Algoritmo 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

Sempre realizei ordenações simples dentro do SQL, estou me perguntando como devo lidar com tal ordenação.

Deveria ser usado para definir uma tabela, ou poderia construir um SQL com a ordenação dentro da fórmula (sem prejudicar o desempenho)?

Também estou me perguntando se é possível usar vários algoritmos de ordenação em diferentes ocasiões, sem incorrer em problemas de desempenho.


Estou usando Django e PostgreSQL.

Ajuda seria muito apreciada!^^

Foi útil?

Solução

Você deve armazenar em cache sua classificação de popularidade em uma coluna própria e atualizá-la quando os valores subjacentes mudarem.Você também deve configurar um índice de banco de dados nessa coluna.Se você também armazenar em cache o resultado de suas consultas mais comuns, terá tomado as medidas mais eficazes para o desempenho de suas consultas de popularidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top