应用程序如何实现twitter?

时间:2009-09-12 13:43:55

标签: algorithm twitter

假设A跟随100人,

然后将需要100个连接语句,

这对我认为的数据库来说太可怕了。

还是有其他方式?

2 个答案:

答案 0 :(得分:6)

为什么你需要100个连接?

你会有一个简单的表“跟随”你的身份证和其他人身份......

然后通过加入以下内容来检索“推文”:

Select top 100 
    tweet.* 
from 
    tweet 
inner join 
    followers on follower.id = tweet.AuthorID 
where 
    followers.masterID = yourID

现在你只需要一个体面的缓存,并确保你使用非锁定查询,并且你拥有所有信息...(好吧可能在混合中添加一些用户数据)

编辑:

鸣叫

ID - tweetid
AuthorID - ID of the poster

关注

MasterID - (Basically your ID)
FollowerID - (ID of the person following you)

Followers表具有基于master和followerID的复合ID 它应该有2个索引 - 一个在“masterID - followerID”上,一个在“FollowerID和MasterID”

答案 1 :(得分:1)

真正的诀窍是最小化数据库使用(例如,缓存,缓存,缓存)并理解使用模式。在Twitter的特定情况下,他们使用排队的一系列不同技术,大量的内存缓存,以及一些非常聪明的数据流优化。阅读Scaling Twitter: Making Twitter 10000 percent faster和其他相关文章。关于如何实现“跟随”的问题是对数据进行非规范化(预先计算和维护连接表而不是动态执行连接)或 don't use a database at all 。 < - 请务必阅读此内容!