Ich habe eine Anwendung, in der die Haupteinheit Story
ist und Benutzer für jede Geschichte abstimmen können. Jede Stimme erhöht ein vote_count
für die Geschichte.
Ich mache mir Gedanken über die Streitfrage in Bezug auf die Story, daher plane ich, einen Zähler für jede Seite zu verwenden Geschichte, um die Stimmen zu verfolgen.
Nun meine Frage: Wie könnte ich eine Liste von Geschichten bekommen, geordnet nach Anzahl der Stimmen? Zum Beispiel: Zeige die 50 am höchsten bewerteten Geschichten.
Mein erster Gedanke ist, dass eine Aufgabe periodisch ausgeführt wird, die die Zählerwerte liest und eine Eigenschaft auf der tatsächlichen Geschichte aktualisiert. Es wäre in Ordnung, wenn die Ergebnisse der Abfrage per Abstimmung etwas veraltet wären.
Es hört sich so an, als ob Sie ein bisschen vorzeitige Optimierung machen. Ich würde die geschärften Zähler überspringen, bis es offensichtlich wird, dass Sie sie brauchen. Wenn du dir sicher bist, dann fang mit allen Mitteln an. Wie beim Ausführen einer periodischen Aufgabe und dem Zwischenspeichern von Ergebnissen in einer Eigenschaft für jede Geschichte kann dies eine weitere vorzeitige Optimierung sein.
Ich habe keine direkte Erfahrung mit Google App Engine, also hoffentlich jemand, der einige Informationen teilen wird.
Das regelmäßige Aufsummieren von Daten kann eine gute Strategie sein, um die starke Streuung von Zählern zu verhindern.
Sie können auch andere Strategien zum Zählen ohne Shards ausprobieren, wie an anderer Stelle beschrieben:
(dort behalten Sie Ihren Zähler in Memcache und leeren den akkumulierten Wert regelmäßig in den Datenspeicher)
Wie wichtig ist Ihre App für kleine Zählfehler?
Tags und Links google-app-engine sharding