Bonjour,
je souhaiterais avoir votre avis sur le problème suivant :
je suis entrain de créer un site contenant une liste de produits que les internautes peuvent noter. Une note moyenne est calculée pour chaque produit, à partir de l'ensemble des notes des internautes.
Question : à quel moment faut-il que je calcule cette moyenne ? Au moment où l'internaute met sa note, ou via un batch qui tournerait toutes les nuits par exemple ?
Le problème est que si je calcule la moyenne au moment de l'enregistrement de la note, il y a le risque que 2 internautes notent au même moment, et que le calcul soit erroné.
J'ai déjà réfléchi aux solutions suivantes, pouvez-vous me dire quelle est la plus adaptée :
- mettre le mot clé "synchronized" sur la méthode qui sert à calculer la moyenne, afin d'éviter les accès simultanés.
- créer un batch (comme dit précédemment) qui va calculer les moyennes toutes les nuits.
- au moment d'enregistrer la note, faire un traitement asynchrone pour calculer la moyenne en arrière-plan (en mettant toujours un "synchronized")
- mettre des locks en base de données
Quelle est selon vous la meilleure solution ?
Merci beaucoup !
Partager