phpbar.de logo

Mailinglisten-Archive

klickstatistik ?

klickstatistik ?

Kai Hackemesser kaha at gmx.de
Don Feb 13 18:13:12 CET 2003


Quoting Nikolas Hagelstein <hagelstein at hauptsache.net>:

> > mir fuer die Anzeige jeweils das gesamte Recordset ("SELECT
> > ART_ID, COUNT(*)
> > FROM CLICKS GROUP BY ART_ID, ORDER BY COUNT(*), ART_ID") holen,
> > den aktuellen
> > Artikel_ID suchen und dann den vorigen und den naechsten Satz im
> > Recordset

> wird es ..ca 18k artikel..
> wenn man das in ner schleife durchtraversieren muss ...

Also ich weis jetzt nicht, ob und wie es unter mysql geht, aber unter der 
ADO2.7 gibt es eine SEEK-Funktion, die recht fix ist. Haengt natuerlich von der 
darunterliegenden DB und deren Konfiguration ab.
 
> > eine temporaere Tabelle arbeiten, in welche du die Ergebnisse
> > fuetterst, um sie fuer die Session zu halten.

> das koennte schwierig werden, je nachdem wieviel leute da gerade drauf
> zugreifen, hat man dann ja ziemlich viele tabellen....

Dann halt nicht auf die Session temporaer halten, sondern global, und eine 
timer-variable irgendwo entscheidet, dass die Daten refreshed werden muessen.

> Wie machen das andere DBs ? mit views wahrscheinlich oder ?

Erstens mal so, aber auch mit "gecacheten" Daten. ebay z.B. aktualisiert seine 
Geboteseiten auch nicht mit jedem Klick.

> Wenn das nicht realtime sein muesste waere das ja einfach, dann koennte
> man das ranking einmal pro tag/monat erstellen.

Einmal alle 10 Minuten oder spaetestens beim naechsten Request waere doch schon 
fein, oder? Du kannst ja jedem deiner Clienten unter die Liste ein "Statistik 
erstellt am xx.xx.xxxx um yy:yy:yy" setzen, und niemand wuerde meckern. Wieso 
muss das denn Realtime sein? In dem Moment, wo du die Daten anzeigst, sind sie 
ja auch schon nicht mehr aktuell.

Mach dir doch mal eine Testkonstruktion, wo du eine Tabelle Clicks(Art_ID INT
(11) Primary Key, Datum INT(11)) strickst, die du mit Randomdaten von 
meinetwegen 2,5 Millionen Clicks zu deinen Artikeln fuetterst und dann miss ein 
paar mal die Performance beim Erstellen des Queries. Das sollte relativ schnell 
zu programmieren sein. Pack das ganze Ergebnis mal in eine temporaere Tabelle 
mit Index auf Art_ID und suche nach dem aktuellen Satz.

> noch irgendne andere idee ?
Vielleicht was mit gecacheten Zwischenergebnissen je nach Beduerfnissen, um pro 
Tag auf maximal die Anzahl an Artikeln an Records zu kommen.
Oder eine weitere Spalte, die einen Countwert enthaelt. Dann koennte man in 
einer Maintainfunktion den Countwert aller Klicks bereits in der Kerntabelle 
pro Tag zusammenfassen.

Fuer mehr Ideen bekomme ich ein Beraterhonorar ;-)

ciao!
Kai Hackemesser

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive