双号码ID

时间:2013-08-11 09:30:56

标签: mysql facebook auto-increment

我想知道facebook如何使用ID存储评论,因为一般来说必须有非常多的评论和消息,所以我检查了来源并注意到评论的ID有两个数字,例如530409847013982_5029288 。有人能解释一下这是怎么回事吗?我的意思是它们是如何被拾取的以及它们是如何被插入的,我不确定自动增量是这样的吗?

2 个答案:

答案 0 :(得分:1)

下划线之前的部分是页面ID。之后的部分是帖子ID。

https://www.facebook.com/pageid/posts/postid

答案 1 :(得分:1)

正如另一个答案所解释的那样,那种ID是分层的。这可能是某种复合键。要“说MySQL”UNIQUE(page_id, post_id)。回到你的问题:

  

必须有非常多的评论和消息

大数字!但是,根据MySQL documentationBIGINT UNSIGNED(或几乎等效SERIAL类型)可以保存从0到18446744073709551615的值。基于您的示例,大致说来,还有“空间”,比如 10000次更多的消息。

如果这还不够,数据库通常会提供固定点类型(DECIMAL)。使用MySQL,此类型最多可容纳65个基本10 位。显然剩下一些空间!

关于密钥,MySQL使用InnoDB表将这些限制为3072 bytes(作为参考,BIGINT需要8个字节)。对于这种应用来说已经足够了。

如果 Facebook使用MySQL,我认为ID /密钥长度不是主要问题。我不确定他们是否使用MySQL思想? :d