Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Bonne pratique] Stocker un très grand nombre d'entrées

Les bases de données en générales sont-elles adaptées ?

    4 septembre 2011 à 18:12:34

    Salut à tous,

    Je reviens vers vous aujourd'hui pour une question qui va peut-être vous sembler idiote, mais j'ai un doute sur le meilleur moyen d'attendre mon objectif :
    Stocker toutes les vues d'un site sous forme individuelle, afin d'effectuer diverses opérations statistiques sur ces vues.

    Pour le moment, voilà la meilleure solution qui m'est venue à l'esprit : une table 'stats_views' dans une base de donnée MySQL, contenant les champs suivants :
    • - episode_id - smallint(5) - INDEX
    • - user_id - mediumint(8) - INDEX
    • - remote_addr - varchar(30)
    • - time - datetime


    J'ai mis en INDEX les champs sur lesquels je comptais faire le plus d'opérations, c'est à dire :

    SELECT COUNT(*) FROM stats_views WHERE episode_id = :episodeID;
    SELECT COUNT(*) FROM stats_views WHERE episode_id = :episodeID AND user_id = :userID;
    


    Il est clair que cette table va contenir énormément de données, et je me demandais si cette solution était adaptée à me demande...

    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      4 septembre 2011 à 20:20:11

      Google Analytics fait ça très bien :)
      • Partager sur Facebook
      • Partager sur Twitter
        4 septembre 2011 à 20:33:37

        J'utilise déjà Google Analytics, mais le but ici n'est pas d'avoir des statistiques globales du site. Il faudrait pouvoir enregistrer chaque vue sur une vidéo ou une page, pour pouvoir faire des requêtes sur le site après, du style "nombre de vues aujourd'hui sur cet épisode" ;)

        Mon problème concerne seulement le stockage des informations :)
        • Partager sur Facebook
        • Partager sur Twitter
          4 septembre 2011 à 20:52:56

          Bah Google Analytics sait faire ça... il suffit de savoir l'utiliser... Il n'y a pas que la Map monde avec le nombre de visites par ville, il y a plein de possibilités :)

          Bref, pour ce que tu veux faire ta table va très bien. C'est la seule façon de stocker si tu veux avoir des informations aussi sur les utilisateurs. Maintenant, il faut optimiser tes requêtes pour ton interface de statistiques.
          • Partager sur Facebook
          • Partager sur Twitter
            4 septembre 2011 à 21:01:26

            Merci de ta réponse, mais en fait, je me suis mal exprimé. Je connais un certain nombre des possibilités de Google Analytics, mais j'aimerais pouvoir utiliser ses informations, combinées à des données internes au site (style ID Utilisateur) dans mes scripts, pour les afficher sur les pages publiques :)

            Dans tous les cas, merci de ta réponse par rapport à la table, mais je me demande quand même, si avec 50 000 entrées cela ne risque pas d'être trop important... ?
            • Partager sur Facebook
            • Partager sur Twitter
              4 septembre 2011 à 21:57:37

              Citation : R0ro3lectr0

              Merci de ta réponse, mais en fait, je me suis mal exprimé. Je connais un certain nombre des possibilités de Google Analytics, mais j'aimerais pouvoir utiliser ses informations, combinées à des données internes au site (style ID Utilisateur) dans mes scripts, pour les afficher sur les pages publiques :)



              Bah tu peux utiliser l'API de Google Analytics pour recupérer toute les stats que tu veux pour les traiter et les afficher par la suite.

              http://code.google.com/apis/analytics/ [...] perGuide.html
              • Partager sur Facebook
              • Partager sur Twitter
                5 septembre 2011 à 1:17:32

                Effectivement il n'est pas conseillé de refaire le calcul du nombre de personnes en train de visualiser un épisode à chaque affichage de page ;)
                Pour remédier à cela, tu peux créer une colonne intermédiaire dans ta table des épisodes qui stocke le nombre de personnes en train de la visualiser au temps t.

                Avec une tâche CRON qui s'exécute toutes les X secondes, tu refais ce calcul et tu remplis ton champ. Ainsi à chaque affichage de page tu lis cette donnée au lieu d'effectuer un calcul.
                Mais pour ressentir vraiment un effet, il faut que ton site génère un trafic énorme...
                • Partager sur Facebook
                • Partager sur Twitter
                  5 septembre 2011 à 20:50:49

                  50 mille lignes, ouaouh ... Personnellement je connais des gens qui en insèrent 500000 tous les jours et qui maintiennent en permanence un milliard de lignes dans une seule table - certes ce n'est pas du sqlite mais de l'Oracle, mais même avec sqlite je ne craindrais pas 50000 lignes ...

                  Juste pour te faire peur, un petit extrait de cet article (je traduis):
                  "La base de données de Sprint [gros opérateur de télécoms américain] s'étend sur 2.85 trillions de lignes, ce qui en fait la base de données avec le plus grand nombre de lignes (d'insertions si vous voulez) du monde. En pointe, la base de données est sujette à plus de 70000 insertions par seconde d'enregistrements de détail d'appel."

                  Les physiciens font aussi assez fort avec les accélérateurs de particules.

                  Rassuré(e)?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 septembre 2011 à 8:35:05

                    Citation : pythonneries

                    Juste pour te faire peur, un petit extrait de cet article (je traduis):
                    "La base de données de Sprint [gros opérateur de télécoms américain] s'étend sur 2.85 trillions de lignes, ce qui en fait la base de données avec le plus grand nombre de lignes (d'insertions si vous voulez) du monde. En pointe, la base de données est sujette à plus de 70000 insertions par seconde d'enregistrements de détail d'appel."


                    Attention à la traduction : "2.85 trillion" en anglais se traduit par "2,85 billions" en français. 2 850 milliards pour être plus clair, et pas 2 850 000 milliards comme pourrait le laisser penser la version de pythonneries.

                    Sinon je plussoie les deux : un SGBD est parfaitement capable de gérer des millions de lignes sans problème (si on les gère proprement), mais Google Analytics est meilleur pour ce que tu veux faire ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 septembre 2011 à 20:39:53

                      Par ailleurs, il risque d'avoir énormément de doublons pour l'adresse IP, il serait peut-être intéressant de normaliser tout ça.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [Bonne pratique] Stocker un très grand nombre d'entrées

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown