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:
-
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
-
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
-
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:
-
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