Wie löse ich dieses Problem am performantesten?
Phil Z.
- datenbank
0 Sven Rautenberg0 Phil Z.
0 Steel0 Phil Z.
Hello out there,
auf meiner Seite gibt es viele Dinge die man Bewerten kann,
bewerten kann man allerdings nur wenn man angemeldet ist.
Angenommen ich habe 2000 Mitglieder und 4000 Sachen die man Bewerten kann. Man kann jede Sache nur einmal bewerten, falls man dies schon getan hat, wird bei der Sache angezeigt "Sie haben diese Sache schon bewertet".
Angenommen da ist ein Schal.
Dieser Schal hat in der Datenbank in einer Tabelle die Id "200".
Dann würde ich für jedes Mitglied, die diesen Schal bewertet hat, folgendes in eine seperate Tabelle schreiben:
id_der_bewertung Id_Der_Sache Mitglied_das_bewertet_hat
Aber wenn jedes mitglied z.b. 100 sachen bewertet, dann sind das 200.000 Datenbankeintragungen!
Kann man das nicht anders lösen?
Hab schon überlegt das irgendwie per Cookie zu machen, aber die können ja einfach gelöscht werden. Gibts da nicht noch andere Möglichkeiten?
Liebe Grüße
Phil Z.
Moin!
Angenommen da ist ein Schal.
Dieser Schal hat in der Datenbank in einer Tabelle die Id "200".
Dann würde ich für jedes Mitglied, die diesen Schal bewertet hat, folgendes in eine seperate Tabelle schreiben:id_der_bewertung Id_Der_Sache Mitglied_das_bewertet_hat
Aber wenn jedes mitglied z.b. 100 sachen bewertet, dann sind das 200.000 Datenbankeintragungen!
Ja und?
200.000 Datensätze sind doch ein Klacks für eine Datenbank. Erst recht, wenn vernünftig indiziert wird.
Viel unüerformanter wäre es, wenn du alle 100 Dinge, die ein Mitglied bewertet hat, in einem Cookie speicherst. Nur mal angenommen, jedes Ding würde aus einer vierstelligen ID bestehen, plus ein Trennzeichen, dann wären das 5 * 100 Zeichen = 500 Bytes extra, die der Client bei jedem Request immer wieder mitschickt und die der Server immer wieder mit auswerten muß. Das ist noch viel unschöner, zumal die Menge und Länge von Cookies begrenzt ist.
Dieses Forum hier speichert sich für jeden registrierten Benutzer, welche der mehreren tausend Postings auf der Startseite schon gelesen wurden. Ebenso erlaubt es benutzerdefinierte Markierungen von Postings als "interessant", merkt sich den Auf- und Zugeklappt-Status der einzelnen Threads, und bietet generell viele Anpassungsmöglichkeiten. Aber du wirst ja nicht behaupten, dass das Forum deswegen langsam ist.
- Sven Rautenberg
Hi.
Danke, dein Post hat mich beruhigt.
Angenehmen Abend noch.
Liebe Grüße
Phil Z.
Hi!
Nun, du wirst ja wohl nicht MS Access als Datenbank benutzen, oder? Das hat in der Tat die Angewohnheit bei mittleren DBgroessen (so ab 1GB) den Geist aufzugeben.
Hi.
Nein, ich benutze MySQL 5.*