2010-04-23 4 views
2

Je veux des idées sur les meilleures pratiques à mettre en œuvre un flux d'activités pour un réseau social bâtiment im dans le moteur d'application (PYTHON)Google App Engine - Comment mettre en œuvre le flux d'activité dans un réseau social

Je veux d'abord Conserver un journal pour toutes les activités de chaque utilisateur - de sorte que nous avons un historique. c'est-à-dire que quelqu'un est devenu un ami, a ajouté une photo, a changé son adresse, etc. De cette façon, nous avons un historique des utilisateurs disponible si nous en avons besoin. Cela signifie également que nous pouvons supprimer des jointures d'amitié, modifier des données utilisateur mais avoir un historique.

Je veux également diffuser une activité des utilisateurs à leurs amis. pour cela, seules les X dernières activités doivent être conservées, c'est-à-dire que les messages sont envoyés aux amis lorsqu'une activité se produit.

Son assez simple conception d'un journal d'historique - ie: quand, quoi, où. La complication vient quant à la façon dont nous informons les amis d'un utilisateur quant à leur activité.

Dans notre application, les amitiés ne sont pas mutuelles - c'est-à-dire qu'elles sont basées sur le modèle Twitter suivant. Certains comptes pourraient avoir des milliers de followers.

Quelle est la meilleure approche pour modéliser ceci.

  1. en utilisant un grand nombre à plusieurs table de jointure et de faire une requête coûteuse -
  2. en utilisant une classe d'alimentation qui a tiré une copie de l'activité à tous les abonnés - peut-être en mcache? Comme leur peut-être un besoin de tirer des milliers de messages, j'imagine qu'un travail cron devrait être utilisé.

Toute pensée aide idées sur ce

Thx

Répondre

0
  1. Ne pas faire les jointures. Ils sont trop chers, vous allez brûler votre quota en un rien de temps.
  2. Vous pouvez utiliser un task queue, c'est un peu comme un travail cron (c'est-à-dire que les choses se passent en dehors de la requête d'origine) mais vous pouvez les démarrer à volonté. memcache serait bien si vous êtes ok avec perdre une activité parfois le cache est vidé ...
+0

Oui je pensais - garder un journal de tous les événements par utilisateur - quand on déclenche - envoyer une copie à chaque abonné - qui pourrait être en mcache et donné une date d'expiration. Vous ne savez pas comment les récupérer ou s'il serait préférable de raconter un bloc html (mur) et de le retirer de mcache, ajoutez l'événement - resavez-le. Le seul problème est que si un utilisateur BIG a 10 000 abonnés, c'est beaucoup de surcharge. Et un grand nombre de disciples ne sera pas actif/voir l'événement. Toutes les idées en profondeur. – spidee

4

Il y a un grand discours par Brett Slatkin appelé Building Scalable, Complex Apps on App Engine de Google I l'an dernier/O, où l'exemple est une application similaire à Twitter, où les mises à jour des utilisateurs sont transmises à leurs abonnés. Fondamentalement, exactement ce que vous essayez de faire.

Je recommande fortement la vidéo pour toute personne qui écrit une application App Engine, c'est vraiment utile.

+0

https://www.youtube.com/watch?v=AgaL6NGpkB8 (le lien ci-dessus ne fonctionne pas) – Micro