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大师请帮忙
答案 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).")");