Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Implementierung der meistgesehenen Feature-Datenbank

habe die folgenden Tabellen:1. Ansichten2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary

einen Cron-Job in folgenden Intervallen ausführen lassen:

  1. jede Stunde ausführen und die Aufrufe für diese Stunde aus der Views-Tabelle vorab aggregieren und das voraggregierte Ergebnis in der views_hourly_summary-Tabelle speichern, auch die views_alltime_summary-Tabelle aktualisieren

  2. am Ende des Tages ausführen und die Ansichten für diesen Tag aus der Stundentabelle vorab aggregieren und das vorab aggregierte Ergebnis in der Tabelle views_daily_summary speichern

  3. am Ende jedes Monats ausführen und die Aufrufe für diesen Tag aus der Stundentabelle vorab aggregieren und das vorab aggregierte Ergebnis in der views_daily_summary-Tabelle speichern

Als nächstes müssen Sie beim Abrufen von Ergebnissen wie folgt rechnen:

  1. Wenn Sie beispielsweise die Ansichten für die letzten 4 Stunden abrufen möchten, würden Sie die Daten für die 3 ganzen Stunden aus der Stundentabelle abrufen und für die verbleibenden Daten wie folgt aus der Tabelle „Ansichten“ abrufen:

    select item_id, sum(views) as viewsfrom views_hourly_summarywhere hour between concat(left(now() - interval 3 hour, 14), '00:00') and concat(left(now(), 14), '00:00' )gruppieren nach item_id

    Gewerkschaft

    select item_id, count(1) as viewsfrom viewswhere datetime between (now() - interval 4 hour) and concat(left(now() - interval 3 hour, 14), '00:00') or datetime> concat(left( now(), 14), '00:00')group by item_id