什么应该是Facebook DB设计

时间:2012-07-02 06:47:27

标签: database facebook database-design architecture social-networking

我只是想知道facebook可以发布多少个数据库查询来呈现用户的主页。有没有人对facebook DB的设计有所了解。我听说它运行MySql,有数千个副本加上比DB服务器更多的内存缓存服务器。

facebook数据是否会被粉碎?

如果是,它会转到每个分片并搜索我朋友的最新更新。在最坏的情况下,如果我有100个朋友,并假设facebook有101个分片,那么我的朋友可能会使用不同的分片。 facebook怎么可能处理这个?

如果有人可以向我提供“如何为社交网站设计数据库”这样的内容,我将非常感激。我只是好奇!

4 个答案:

答案 0 :(得分:13)

Facebook正在使用LAMP structure。 Facebook的后端服务是用各种不同的编程语言编写的,包括C ++,Java,Python和Erlang,它们根据需要使用。使用LAMP Facebook使用一些技术来支持大量请求,例如

  1. Memcache - 这是一个内存缓存系统,用于通过缓存RAM中的数据和对象来加速动态数据库驱动的网站(如Facebook),以减少阅读时间。 Memcache是​​Facebook的主要缓存形式,有助于缓解数据库负载。拥有一个缓存系统可以让Facebook在调用您的数据时尽可能快。

  2. Thrift (protocol) - 它是一个轻量级的远程过程调用框架,用于可扩展的跨语言服务开发。 Thrift支持C ++,PHP,Python,Perl,Java,Ruby,Erlang等。

  3. Cassandra (database) - 这是一个数据库管理系统,旨在处理分散在许多服务器上的大量数据。

  4. HipHop for PHP - 它是PHP脚本代码的源代码转换器,用于节省服务器资源。 HipHop将PHP源代码转换为优化的C ++。执行此操作后,它使用g ++将其编译为机器代码。

  5. 如果我们详细介绍,那么回答这个问题会更长。我们可以通过以下帖子了解更多信息:

    1. How Does Facebook Work?
    2. Data Management, Facebook-style
    3. Facebook database design?
    4. Facebook wall's database structure
    5. Facebook "like" data structure

答案 1 :(得分:3)

在本网站上,您可以找到有关这些大型互联网公司及其技术结构的大量详细信息:

http://highscalability.com/

答案 2 :(得分:0)

添加@Somnath Muluk的答案 - Facebook使用其他一些技术,如Hadoop等。

有关详细信息,请参阅以下链接:

http://www.quora.com/Facebook-Engineering/What-is-Facebooks-architecture

Facebook Architecture

希望它有所帮助。

答案 3 :(得分:0)

零。平均而言,就是这样。具有大量用户(如Facebook)的高度互联网络只有在经常显示的页面完全从ram中运行时才能有效运行。几乎所有数据都应该在memcache中。