database - Facebook 数据库设计可能应该是什么

标签 database facebook database-design architecture social-networking

我只是想知道 facebook 可能会发出多少数据库查询来呈现用户的主页。有没有人知道 facebook 数据库是如何设计的。我听说它运行 MySql,并且有数以千计的副本加上比数据库服务器更多的内存缓存服务器。

Facebook 数据是否分片?

如果是,它会转到每个分片并搜索我 friend 的最新更新。在最坏的情况下,如果我有 100 个 friend 并且假设 facebook 有 101 个分片,那么我的每个 friend 都有可能在不同的分片中。 Facebook 会如何处理这个问题?

如果有人可以向我提供关于“如何为社交网站设计数据库”之类的 seom 提示或指示,我将不胜感激。我只是好奇!

最佳答案

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++ 将其编译为机器代码。

如果我们更详细,那么这个问题的答案就会更长。我们可以从以下帖子中了解更多信息:

  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

关于database - Facebook 数据库设计可能应该是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11288908/

相关文章:

php - facebook用户ID的数据类型是什么

php - 在 RDBMS 中将 ids 存储为逗号分隔的字符串是否有任何性能原因?

hibernate - 为什么Hibernate文档建议将联接表用于一对多关系?

sql-server - 将值插入 SQL Server 数据库

mysql - 将 SQL Server 查询转换为 MySQL

Java PreparedStatement 和 ON DUPLICATE KEY UPDATE : how do I know whether row was inserted or updated?

javascript - 如何使用 Webdriver 在 Facebook 弹出窗口中填写凭据 (javascript)

javascript - 为什么 Facebook 点赞按钮的 JS 代码使用奇怪的 URL?

mysql - 如果记录尚不存在,则插入记录的有效方法是,如果存在则获取 ID 并将其用作外键?

database - 这种关系是第三范式吗?