Quiero implementar un contador de vista orientado al usuario (similar al SO para las vistas de preguntas) que rastrea el número de vistas únicas en una página. Hay un par de preguntas similar aquí, pero ninguna parece responder a mi pregunta por completo.¿Implementar un único contador de vista de página?
¿Cuál sería la mejor configuración para esto (en términos de tablas de bases de datos, etc.)? ¿Sería bueno agregar una columna de "vistas" a la tabla de "preguntas" y simplemente incrementarla en cada vista de página? Y si quiero que las vistas sean únicas, creo que podría tener otra tabla con id de pregunta y direcciones IP y solo incrementar la columna 'ver' si todavía no hay una entrada con la IP actual. Sin embargo, esta tabla 'ip-view' se volvería enorme rápidamente ... Principalmente me preocupa la sobrecarga de tener que almacenar cada vista de página y cada IP en una tabla.
¿Cómo se podría optimizar esto para que no se convierta en un cuello de botella de rendimiento? ¿Hay un mejor enfoque de lo que describí? Tenga en cuenta que es muy importante para mí que solo se cuenten las vistas únicas.
Actualización: además de sugerir métodos de implementación, también me gustaría entender dónde entran en juego los problemas de rendimiento, asumiendo el ingenuo enfoque de simplemente verificar si existe la IP y actualizar la columna 'ver' en cada vista de pagina. El problema principal es la gran cantidad de inserciones (suponiendo mucho tráfico) o es más el tamaño de la tabla de asignación de objeto a IP (lo que podría ser enorme ya que se insertará una nueva fila por pregunta para cada nuevo visitante único). ¿Deben considerarse las condiciones de carrera (simplemente asumí que una instrucción update/increment sql era atómica)? Perdón por todas las preguntas, pero estoy perdido en cuanto a cómo debería abordar esto.
Compruebe mi respuesta aquí, posiblemente: http://stackoverflow.com/questions/1269968/incremented-db-field/1269973#1269973 –