Hola gente,
Tengo una duda acerca de como mejorar una implementación de un sistema
de banners que tengo montado, siento que como la cosa crezca un poco
me puede penalizar bastante de la manera que está implementado.
Os cuento los requisitos y como lo tengo hecho y a ver si alguien se
lo ocurre alguna manera mas elegante-menos_sucia-sencilla de hacerlo.
Tengo que ser capaz de registrar las impresiones y los clicks que
reciben las entradas de un modelo, en este caso el modelo son banner
lo que viene a ser una imagen que aparece por toda la aplicación, para
luego generar unas estadísticas gráficas por horas, dias, meses y años
de los accesos que reciben.
para ello tengo 4 modelos: banner, hit, click, dump_stat .
En banner mantengo el listado de banner, sus permisos de acceso y
demás lógica de negocio necesaria.
En hit y click introduzco una entrada registrando hora, banner_id y
ip, cada vez uno de los banner recibe una impresión o un click
respectivamente.
De dump_stats os cuento luego cuando veáis como está montando el
tinglado.
Pues bien, lo que hago es lo siguiente una vez al dia lanzo una tarea
rake que coge los hits y los clicks del dia, las procesa en un vector
de 24 valores, luego va actualizando los valores vectores mensuales y
anuales, todo esta logica la tengo metida en metodos de click y hit.
Para tener en cuenta los datos de otros dias todos estos arrays los
almaceno en dump_stats Marshalizados para que me sea mas cómodo
recuperarlos a la hora de añadir nuevos datos o a la hora de pintarlo
con gruff.
Bien problemas que yo le encuentro y me gustaría mejorar de esta sucia
implementación:
Si un dia sale un bug nuevo en la implementación ( que alguno ha
salido ya) y casca ya se descontrola un poco y quedan unos registros
en la tabla sin procesar, pues no procesa nada mas que los del dia, al
estar basado su funcionamiento en la ejecución diaria, debería
conseguir que esto fuera mas flexible.
De momento funciona bien, pero si mañana la aplicación crece mas, me
va a penalizar bastante la lluvia de insert que le caen a la db cada
vez que imprime unos de los banners, sobre todo cuando se dejan
abiertas X páginas en los clientes y el sistema de banners rotatorio
no para de pedir nuevos banner por ajax.
Me gustaría oir ideas o si os habéis visto en una parecida como lo
implementasteis, insultos o lo que os parezca :-p
Gracias
Saludos
Felipe