首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook是怎么做到的?

问Facebook是怎么做到的?
EN

Stack Overflow用户
提问于 2009-09-14 16:31:02
回答 8查看 1.8K关注 0票数 4

你有没有注意到facebook是怎么说的“3个朋友和33个人喜欢这个”?我想知道做这件事的最好方法是什么。我不认为浏览好友列表和“喜欢”的用户列表,并将它们进行比较是非常有效的!他们是否在数据库中对此进行跟踪?这将使数据库变得非常庞大。你们觉得怎么样?

谢谢!

EN

回答 8

Stack Overflow用户

发布于 2009-09-14 16:34:24

我猜他们会把自己的friends表和likes表连接起来,同时统计普通点赞和好友点赞。

有了适当的索引,查询就一点也不慢了。大型数据库并不一定很慢,因此没有理由不将所有这些信息都存储在数据库中。诀窍是确保索引和分区(如果有)设置得很好。

票数 8
EN

Stack Overflow用户

发布于 2009-09-14 17:04:26

Facebook至少在某些方面使用了NoSQL数据库Cassandra。下面是一些较大的社交媒体网站如何解决这些问题的更详细的讨论:

http://www.25hoursaday.com/weblog/2009/09/10/BuildingScalableDatabasesDenormalizationTheNoSQLMovementAndDigg.aspx

如果你点击它的链接到Digg的博客帖子,等等,里面有很多有趣的阅读。

票数 5
EN

Stack Overflow用户

发布于 2009-09-14 16:34:36

是的,他们肯定会将数据保存在他们的数据库中,因为他们肯定有不止一台服务器需要访问数据。

至于可伸缩性,我确信他们使用了大量的缓存。

下面是一个示例:

如果您有一百万行要处理,那么索引可以执行O(logn) = 20个操作(在最坏的情况下),只是为了找到您需要的内容。

对于200万,你只需要21次操作(在最坏的情况下)就可以找到你需要的东西。

每次您要通过的用户数增加一倍,您只需要使用O(logn)索引再执行一次操作(在最坏的情况下)。

它们还具有分布式架构或集群数据库。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1422618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档