hebben de volgende tabellen:1. weergaven2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary
laat een cron-taak uitvoeren met de volgende intervallen:
-
voer elk uur uit en aggregeer de views voor dat uur uit de views-tabel en sla het pre-aggregated resultaat op in de views_hourly_summary tabel, werk ook de views_alltime_summary tabel bij
-
aan het einde van elke dag uitvoeren en de weergaven voor die dag preaggregeren uit de urentabel en het vooraf samengevoegde resultaat opslaan in de tabel views_daily_summary
-
aan het einde van elke maand uitvoeren en de weergaven voor die dag preaggregeren vanuit de urentabel en het vooraf samengevoegde resultaat opslaan in de views_daily_summary tabel
vervolgens moet je bij het ophalen van resultaten wat rekenwerk doen als volgt:
-
Als u bijvoorbeeld de weergaven van de afgelopen 4 uur wilt ophalen, haalt u de gegevens van 3 hele uren op uit de uurtabel en haalt u de overige gegevens als volgt uit de weergaventabel:
selecteer item_id, sum(views) as viewsfrom views_hourly_summarywhere uur tussen concat(left(now() - interval 3 hour, 14), '00:00') en concat(left(now(), 14), '00:00' )groeperen op item_id
vakbond
selecteer item_id, count(1) as viewsfrom viewswhere datetime tussen (now() - interval 4 uur) en concat(left(now() - interval 3 hour, 14), '00:00') of datetime> concat(left( now(), 14), '00:00')groeperen op item_id