Ich habe eine Liste von Benutzern, die nur Administratoren sehen können (= wenige Lesevorgänge). In dieser Liste wird auch die Anzahl der Benutzer im Datenspeicher angezeigt. Da die Liste größer als 1000 werden konnte, war mein erster Gedanke, einen normalen count() zu vermeiden und stattdessen einen Sharded Counter zu verwenden.Wie baue ich einen flexiblen Counter mit mehr als 1000 Zeilen, aber wenig Reads in Google App Engine?
Das Problem ist jedoch, dass die Admins haben auch Zugriff auf verschiedene Suchfilter (in der GUI), wie nur männliche/weibliche Benutzer anzeigen und so weiter. Es ist wichtig, dass die Anzahl diese Filter widerspiegelt, so dass sie die Anzahl weiblicher Benutzer, männlicher Benutzer und eine Vielzahl anderer Kombinationen erhalten können.
Aus diesem Grund scheint sharded Counters und hohe Concurrency-Zähler ohne Sharding keine gute Idee, da ich für jede Kombination von Suchfiltern einen Zähler erstellen müsste.
Sollte ich einfach eine Schleife von count() Methoden erstellen, wie beschrieben here oder ist das sehr schlechte Praxis? Wie würde ich es sonst machen?
Beachten Sie, dass dieser Zähler für eine Admin-Schnittstelle und eine sehr begrenzte Anzahl von Lesevorgängen hat. Dies ist wirklich ein Fall von, wenn ich etwas Leseleistung für Flexibilität und Genauigkeit opfern möchte. Obwohl es in der Lage sein sollte, über 1000 zu wachsen, sollte es nicht größer als 10 000 werden.
Danke für Ihre Antwort! Ja, ich bin von diesem Ansatz verleitet, wenn ich bedenke, dass ich sehr wenige Lesevorgänge haben werde und ich bin mir nicht einmal sicher, ob die Liste 1000 überschreiten wird. Wenn Sie über Cursor sprechen, meinen Sie, dass ich Cursor verwenden sollte, um die nächste Position zu bestimmen() – Aneon