什么应该是Facebook DB设计

May*_*ank 7 database architecture database-design facebook social-networking

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

facebook数据是否被shard-ed?

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

我会非常感激,如果有人能提供我SEOM提示或指针朝着类似"如何设计社交网站一个DB".我只是好奇!

Som*_*luk 13

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

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

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

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

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

如果我们进一步详细说明,那么回答这个问题会更长.我们可以通过以下帖子了解更多:

  1. Facebook如何运作?
  2. 数据管理,Facebook风格
  3. Facebook数据库设计?
  4. Facebook wall的数据库结构
  5. Facebook"喜欢"数据结构


小智 3

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

http://highscalability.com/