Mysql
 sql >> Database >  >> RDS >> Mysql

Implementazione del database delle funzionalità più viste

avere le seguenti tabelle:1. visualizzazioni2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary

eseguire un processo cron ai seguenti intervalli:

  1. esegui ogni ora e preaggrega le visualizzazioni per quell'ora dalla tabella delle visualizzazioni e salva il risultato preaggregato nella tabella views_hourly_summary, aggiorna anche la tabella views_alltime_summary

  2. esegui alla fine di ogni giorno e preaggrega le visualizzazioni per quel giorno dalla tabella delle ore e salva il risultato preaggregato nella tabella views_daily_summary

  3. esegui alla fine di ogni mese e preaggrega le visualizzazioni per quel giorno dalla tabella delle ore e salva il risultato preaggregato nella tabella views_daily_summary

successivamente, durante il recupero dei risultati, dovrai fare un po' di matematica come segue:

  1. Ad esempio, se desideri recuperare le visualizzazioni delle ultime 4 ore, dovresti recuperare i dati delle 3 ore intere dalla tabella oraria e per i dati rimanenti recuperarli dalla tabella delle visualizzazioni come segue:

    seleziona item_id, sum(views) as viewsfrom views_hourly_summarywhere ora tra concat(left(now() - interval 3 hour, 14), '00:00') e concat(left(now(), 14), '00:00' )raggruppa per item_id

    unione

    seleziona item_id, count(1) come viewsfrom viewswhere datetime tra (now() - intervallo 4 ore) e concat(left(now() - interval 3 hour, 14), '00:00')o datetime> concat(left( now(), 14), '00:00')raggruppa per item_id