Popularité algorithme - SQL / Django
-
21-09-2019 - |
Question
Je l'ai cherchée dans les algorithmes de popularité utilisés sur des sites tels que Reddit , Digg et même Stackoverflow .
algorithme 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
Je l'ai toujours effectué simples commandes dans SQL, je me demande comment je devrais traiter avec une telle commande.
Faut-il être utilisé pour définir une table, ou pourrais-je construire un SQL avec le donneur d'ordre dans la formule ( sans nuire à la performance )?
Je me demande aussi, s'il est possible d'utiliser des algorithmes de commande multiples à différentes occasions, sans encourir des problèmes de performances.
J'utilise Django et PostgreSQL.
L'aide serait grandement appréciée! ^^
La solution
Vous devez mettre en cache votre cote de popularité dans une colonne propre et le mettre à jour lorsque les valeurs sous-jacentes changent. Vous devez configurer également un index de base de données sur cette colonne. Ensuite, si vous mettez en cache également le résultat de vos requêtes les plus courantes, vous avez pris des mesures les plus efficaces pour l'exécution de vos requêtes popularité.