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

时间:2010-04-19 15:03:06

标签: google-app-engine

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

首先要想到的是为追随者和你追随的人保留一套。类似的东西:

class User {

   private String mUsername;

   private Set<String> mFollowers;

   private Set<String> mFollowees;
}

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

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

class RelationshipInfo {

    private String mMyUsername;

    private String mUsernameYouAreFollowing;
}

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

任何想法都会很棒,

由于

1 个答案:

答案 0 :(得分:5)

去年的谷歌I / O的Brett Slatkin的Building Scalable, Complex Apps on App Engine讲话实际上使用类似Twitter的应用程序作为例子。即使除此之外,这是一个很棒的演讲,即使它与你提出的问题无关,我也强烈推荐它。

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