AndiLeni / statistics

Statistik Addon zur Erfassung von Seitenaufrufen. Für das CMS Redaxo.
MIT License
32 stars 5 forks source link

Tabellen werden riesig #126

Closed VIEWSION closed 4 days ago

VIEWSION commented 1 month ago

Hi,

ich hab das Problem dass die Tabellen ungewöhnlich groß werden. Das AddOn ist jetzt ca. 1 Jahr aktiv und allein die rex_pagestats_sessionstats hat schon fast 150MB. Kann das sein?

image

Danke!

AndiLeni commented 1 month ago

Ja, das ist (leider) so. Die sessionstats kann ich im Gegensatz zu den anderen Statistiken nicht direkt beim Besuch der Seite aggregieren sondern muss für jeden Aufruf einen Eintrag in der Tabelle anlegen.

VIEWSION commented 1 month ago

Ok - Wie könnte man das optimieren? Wenn ich das über mehrere Jahre laufen lassen möchte, wird das so nicht mehr funktionieren. Man bräuchte wohl so eine Art Archivierung.... Ich hab mir ehrlich gesagt noch nicht genau angesehen wie das technisch funktioniert, aber ich kann mich da gerne mit einbringen.

AndiLeni commented 1 month ago

Man müsste es machen wie Matomo und zwei Datenhaltungen implementieren. Einmal die Rohdaten wie jetzt, und einmal eine aggregierte Archivierung die beim Aufrufen des Addons oder per Cronjob getriggert wird. Aber dann kann man auch gleich Matomo nutzen und aus Redaxo die Besuche per API in Matomo bringen. Dieses Addon ist eher nur für kleine bis mittlere Webseiten ausgelegt.

Was du auch machen kannst, ist die Erfassung der Sessionstats deaktivieren. Dann hast du aber keine Infos mehr zu Besuchsdauer etc.

VIEWSION commented 1 month ago

Hmm... Ok - ich check das mal mit Matomo. Was mir halt gefällt ist die Tatsache dass man mit deinem AddOn im Frontend nicht erkennen kann ob da ein Tracker läuft. Bei Matomo wird ja standardmäßig ein JS geladen... aber ich glaube da gibt es auch eine Alternative über PHP... muss ich mal testen. Danke!

AndiLeni commented 1 month ago

@VIEWSION schau mal hier, es gibt einen PHP Tracker für Matomo. https://github.com/matomo-org/matomo-php-tracker/ und https://developer.matomo.org/api-reference/PHP-Matomo-Tracker. Da kannst du bestimmt relativ einfach im Projekt-Addon damit einen Request absetzen wenn ein Seitenaufruf stattfindet.

alxndr-w commented 6 days ago

Folgende Optimierungen sind auf Datenbankebene möglich:

  1. Hash-Felder benötigen nicht varchar(255), sondern varchar(40) oder char
  2. Gleiches gilt für rex_pagestats_sessionstats.token
  3. rex_pagestats_bot alle varchar-Felder können kürzer
  4. rex_pagestats_data.type könnte enum/set sein
  5. rex_pagestats_sessionstats.visitduration und .pagecount könnten int(5) unsigned oder kleiner sein
  6. rex_pagestats_referer.referer könnte vermutlich kürzer sein varchar(255), die Information wird praktisch nicht benötigt wenn im Wesentlichen die Domain interessant ist.
  7. rex_pagestats_urlstatus.status könnte varchar(24) sein oder nur int(3) unsigend für den HTTP-Statuscode
alxndr-w commented 6 days ago

Das gesagt sind 150 für eine Datenbank doch ein Klacks. Da brauchst du mehr als 10 Jahre, bis die Datenbank an den 2 GB kratzt.

alxndr-w commented 4 days ago

Weiter geht's in #115