Facebook照片重命名约定

Dee*_*wat 5 security database-design facebook

当我们将任何照片上传到Facebook时,它都会被Facebook重命名。新名称通常具有以下模式:393268_10151029983750034_598680033_21778114_899520598_n.jpg

此名称可以用下划线分成6个部分。

  1. 我知道名称中的第二个数字是照片的签名,您可以使用以下方法直接在Facebook中访问该照片:https : //www.facebook.com/photo.php? fbid=101510299837500500,前提是您具有必要的权限。
  2. 第三个数字是照片上传者的Facebook个人资料ID。您可以通过以下网址转到上传者的个人资料:https : //www.facebook.com/profile.php? id =598680033

关于此命名约定,我有以下问题:

  1. 有人知道照片名称中还包含其他信息吗?照片名称中是否存在有关照片所属的分片/节点/存储桶的信息?
  2. 这种命名约定的优点/缺点是什么?

Bar*_*oza 4

我真的不知道他们到底如何处理这个命名方案,但我怀疑这与他们的存储有关。

Facebook 使用名为 RocksDB 的数据库,该数据库位于 MySQL 分支(专门为此数据库创建)之上,称为 MyRocks。

他们一直使用 MySQL 直到 2012 年,但后来由于“独特需求”而改用 No-SQL 类型。

RocksDB只能存储键值对,那么数据结构必须适应这一点,因此,如果你不能在一个表中包含用户的ID,而在其他表中包含属于该用户的照片,则可以通过规范化来绑定它们,在这种情况下,速度优先于存储大小。

这种系统的优点是速度,因为您可以通过预先计算要查询的每条数据的确切名称来节省传统连接的开销。