2010-12-13 50 views
0

Je suis en train de me décider à ajouter quelques statistiques à mes sites. Par exemple: "fil le plus consulté ce jour/semaine/année".Quel est le meilleur moyen de gérer les grandes tables comme 'thread_views'?

J'ai besoin d'une table qui enregistre chaque vue, liée à un utilisateur (pour éviter que le même utilisateur n'ajoute plusieurs vues) et thread, et avec un horodatage.

Mais ce serait une grande table (en lignes). Est-ce le chemin à parcourir?

Répondre

0

La réponse dépend d'un certain nombre de choses, telles que le nombre de threads, le nombre de vues, le matériel dont vous avez la charge typique, le rapport lecture/écriture, la précision requise, etc., etc.

Une resonable réponse à votre question sans connaître les détails de votre scénario spécifique est de créer la table que vous décrivez:

thread_views(
    thread_id references thread(thread_id) 
    ,user_id references user(user_id) 
    ,timestamp 
    ,primary key(thread_id, user_id) 
) 

l'approche ci-dessus vous donne la flexibilité et les performances assez bon pour le scénario typique.

J'ai récemment répondu à deux questions similaires que vous pouvez consulter pour avoir des idées.

Count article comments et Count visitor hits per day

Un dernier point est que bon nombre des principales bases de données comprend des outils pour l'agrégation des données. Ces outils vous permettent d'avoir un modèle de données normalisé tout en bénéficiant de la plupart des avantages avec une table de statistiques précalculée.