Benutzer Statistiken

Rallenaldo

Mitglied
Hallo.

Ich entwickle derzeit eine WebApplication, in der sich User anmelden und eigene Profilseiten erstellen können. Ich würde gerne die Zugriffsstatistiken auf diese Profilseiten "speichern" und den Benutzern in deren Kontrollzentrum zur Verfügung stellen. Damit der Benutzer z.B. sieht, wie oft seine Profilseite aufgerufen wurde, wie lange die Leute auf seiner Seite waren etc.

Ich bin mir allerdings nicht ganz sicher ob ich bei der Google Suche auf die richtigen Tools gestoßen bin. Meist werden nur die Server-Log Files durchsucht. Eines dieser Tools ist z.B. AWStats. Teilweise scheint mir auch Google Analytics das richtige zu sein.

Ich bin wie gesagt allerdings nicht sicher, ob diese Tools nicht eher für den Administrator der Seite, in diesem Fall mich, sind. Hat jemand schon Erfahrungen gemacht und kann mir ein geeignetes Framework nennen?
 

Thallius

Top Contributor
Verstehe ich nicht. Wozu braucht man da ein Framework. Jedesmal wenn eine Profilseite eines Users aufgerufen wird, erhöhst du einen Counter in einer Spalte "Calls" in der User-Tabelle oder wie auch immer.
 

Rallenaldo

Mitglied
Hi.

Das ist ja eigentlich genau das, was ich herausfinden will. Ich kann natürlich für sämtliche Statistiken eigene Methoden schreiben und jeweils einen Counter erstellen. Aber ich dachte, dass so etwas evtl schon vorgefertigt gibt. Bei den Zugriffszeiten, wie lange war eine Person auf der Seite, wann war sie auf der Seite etc. , stelle ich mir das schon etwas komplexer vor.
 

Joose

Top Contributor
Aber ich dachte, dass so etwas evtl schon vorgefertigt gibt.

Nach welchen Daten? Jeder hat gerne etwas unterschiedliche Daten zum Anzeigen.
Zum Auswerten kann es sicher ein Framework geben, die Daten aber zu speichern musst du schon selber erledigen.

Bei den Zugriffszeiten, wie lange war eine Person auf der Seite, wann war sie auf der Seite etc. , stelle ich mir das schon etwas komplexer vor.

Wie lange eine Person auf meiner Seite war finde ich nicht aussagekräftig.
Ich kann eine Seite öffnen mir einen Kaffee holen und einen Film anschauen, danach wechsle ich die Seite ... war ich nun tatsächlich solange auf der Seite? ;)
Zugriffszeiten und Zugriffszahl sind da schon besser.
 

Rallenaldo

Mitglied
Ok. Vielen Dank für die Hilfe.

Ich muss die Daten ja logischerweise in eine Datenbank speichern. Ist es aus Performance-Gründen dann sinnvoll, alle paar Sekunden eine Datenbankverbindung aufzubauen oder sollten die Daten besser in ein LogFile geschrieben werden und dann nachts in die Datenbank eingetragen werden?
 

Joose

Top Contributor
Man muss sie nicht in einer DB speichern, kannst es auch in Files speichern.
Kommt halt darauf an wie du sie auswerten willst und ob du sie dann gerne als File oder DB hättest.

Wenn du in der Application auf die Profilseite von User XYZ wechselt, dann hast du ja eine DB Verbindung um die Profildaten zu laden.
Entweder verwendest du die gleiche um einen entsprechenden Zugriff zu speichern oder es gibt ein eigene DB Verbindung nur für Zugriffe etc. (ob diese dauerhaft offen ist und du synchron in die DB schreibst oder es asynchron passiert ist dann deine Sache.
Beides hat Vor- und Nachteile
 

Rallenaldo

Mitglied
Hi.

Ich habe meine Statistiken jetzt weitestgehend erstellt und diese werden auch korrekt in eine Datenbank eingetragen. Wenn ich die Statistiken aber nach z.B. einem Monat archivieren will und diese für den Benutzer weiterhin aufrufbar sein sollen, wie lege ich da dann am besten die Datenbankstruktur an?

Aktuelle habe ich einen Benutzer(Entity), der ein Statistik-Objekt(Entity) besitzt.

In dieses Objekt werden aktuell alle Statistiken eingetragen. Um alles etwas übersichtlich zu halten, würde ich gerne monatlich die Statistiken archivieren. Mir ist aber nicht ganz klar, wie ich das in einer Datenbank abbilden soll.

Sollte/Muss ich dann ein Entity StatistikArchiv(identisch zu Statistik nur + Spalte Jahr & Spalte Monat) erstellen und in meinem StatistikObjekt eine List<StatistikArchiv>() erstellen oder ist das eher nicht sinnvoll?
 

Joose

Top Contributor
Ich würde deine Datenbanktabelle einfach um eine Spalte Datum erweitern. Dann kannst du pro Tag einen Datensatz anlegen, extra archivieren würde ich sie nicht unbedingt. Es reicht wenn du dem Benutzer einfach nur die Statistiken der letzten 30 Tage anzeigst. Über einen speziellen Menüpunkt kann er sich halt auch ältere Einträge anschauen -> Archiv.

Künstlich die Daten mehrere Tabellen aufteilen ist nicht sinnvoll.
 

Rallenaldo

Mitglied
Hi.

Das würde dann aber auch bedeuten, dass ich pro Benutzer pro Tag eine Zeile habe. D.h. 365 Zeilen pro Jahr. Wenn ich 100 Benutzer habe, werden das pro Jahr 36.500 Zeilen.

Nach mehreren Jahren wird das doch n bisschen viel oder? Wenn ich dann eine Query erstelle, durchsucht er doch alle Zeilen?
 

Ähnliche Java Themen

Neue Themen


Oben