你有没有注意到facebook如何说"3个朋友和33个人喜欢这个"?我想知道这样做的最佳方法是什么.我不认为通过朋友列表,"喜欢这个"并比较它们的用户列表是高效的!他们是否在数据库中跟踪这个?这将使数据库的规模非常大.你们有什么感想?
谢谢!
我猜他们会把他们的friends
桌子与他们的桌子连在一起likes
,同时计算常规喜欢和朋友喜欢.
使用适当的索引,它根本不会是一个缓慢的查询.巨大的数据库不一定很慢,因此没有理由不将所有这些信息存储在数据库中.诀窍是确保索引和分区(如果有)设置良好.
Facebook使用Cassandra,至少在某些方面是NoSQL数据库.这里有一些更详细的讨论,讨论一些较大的社交媒体网站如何解决这些问题:
http://www.25hoursaday.com/weblog/2009/09/10/BuildingScalableDatabasesDenormalizationTheNoSQLMovementAndDigg.aspx
如果您按照从它到Digg博客文章等的链接,那里有很多有趣的阅读.