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

Implementering af Most Viewed feature database

har følgende tabeller:1. visninger 2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary

få et cron-job kørt med følgende intervaller:

  1. kør hver time og præaggreger visningerne for den time fra visningstabellen og gem det præaggregerede resultat i tabellen views_hourly_summary, opdater også tabellen views_alltime_summary

  2. kør i slutningen af ​​hverdagen og præaggreger visningerne for den pågældende dag fra timetabellen og gem det præaggregerede resultat i tabellen views_daily_summary

  3. kør i slutningen af ​​hver måned og præaggreger visningerne for den pågældende dag fra timetabellen og gem det præaggregerede resultat i tabellen views_daily_summary

næste gang, når du henter resultater, bliver du nødt til at lave noget matematik som følger:

  1. Hvis du f.eks. vil hente visningerne for de sidste 4 timer, henter du de 3 hele timers data fra timetabellen, og for de resterende data henter du dem fra visningstabellen som følger:

    vælg item_id, sum(views) som views fra views_hourly_summarywhere time mellem concat(left(now() - interval 3 hour, 14), '00:00') og concat(left(now(), 14), '00:00' )gruppe efter item_id

    fagforening

    vælg item_id, count(1) som visninger fra visninger, hvor datetime mellem (now() - interval 4 hour) og concat(left(now() - interval 3 hour, 14), '00:00') or datetime> concat(left( now(), 14), '00:00') grupper efter item_id



  1. Veltalende at finde rækken med maks. værdi med gruppering

  2. Har problemer med at oprette en midlertidig tabel fra en UNION

  3. SQL Server-isolationsniveauer:A-serie

  4. Laravel med Docker-problem, der forbinder MySQL