Question

Je suis en train de comprendre comment on pourrait mettre en place une base de données et / ou d'un modèle afin de gérer différents badges. Permet de prendre le débordement de pile badges comme exemple. Il existe des règles différentes pour chacun et certains pourraient être juste une autre variable (comme 10 commentaires vs 100 commentaires).

Ma question est de savoir comment mettre en place cette validation de type / contrôle dans une application? chaque badge doit avoir sa propre méthode?

Était-ce utile?

La solution

Etant donné que SO exécute hors SQL Server, l'Agent SQL Server pour exécuter périodiquement les statistiques tabulés. La procédure stockée (s) dans le travail insérerait dans un badge / etc tableau lorsque les critères sont remplis.

Triggers serait une autre option, mais leur exécution ne peut être retardé pour la portée de plusieurs utilisateurs.

Autres conseils

C'est ainsi que je le mettre en œuvre si je dois:

Je vais mettre en place un certain gestionnaire de file d'attente (il y a beaucoup de ces logiciels) et écrire un courtier, qui traitera les messages de la file d'attente.

Chaque fois qu'un événement se produit, par exemple: vous avez consulté un sujet, vous avez modifié votre commentaire, vous avez modifié votre réponse, vous avez modifié une autre réponse de personne, vous upvoted, etc etc - vous recueillir un plus de messages, avec description de l'événement. Oui, ce sera vraiment énorme quantité de messages là-bas.

Après avoir collecté cette énorme quantité de messages -. Vous pouvez commencer à un courtier qui traitera des messages par horaire ou en temps réel

Avec ce schéma, vous pouvez étendre un courtier comme badges complexes que vous le souhaitez.

J'imagine certains sont calculés en temps réel, tandis que d'autres sont calculés dans les processus qui fonctionnent par intermittence.

Par exemple, pour le badge qui apparaît lorsque votre réponse obtient 10 upvotes, qui pourraient être calculés en temps réel avec peu de succès de la performance.

Par contre, pour le badge qui vérifie si vous frappez le plafond de réputation quotidienne x nombre de fois, vous auriez probablement eu envie de le faire comme une sorte de traitement par lots, puisque vous cochez seulement à la fin de chaque jour.

La principale préoccupation est de garder les choses en cours d'exécution rapide. Débordement de pile reçoit des milliers (peut-être des dizaines de milliers) de questions par jour, avec probablement des centaines de milliers de commentaires. Tout ce qui est pas trivial de calculer doit être exécuté dans un processus séparé. Il maintient fermement le fonctionnement de base, limitée, et propre, ce qui permet des performances élevées. Exécution de calculs complexes dans les processus en dehors du système d'affichage de base vous permet de le faire sans affecter la capacité des utilisateurs à utiliser le site. Si une tâche est suffisamment complexe, vous pouvez l'échelle horizontalement en lançant juste le même processus sur plusieurs machines.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top