Facebook和MYSQL数据库之间的差异?

时间:2011-08-03 10:01:45

标签: mysql database performance graph relational-database

我无法理解facebook在哪里使用mysql:

所有数据库都可以看作图表:

Account - Like -> Comment
Account <- friend -> Account2
Account - Like -> Link

MySQL中存储了什么?

帖子和笔记的文字?

将facebook所有这些实体(帐户,帖子,评论)放在图表DB中吗?

1 个答案:

答案 0 :(得分:1)

好吧,我假设您提到的所有内容都存储在MySQL中。每一条可能会发生变化的数据,包括:

  • 用户
  • 帖子
  • 评论
  • 有关已上传图片的信息(但不包括图片本身)
  • 喜欢
  • 有关登录用户的数据
  • 广告
  • 有关喜欢/不喜欢广告的用户数据
  • 用户设置

任何可能发生变化的数据都需要保存在数据库中以便编制索引和快速访问。如果您想要只写数据(例如日志记录),则文件系统很好。或者,如果您只需要一次访问整个数据,而不是它的一部分。

但是如果您需要构建数据并准备好快速访问,那么您需要使用数据库。您可能希望阅读有关二叉树的信息:http://en.wikipedia.org/wiki/Binary_tree

关于Facebook:如果我不得不猜测,我会说可能还有数百个数据库。我无法访问他们的服务器,因此我无法对此发表评论:)但另一个例子是,如果安装WordPress,则会创建11个不同的表。 http://codex.wordpress.org/Database_Description

PS。但是Facebook没有理由使用MySQL。那里有很多不同的数据库。

编辑感谢您指出我误解了您的问题。

让我们来看看这个案例:帐户&lt; - friend - &gt;帐户2

如前所述,他们有“用户”这样的表格。

用户表将包含以下列:

  • ID(它有PRIMARY KEY。这意味着为每一行提供唯一的ID。)
  • 用户名(具有一定长度的文本字段,例如64个字符)
  • ......还有更多......

现在会有桌子“朋友”。它将有字段:

  • ID(再次,PRIMARY KEY)
  • PERSON1
  • PERSON2

Person1和Person2这两个字段都是指向表“users”中ID的整数。

因此,如果表用户有三行:

ID  Username
1   rodi
2   rauni
3   superman

然后表格“朋友”将是例如:

ID Person1 Person2
1  1       2
2  2       1
3  1       3
4  3       1

这里第1行表示“rodi是与rauni的朋友”,第2行表示“rauni是rodi的朋友”。这是多余的,但我想保持简单。

这是一个很好的教程:http://www.tizag.com/mysqlTutorial/mysqltables.php 那里有很多页面,只需点击下一步跳过你已经知道的东西(我不知道你已经知道多少)

这是关于从两个表中加入信息:http://www.tizag.com/mysqlTutorial/mysqljoins.php

您可以使用它在一个查询中从我们的两个表中选择所有rodi的朋友。