我只是想知道 facebook 可能会发出多少数据库查询来呈现用户的主页。有没有人知道 facebook 数据库是如何设计的。我听说它运行 MySql,并且有数以千计的副本加上比数据库服务器更多的内存缓存服务器。
Facebook 数据是否分片?
如果是,它会转到每个分片并搜索我 friend 的最新更新。在最坏的情况下,如果我有 100 个 friend 并且假设 facebook 有 101 个分片,那么我的每个 friend 都有可能在不同的分片中。 Facebook 会如何处理这个问题?
如果有人可以向我提供关于“如何为社交网站设计数据库”之类的 seom 提示或指示,我将不胜感激。我只是好奇!
最佳答案
Facebook 正在使用 LAMP structure . Facebook 的后端服务是用多种不同的编程语言编写的,包括 C++、Java、Python 和 Erlang,并根据需要使用它们。借助 LAMP,Facebook 使用一些技术来支持大量请求,例如
Memcache - 这是一个内存缓存系统,用于通过在 RAM 中缓存数据和对象来加速动态数据库驱动的网站(如 Facebook)以减少读取时间。 Memcache 是 Facebook 的主要缓存形式,有助于减轻数据库负载。拥有缓存系统可以让 Facebook 尽可能快地调用您的数据。
Thrift (protocol) - 它是一个轻量级的远程过程调用框架,用于可扩展的跨语言服务开发。 Thrift 支持 C++、PHP、Python、Perl、Java、Ruby、Erlang 等。
Cassandra (database) - 它是一个数据库管理系统,旨在处理分布在许多服务器上的大量数据。
HipHop for PHP - 它是 PHP 脚本代码的源代码转换器,旨在节省服务器资源。 HipHop 将 PHP 源代码转换为优化的 C++。这样做之后,它使用 g++ 将其编译为机器代码。
如果我们更详细,那么这个问题的答案就会更长。我们可以从以下帖子中了解更多信息:
关于database - Facebook 数据库设计可能应该是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11288908/