I was wondering how facebook stores comments with IDs since there must be like a really high number of comments and messages in general, so I inspected the source and noticed that comments' IDs have two numbers, for example 530409847013982_5029288
. Can somebody explain how that works? I mean how are they being picked up and how are they being inserted, I'm not sure auto increment works this way?
问问题
39 次
2 回答
1
正如另一个答案所解释的那样,这些 ID 是分层的。这可能是某种复合键。要“说 MySQL” UNIQUE(page_id, post_id)
。回到你的问题:
肯定有很多评论和消息
大数字!但是,根据MySQL 文档,BIGINT UNSIGNED
(或几乎等效的SERIAL
类型)可以保存从 0 到 18446744073709551615 的值。根据您的示例,粗略地说,仍然有“空间”容纳大约10000 倍的消息。
如果这还不够,数据库通常会提供一个定点类型 ( DECIMAL
)。对于 MySQL,这种类型最多可以容纳 65个以10 为基数的数字。显然还有一些空间!
关于键,MySQL 使用 InnoDB 表将这些限制为3072 个字节(作为参考,BIGINT
需要 8 个字节)。对于那种应用程序来说已经足够了。
如果Facebook 使用 MySQL,我认为 ID/密钥长度不是主要问题。我不确定他们使用 MySQL 的想法?:D
于 2013-08-11T12:47:48.600 回答
1
下划线之前的部分是页面 id。后面的部分是帖子ID。
于 2013-08-11T10:57:28.027 回答