社会饲料系统设计

时间:2011-08-03 16:41:12

标签: google-app-engine news-feed

http://twitter.com/#!/ladygaga

当ladygaga推文1消息时,是否意味着为每位粉丝插入1条数据记录(总计12,221,751)?所以总共插入了12,221,751条记录?

设计这种社交饲料系统的任何线索?

-------------------------------编辑行-------------- -----------------

真实问题:

在Google应用引擎中无法执行SELECT推文FROM推文IN([FollowingIDs]),这限制了IN子句中最多30个项目

虽然在app引擎中它实际上意味着并行执行30个查询,但我猜这不是很明智。

即使我被允许超过30个限制, 如果我订阅10000人怎么办?我不确定使用“IN子句”在MYSQL或任何其他类型的数据库基础结构中是否存在任何性能问题 (app引擎的重要表格与MYSQL不同)

所以最好使用IN子句进行查询? 或者设置UserFeed表来存储Feed关系? 或第三种方法?

数据库/ SQL大师请帮忙

2 个答案:

答案 0 :(得分:1)

请参阅Google I / O 2009中的this talk,了解如何使用“扇出”数据结构在App Engine上处理这类案例。

答案 1 :(得分:0)

你能想象吗?

每个人都有关注者列表

ID        |  FOLLOWER__ID
ladygaga  |  genesis
ladygaga  |  user

// php

$result = mysql_query("SELECT ID FROM followers WHERE FOLLOWER__ID = 'genesis';");
while($row = mysql_fetch_assoc($result)){
    $select[] = $row['ID'];
}

$tweets = mysql_query("SELECT * FROM tweets WHERE owner IN (".implode(",", $select).")");