Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Implementação do banco de dados de recursos mais vistos


tem as seguintes tabelas:1. visualizações2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary

execute um cron job nos seguintes intervalos:

  1. execute a cada hora e pré-agregue as visualizações para essa hora da tabela de visualizações e salve o resultado pré-agregado na tabela views_hourly_summary, também atualize a tabela views_alltime_summary

  2. execute no final de todos os dias e pré-agregue as visualizações para esse dia da tabela de horas e salve o resultado pré-agregado na tabela views_daily_summary

  3. execute no final de cada mês e pré-agregue as visualizações para esse dia da tabela de horas e salve o resultado pré-agregado na tabela views_daily_summary

em seguida, ao buscar resultados, você terá que fazer algumas contas da seguinte forma:

  1. Por exemplo, se você deseja buscar as visualizações das últimas 4 horas, você deve buscar os dados de 3 horas inteiras da tabela horária e, para os dados restantes, buscá-los na tabela de visualizações da seguinte forma:

    selecione item_id, sum(views) as viewsfrom views_hourly_summarywhere hora entre concat(left(now() - intervalo 3 horas, 14), '00:00') e concat(left(now(), 14), '00:00' )grupo por item_id

    União

    selecione item_id, count(1) como viewsfrom views onde datetime entre (now() - intervalo 4 horas) e concat(left(now() - intervalo 3 horas, 14), '00:00') ou datetime> concat(left( now(), 14), '00:00')grupo por item_id