 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
29.06.2004, 10:15
|
#1
|
|
TP-Insider
Registriert seit: Apr 2001
Ort: Zürich, Schweiz
|
Brauche Rat zu Userrängen
Hi
Ich möchte ein bisschen ein kompliziertes Userrating einführen (so ähnlich wie in Foren je mehr Beiträge desto höherer Rang).
Nur frage ich mich, wie macht man das am optimalsten, so dass man möglichst wenig Performance braucht:
Ich hab ja eine Bilderdatenbank und da habe ich zwei Tabellen. Eine Tabelle User, eine Tabelle Bilder. PrimaryKey ist eine UserID. Wenn nun jemand mehr ein Bild angeschaut hat, wird das in der Tabelle Bilder aktualisiert. Der Rang eines Users soll durch die Anzahl Views auch beeinflusst werden.
Muss ich jetzt nach jedem Zählerhochzählen eines Bildes, die gesamte Anzahl Views aller Bilder für enien bestimmten User ermitteln und allenfalls dann den Rang in seiner Tabelle aktualisieren, oder erst wenn sich der User selbst einloggt oder wie? Weil mal angenommen ich hätte mal 100'000 Bilder. Braucht das nicht viel Performance wenn ich alle Views erneut zusammenzählen muss?
Oder Idee 2 (gerade ein Geistesblitz  Ich könnte das zwar machen aber auch so wie einen Abwärtscounter in der Tabelle User einfügen. Bei jedem View wird der Viewzähler beim Bild hochgezählt und der Abwärstcounter in der Tabelle User um 1 reduziert. Sobald dieser Counter 0 ist hat der User nen höheren Rang.
Was denkt ihr?
__________________
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
|
|
|
29.06.2004, 10:19
|
#2
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Ich seh das Problem nicht: bei jedem Bildaufruf wird der sowohl der Bild- als auch der Userzähler um 1 erhöht und fertig. Oder hab ich was falsch verstanden?
|
|
|
29.06.2004, 10:40
|
#3
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Ich würd die Hits nicht jedesmal neu zählen lassen, sondern manuell 1 hochzählen lassen, und dann kannste mit ner kleinen Abfrage den Rang aktualisieren..
Ist eigentlich nicht so der Aufwand, ist ja dann nur eine DB Abfrage mehr
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
29.06.2004, 11:03
|
#4
|
|
TP-Insider
Registriert seit: Apr 2001
Ort: Zürich, Schweiz
|
Ne das hast du richtig verstanden. Aber meine Frage ist, ob das klug ist und/oder viel Performance braucht wenn man den
Fall a: verwirklicht, sprich nach jedem neuen View die Totalviews aller Bilder zählt um dann möglicherweise den Rang in der Usertabelle upzudaten
Fall b: nach jedem neuen view sowohl den Viewzähler des bildes hochzählt und den countdown bei user runter
oder ob beide ideen schlecht sind und es was besseres gibt
__________________
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
|
|
|
29.06.2004, 11:04
|
#5
|
|
TP-Insider
Registriert seit: Apr 2001
Ort: Zürich, Schweiz
|
@loki
sah dein Posting erst jetzt. Also würdest du meinen Fall b eher gut finden? Zwei Counter, der beim Bild und der beim User, welcher ganz alleine für den Rang verantwortlich ist. Und bei jedem neuen View zählt man beide hoch?
__________________
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
|
|
|
29.06.2004, 11:23
|
#6
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Ja 2 Counter..
Also der eine jeweils bei den Hits der Bilder und der Andere als die Summe aller Hits, der direkt in der DB abgelegt ist, und nicht jedesmal neu berrechnet wird.
Das jedesmal neu berechnen kannste machen, wenn du wenig Bilder hast, bei denen die Datensätze ständig neu zusammengerechnet werden müssen..
Aber das würde ich in keinem Fall machen.
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
29.06.2004, 12:08
|
#7
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Eigendlich geht das doch auch mit einem einzigen Query..
|
|
|
29.06.2004, 12:37
|
#8
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
was geht mit einem query
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
29.06.2004, 14:04
|
#9
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
Zitat:
|
Zitat von loki
...
Das jedesmal neu berechnen kannste machen, wenn du wenig Bilder hast, bei denen die Datensätze ständig neu zusammengerechnet werden müssen..
Aber das würde ich in keinem Fall machen.
|
ich will mich in die aktuelle Diskussion nicht einschalten, aber DA dreht sich mir der Magen um
Schon mal was von Aggregatsfunktionen gehört?
Irgendwie hab ich das Gefühl, wir verkommen hier zur Dr. Sommer Ecke für PHP 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
29.06.2004, 15:00
|
#10
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Zitat:
|
Zitat von mike
[..]
Schon mal was von Aggregatsfunktionen gehört?
[..]
|
Nein habe ich nicht, aber ich lasse mich gerne aufklären
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
29.06.2004, 15:19
|
#11
|
|
Guest
Registriert seit: Aug 2002
|
Zitat:
|
Zitat von loki
Nein habe ich nicht, aber ich lasse mich gerne aufklären
|
Das sind die Funktionen wie COUNT, MIN(), MAX() usw.
|
|
|
29.06.2004, 15:22
|
#12
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
dann schau in der Doku nach.
http://www.mysql.com/
natürlich könntest auch den Link in deiner Signatur verwenden. Nur so als Anregung...
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
29.06.2004, 15:29
|
#13
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Zitat:
|
Zitat von Strogij
Das sind die Funktionen wie COUNT, MIN(), MAX() usw.
|
Doch die kenne ich.
Ich dachte nur, dass COUNT bei vielen Datensätzen langsam wird..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
29.06.2004, 16:02
|
#14
|
|
TP-Insider
Registriert seit: Apr 2001
Ort: Zürich, Schweiz
|
dachte ich auch. Was ist nun das optimale? COUNT ist bestimmt langsamer als mit nem Counter?!
__________________
http://www.exploreourplanet.net - Ladet eure schönsten Urlaubsbilder hoch!
|
|
|
29.06.2004, 17:01
|
#15
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
jo mei.
in mysql benutzt die aggregatfunktion count scheinbar den index des primärschlüssels. Somit ist das ding pfeilschnell (Ausführungszeit vernachlässigbar)
Wer es nicht glaubt kann eine ganz einfach übung machen.
dazu erstllt man sich eine kleine tabelle füllt sie mit vielen Datensätzen. und wenn ich meine viele, dann sind das mehrere hunderttausend. Dann ab ins mysql-frontend und entsprechende Queries abgestellt.
da zeigt sich dann, dass eine 'select * from...' mörder zeit benötigt (je nach maschine)
ein count(*) jedoch um die 0,01 sek benötigt.
Die Tabelle ist übrigends dann auch wunderbar zum probieren von Auswirkungen von indizes geeignet.
however. ob und wie dann ein count für dein Problem passt, weiss ich net.
Dazu müsste ich mir die Fragestellung mal durchlesen  . Aber ich denke, dass loki jetzt - wo er weiss was eine aggregatfunktion ist, und was diese zu leisten im Stande sind - sicher eine adequate lösung findet 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:24 Uhr.
|
 |