mają następujące tabele :1. widoki2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary
uruchom zadanie cron w następujących odstępach czasu:
-
uruchamiaj co godzinę i wstępnie agreguj widoki dla tej godziny z tabeli widoków i zapisz wstępnie zagregowany wynik w tabeli views_hourly_summary, a także zaktualizuj tabelę views_alltime_summary
-
uruchom na koniec każdego dnia i wstępnie zagreguj widoki dla tego dnia z tabeli godzin i zapisz wstępnie zagregowany wynik w tabeli views_daily_summary
-
uruchamiaj pod koniec każdego miesiąca i wstępnie agreguj widoki dla tego dnia z tabeli godzin i zapisz wstępnie zagregowany wynik w tabeli views_daily_summary
następnie podczas pobierania wyników będziesz musiał wykonać trochę matematyki w następujący sposób:
-
Na przykład, jeśli chcesz pobrać widoki z ostatnich 4 godzin, pobierz dane za pełne 3 godziny z tabeli godzinowej, a pozostałe dane z tabeli widoków w następujący sposób:
wybierz item_id, sum(views) jako viewsfrom views_hourly_summarygdzie godzina pomiędzy concat(left(now() - interwał 3 godziny, 14), '00:00') i concat(left(now(), 14), '00:00' )grupuj według identyfikatora elementu
związek
wybierz item_id, count(1) jako widokiz wyświetleńgdzie datetime pomiędzy (now() - interwał 4 godziny) a concat(left(now() - interwał 3 godziny, 14), '00:00')lub datetime> concat(left( now(), 14), '00:00')grupuj według identyfikatora elementu