实现类似Twitter的跟随系统的好方法?

use*_*114 1 google-app-engine

我正在尝试创建一个类似Twitter的追随者系统(用户可以互相关注).我对存储关注者关系的好方法感到困惑.我正在使用JDO(在谷歌应用程序引擎上).

我想到的第一件事就是为追随者和你追随的人保留一套.就像是:

class User {

   private String mUsername;

   private Set<String> mFollowers;

   private Set<String> mFollowees;
}
Run Code Online (Sandbox Code Playgroud)

我担心当这些集合增长到10,000多个条目时会发生什么.查看用户的页面将是一个常见的操作,我不想每次我的API需要生成用户信息时都必须加载整个集合.无论如何,我一次只能显示50个粉丝,所以加载整个Set是没有意义的.

备用方可以使用中间类来存储关系,这样它们就不会绑定到User对象.然后,分页也应该很容易(我认为).例如,每当我想关注用户时,我都会创建一个这个对象的实例:

class RelationshipInfo {

    private String mMyUsername;

    private String mUsernameYouAreFollowing;
}
Run Code Online (Sandbox Code Playgroud)

因此,当我查看用户的页面时,我可以根据用户的ID查询上面的前50个这样的记录.这是否具有任何性能感?我不确定这是否比上面的第一个选项更好.这种方式需要更多次访问数据存储区.

任何想法都会很棒,

谢谢

Jas*_*all 5

Brett Slatkin 在App Engine上构建可扩展的复杂应用程序来自去年的Google I/O实际上使用类似Twitter的应用程序作为示例.除此之外,这是一个很棒的话题,我强烈推荐它,即使它与你提出的问题没有特别的关系.

此外,您可能想要查看Jaiku,这是一个基于App Engine的开源类Twitter应用程序.