2010-04-19 4 views
1

J'essaie de créer un système suiveur semblable à celui de Twitter (les utilisateurs peuvent se suivre). Je suis confus au sujet d'un bon moyen de stocker les relations suiveurs. J'utilise JDO (sur google app engine).Bonne façon d'implémenter un système suiveur de type Twitter?

La première chose qui vient à l'esprit est de garder un ensemble pour les suiveurs, et le ppl que vous suivez. Quelque chose comme:

class User { 

    private String mUsername; 

    private Set<String> mFollowers; 

    private Set<String> mFollowees; 
} 

Je suis inquiet de ce qui se passe quand ces ensembles ont plus de 10 000 entrées. Voir la page d'un utilisateur va être une opération courante, et je détesterais avoir à charger l'ensemble des ensembles chaque fois que mon API a besoin de générer des informations utilisateur. Je ne vais montrer que 50 followers à la fois, donc ça n'a pas de sens de charger tout l'ensemble.

Une alternative pourrait utiliser une classe intermédiaire pour stocker des relations, de cette façon elles ne sont pas liées à l'objet Utilisateur. La pagination devrait alors aussi être facile (je pense). Par exemple, chaque fois que je veux suivre un utilisateur, je crée une instance de cet objet:

class RelationshipInfo { 

    private String mMyUsername; 

    private String mUsernameYouAreFollowing; 
} 

quand je vois la page d'un utilisateur, je pourrais interroger pour les 50 premiers ces documents ci-dessus étant donné l'identifiant de l'utilisateur . Est-ce que cela a du sens? Je ne sais pas si c'est mieux que la première option ci-dessus. De cette façon, il faudrait plus de déplacements vers le magasin de données.

Toute pensée serait grande,

Merci

Répondre

5

parler de Brett Slatkin Building Scalable, Complex Apps on App Engine de Google I/O de l'année dernière utilise en fait une application Twitter comme comme exemple. Même en dehors de cela, c'est un bon discours et je le recommande fortement même s'il ne correspond pas précisément à ce que vous demandez.

En outre, vous voudrez peut-être vérifier Jaiku, une application de type open source open source basée sur App Engine.

+0

Cool merci va vérifier cela bientôt. – user246114

Questions connexes