Mysql 双号ID

Mysql 双号ID,mysql,facebook,auto-increment,Mysql,Facebook,Auto Increment,我想知道facebook是如何用ID存储评论的,因为通常评论和消息的数量一定非常多,所以我检查了源代码,发现评论的ID有两个数字,例如530409847013982\u 5029288。有人能解释一下这是怎么回事吗?我的意思是如何提取它们以及如何插入它们,我不确定自动增量是否可以这样工作?下划线前面的部分是页面id,后面的部分是帖子id 正如另一个答案所解释的那样,这些ID是分层的。这可能是某种复合键。要“说出MySQL”唯一(页面id、帖子id)。回到你的问题: 一定有很多评论和消息 大数字!

我想知道facebook是如何用ID存储评论的,因为通常评论和消息的数量一定非常多,所以我检查了源代码,发现评论的ID有两个数字,例如
530409847013982\u 5029288
。有人能解释一下这是怎么回事吗?我的意思是如何提取它们以及如何插入它们,我不确定自动增量是否可以这样工作?

下划线前面的部分是页面id,后面的部分是帖子id


正如另一个答案所解释的那样,这些ID是分层的。这可能是某种复合键。要“说出MySQL”
唯一(页面id、帖子id)
。回到你的问题:

一定有很多评论和消息

大数字!但是,根据数据,
bigin UNSIGNED
(或几乎等效的
SERIAL
类型)可以保存0到18446744073709551615之间的值。根据您的示例,粗略地说,仍然有“空间”容纳大约10000多倍的消息

若这还不够,那个么数据库通常会提供一个固定点类型()。使用MySQL,这种类型最多可以容纳65位10进制数字。显然还有一些空间

关于键,MySQL将这些限制为使用InnoDB表(作为参考,
BIGINT
需要8个字节),对于这种类型的应用程序来说已经足够了


如果Facebook使用MySQL,我不认为ID/密钥长度是主要问题。我不确定他们是否使用MySQL思想你为什么想知道这个?是否要落实这一点?你试过什么吗?@davidstrachan
是为了实现这个吗?
不是,我只是好奇这是怎么回事?好奇是件好事;)
我不确定他们是否使用MySQL思考
为什么不?@php\u nub\u qq这是一个真实的说法:我不确定他们是否使用MySQL。也许是这样。也许不是。我没有花时间去检查。但如果您这样做了,我很乐意相应地编辑答案;)我以为你知道他们不是,你只是礼貌地说了出来D@php_nub_qq确切地说,我曾经有一个学生为她的毕业考试做了一个关于“Facebook技术”的演讲。她并没有完全理解她所说的一切——也许所有这些都有点过时了,但据我记忆所及,处理如此大量数据的基本概念是什么,只使用“键值存储”。MySQL在那里,但仅用作数据存储(无连接或复杂查询)。一个关键功能是使用memcached在商品硬件上缓存大部分数据,以便将数据库服务器上的负载保持在可接受的水平。我不应该想到他们会使用谷歌搜索“如何构建网站”
:D