2011-02-03 4 views
1

Je veux créer un type simple de statistiques pour une page. Comment puis-je stocker le nombre de hits des 7 derniers jours dans la base de données? J'ai juste besoin d'une idée sur la façon de stocker uniquement les données des 7 jours précédents dans la base de données. Quelque chose comme:comment stocker les données des 7 jours précédents en db?

  • février3: 10
  • février2: 11
  • Febraury1: 10
  • January31: 1

et ainsi de suite?

Ai-je besoin de faire comme 7 colonnes pour stocker chaque nombre de coups de jours ou je peux gérer avec une colonne?

Répondre

1

Je vous suggère d'ajouter une autre table

  • pageID - clé étrangère à votre table de page (ou une autre référence)
  • Date
  • coups

et stocker une ligne par page par jour. Vous pouvez ensuite supprimer toutes les lignes de cette table dont la date est> 7 jours comme travail quotidien.

1

Je pense qu'il serait plus facile de simplement stocker chaque visite dans votre base de données et de sélectionner le COUNT() des 7 derniers jours.
Ou vous pourriez faire une table supplémentaire qui a 1 ligne pour chaque jour et il suffit de sélectionner les 7 derniers jours avec la fonction INTERVAL().

+0

En fait, oui, nous avons fait le magasin à chaque fois avant. Le problème avec cela est que la table peut devenir très volumineuse, puis elle devient très lente à interroger/agréger. Nous avons fini par ajouter un travail horaire pour exécuter des statistiques sur la table dans une table de visite agrégée et ensuite rapporté à partir de la table agrégée. Cependant, si vous ne gardez que 7 jours de données, cela pourrait rester gérable, et nous enregistrions/rapportions beaucoup plus que de simples visites. – Rup

+0

Je pense que si votre requête commence à être trop lente, il y a quelque chose qui ne va pas avec l'index ou le serveur. D'après mon expérience, même les tables de 10^6 rangées peuvent toujours faire l'objet d'une recherche avec un timing acceptable (<1 seconde). – gnur

Questions connexes