Ich frage mich, was wäre der beste Weg, um eine soziale Anwendung zu gestalten, bei der Mitglieder mit Google AppEngine Aktivitäten ausführen und den Aktivitäten anderer Mitglieder folgen.Wie würden Sie einen AppEngine-Datenspeicher für eine soziale Website wie Twitter entwerfen?
Um genauer sein lässt vermuten wir diese Entitäten haben:
- Benutzer, die Freunde haben
- Aktivitäten welche Aktionen gemacht werden von den Benutzern darstellen (können sagen, die jeweils eine Zeichenfolge Nachricht und eine Reference an seinen Besitzer Benutzer, oder es kann Elternvereinigung über appengine Schlüssel verwenden)
Der schwierige Teil folgt den Aktivitäten Ihres Freundes, Das bedeutet, dass Sie die neuesten Aktivitäten von all Ihren Freunden zusammenfassen. Normalerweise wäre das ein Join zwischen der Activities-Tabelle und Ihrer Freundesliste, aber das ist kein praktikabler Entwurf für appengine, da es keinen simulierenden Join gibt, der N-Abfragen auslösen muss (wobei N die Anzahl der Freunde ist) und dann im Speicher zusammengeführt werden - sehr teuer und wird wahrscheinlich Anfragetermin überschreiten ...)
Ich denke derzeit über die Implementierung dieser Posteingangswarteschlangen, wo Erstellung einer neuen Aktivität einen Hintergrundprozess ausgelöst wird, die den Schlüssel der neuen Aktivität in den "Posteingang "jeder folgenden Benutzer:
- bekommen‚Alle Nutzer, die X folgen‘ist eine mögliche appengine Abfrage
- Keine sehr teure Stapeleingabe in eine neue "Posteingang" -Entität, die grundsätzlich Tupel (Benutzer-, Aktivitätsschlüssel) speichert.
Ich werde gehört Gedanken auf diesem Entwurf oder alternative Vorschläge usw. glücklich sein
Ich schaute auf das gleiche Problem und fand diese ausgezeichnete (!) Präsentation von der AppEngine, die sie bei Google I/O gegeben: http://www.scribd.com/doc/16952419/Building-Scalable-complex -apps-on-App-Engine Ich hoffe du findest es auch nützlich. –