Je suis curieux de savoir quelle est la meilleure façon de modéliser cela pour des performances optimisées ... pas aussi préoccupé par le réel le temps de l'intégrité des donnéesManière efficace de modéliser les données agrégées d'une relation plusieurs-à-un (par exemple, les votes comptent sur une question stackoverflow)
Je vais continuer avec l'exemple stackoverflow
Question
id
title
Votes
id
user
question
Une question a beaucoup de votes
cependant, nous sommes seulement préoccupés par de nombreuses requêtes avec le nombre total de voix (par exemple montrer à côté de la question).
Une bonne théorie db relationnelle créerait les deux entités (Q et V) comme des relations séparées, nécessitant une jointure puis une somme ou un appel global.
Une autre possibilité consiste à rompre la forme normale et à matérialiser occasionnellement la valeur agrégée des votes en tant qu'attribut dans Question (par exemple, questions-réponses). Cependant, en fonction de la façon dont vous êtes prêt à laisser vos données de vote, vous avez besoin de beaucoup plus de droits sur cet enregistrement de Question ... ce qui entrave les performances.
D'autres techniques impliquant la mise en cache, etc. peuvent être utilisées. Mais je me demandais juste, la performance sage quelle est la meilleure solution? Disons que le site a un trafic plus élevé et reçoit beaucoup plus de votes que de questions.
Ouvert aux modèles non relationnels.
droite. J'ai abordé la matérialisation du nombre de votes suggéré dans la question. Je me demandais s'il y a un autre moyen car cela provoque le double des écritures (verrouiller toutes les lectures) Je sais avec une indexation correcte ça devrait aller. mais si je récupère beaucoup de questions et peut-être que j'ai plusieurs plusieurs à plusieurs relations (par exemple votes et nombre de commentaires), les jointures deviennent méchantes – nategood
Post édité. Veillez à ne pas effectuer d'optimisation prématurée. il doit y avoir une preuve solide, soutenue par des chiffres, de problèmes de performance avant que je ne m'éloigne de la jointure normale. – Andomar