Ich habe gestern eine Frage auf SO gestellt mit dem Titel Entscheidung und Implementierung eines Trendalgorithmus in Django. Viele Leute schlugen einfache Dinge wie Durchschnitte (exponentiell, gewichtet, usw.) vor. Ich habe ein Modell namens Buch und ein anderes namens Leser:
class Buch(models.Model):
name = models.charField()
class Leser(models.Model):
datum = models.DateField()
buch = models.ForeignKey(Buch)
leser_count = models.PostiveIntegerField()
Eine einfache Struktur. Neue Bücher werden jeden Tag hinzugefügt und die Leserzahl für jedes Buch wird ebenfalls jeden Tag hinzugefügt. d.h. ein Buch wird täglich eine Leserzahl haben, mehrere Datensätze.
Ich muss die Durchschnitte für die Bücher für die aktuelle Woche, den aktuellen Monat und das aktuelle Jahr berechnen. Neben den aktuellen Daten möchte ich auch die historischen Daten beibehalten.
Wenn ich versuchen würde, solche Daten aus der Datenbank abzurufen, wäre das sehr aufwendig. Nicht wahr. Außerdem versuche ich, dieses System zu implementieren, indem ich zunächst einfache Durchschnittswerte verwende, später jedoch die Flexibilität haben möchte, meine Berechnungsmethode zu ändern. Ich habe zwei Optionen -
-
eine, bei der ich die Daten teilweise in einer anderen Tabelle aktualisieren kann, die die berechneten Daten jedes Mal speichert, wenn ein neuer
Leser
-Datensatz hinzugefügt wird. -
zwei, bei der ich die aggregierten Daten jeden Abend durch ein Skript für den aktuellen Tag/Woche/Monat neu erstellen könnte.
Hier sind einige Beispieldaten und Ergebnisse.
Buch Datum Zählen
---- ---------- -----
AAAA 01.01.2012 10
AAAA 02.01.2012 20
AAAA 03.01.2012 30
AAAA 04.01.2012 30
AAAA 05.01.2012 40
AAAA 06.01.2012 10
AAAA 07.01.2012 25
AAAA 08.01.2012 15
AAAA 09.01.2012 10
Der Durchschnitt der Leserzahl für Woche #1 beträgt: 23,5. Der Leserzähldurchschnitt für Woche #2 (was in diesem Fall die aktuelle Woche wäre) beträgt: 12,5 ..und für den aktuellen Monat und das Jahr würde 21,1 betragen
HTH.
Um eine dieser Möglichkeiten auszuprobieren, möchte ich ein System zum Speichern der Daten entwickeln. Ich muss die Durchschnittswerte auf täglicher, wöchentlicher und monatlicher Basis speichern. Ich bin jedoch sehr verloren, was für eine Tabellenstruktur ich implementieren sollte? Ich würde gerne das Rad nicht neu erfinden, wenn möglich, also wenn jemand von Ihnen über Pakete Bescheid weiß, die mir dabei helfen können, wäre das großartig.
Danke.