datenbank problem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Vergleichen wir doch mal: Laut http://dev.mysql.com/doc/refman/5.0/en/ ... ments.html benötigt ein Integer Feld 4 byte und ein DATE Feld 3 Byte.

Das macht dann bei meiner Variante 11 Byte pro Datensatz. 11 * 35000 = 385000 = 385 kb. Wohlgemerkt nur, wenn wirklich jedes Profil an jedem Tag mindestens einmal aufgerufen wurde - wenn z.B. Jeden Tag nur 100 Profile aufgerufen werden, bleiben gerade mal 7kb übrig. Ausserdem fällt bei meiner Variante das "umschaufeln" weg und du kannst auch spontan die Anzahl Tage erhöhen oder verringern.

Bei deiner Variante fallen für 8 Integer 32 byte Speicher pro Datensatz an. Macht bei voller Auslastung 32 * 5000 = 160000 = 160 kb. Wenn du auch optimierst und nur für tatsächlich aufgerufene Profile Datensätze anlegst, kommst du bei 50 "Stammprofilen" plus 50 unterschiedlichen Profilen pro Tag auf 400 Datensätze, macht 12 kb.

Bei entsprechender Optimierung braucht meine Lösung also sogar weniger Speicher als deine. Aber selbst wenn man vom in der Praxis unrealistischen Fall der Maximalauslastung ausgeht, kommt man noch nichtmal auf ein halbes Megabyte - für aktuelle Server also keine ernstzunehmende Belastung. Und mit entsprechenden Schlüsseln kann man die bei dieser Datenmenge ohnehin geringe Zugriffszeit nochmal optimieren.
KB:knigge
Benutzeravatar
metty84
Mitglied
Beiträge: 159
Registriert: 08.03.2007 13:13
Wohnort: Marienberg
Kontaktdaten:

Beitrag von metty84 »

k also mal als übersicht

bei meiner lösung sind gleich sieben tage abgedeckt mit den 32 byte pro datensatz allerdings existiert für jeden user dessen profil innerhalb der letzten 7 tage aufgerufen wurde ein datensatz

bei deiner lösung brächte man für 7 tage sieben datensätze a 11 byte sind also 77 byte und es existieren 1-7 datensätze für jeden user dessen profil in den letzten 7 tagen aufgerufen wurde.


deine lösung braucht also weniger resourcen sofern das jeweilige profil nicht öfter als alle drei tage aufgerufen wird. und wen es öfter aufgerufen wird ist meine lösung sparsammer mit den resourcen.

aber im moment stecke ich grade an ner ganz anderen problematik fest und zwar bei der auswertung da ja die topliste nicht nach den einzelnen tagen sortiert wird sondern nach den summen der tage. und ich grade 0 plan habe wie ich das umsetzen soll. weder bei dem einen noch bei dem anderen system. warscheinlich wird es sich danach entscheiden für welche von den beiden möglichkeiten es eine gute variante zur auswertung gibt. hast du dafür vileicht nen vorschlag?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Ich sag's ja, nimm die Pyramidenversion. :P Da ist das sogar schon mit Datum dabei und du kannst es für jeden User nach Tag aufschlüsseln oder für alle zusammen oder meintwegen nur den Aufruf der Moderatorprofile innerhalb der letzten 3 Tage aufschlüsseln... Wie Du es willst.

Deine Version braucht zu viel Verwaltungsaufwand und ist unhandlich.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Du solltest dich auf jeden Fall stärker mit mysql auseinandersetzen. Egal welche Version du nun umsetzt wirst du um diese Sortierung nicht herumkommen. So in etwa würde sie wohl funktionieren:

Code: Alles auswählen

Select (feld1 + feld2) as summe FROM tabelle ORDER BY (feld1 + feld2) DESC LIMIT 0, 10
bzw

Code: Alles auswählen

SELECT sum(feld1) as summe FROM tabelle WHERE id = x AND date > ADDDATE(NOW(), INTERVAL -7 DAYS) GROUP BY id ORDER BY sum(feld1) DESC
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Coding & Technik“