Je souhaite implémenter un compteur de vues orienté utilisateur (similaire à ce que SO a pour les vues de questions) qui suit le nombre de vues uniques vers une page. Il y a quelques questions similar ici mais aucune ne semble répondre complètement à ma question.Implémenter un compteur de vue de page unique?
Quelle serait la meilleure configuration pour cela (en termes de tables de base de données, etc.)? Serait-il bon d'ajouter une colonne 'views' à la table 'questions' et de l'incrémenter simplement sur chaque page? Et si je veux que les vues soient uniques, je suppose que je pourrais avoir une autre table avec des identifiants de questions et adresses IP et n'augmenter la colonne 'view' que s'il n'y a pas déjà une entrée avec l'adresse IP actuelle. Cependant, cette table 'ip-view' deviendra très vite très populaire ... Je m'inquiète surtout de devoir stocker chaque page vue et chaque adresse IP dans une table. Comment cela pourrait-il être optimisé afin qu'il ne devienne pas un goulot d'étranglement au niveau des performances? Y a-t-il une meilleure approche que celle que j'ai décrite? Veuillez noter qu'il est très important pour moi que seules les vues uniques soient comptabilisées. En plus de suggérer des méthodes de mise en œuvre, je voudrais également mieux comprendre où les problèmes de performance entrent en jeu en supposant l'approche naïve de simplement vérifier si la propriété intellectuelle existe et mettre à jour la colonne «vue» sur chaque page vue. Est-ce que le problème principal est une grande quantité d'insertions (en supposant un trafic important) ou plus la taille de la table de mapping objet-ip (qui pourrait être énorme puisqu'une nouvelle ligne sera insérée par question pour chaque nouveau visiteur). Est-ce que les conditions de course devraient être considérées (j'ai juste supposé qu'une instruction update/increment sql était atomique)? Désolé pour toutes les questions mais je suis juste perdu quant à la façon dont je devrais aborder cela.
Vérifiez ma réponse ici, peut-être: http://stackoverflow.com/questions/1269968/incremented-db-field/1269973#1269973 –