假设A跟随100人,
然后将需要100个连接语句,
这对我认为的数据库来说太可怕了。
还是有其他方式?
答案 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 。 < - 请务必阅读此内容!