Facebook uid的最大长度是多少?

37

我看到过多种大小,不想在MySQL字段上浪费太多的服务器内存,特别是为了保留过多字符。最大可以获取多少,并且这个值是否会改变?


2
文档中没有任何限制。至于“它会改变吗” - 我们谈论的是Facebook;API的重大更改很常见。因此,尽管UID非常核心,但我不会相信FB不会在未来的任何时候更改它,因为他们可能会这样做。最好将其视为一串不透明的字符。 - Piskvor left the building
3
对于MySQL,使用UNSIGNED BIGINT;参见:https://dev59.com/LXI95IYBdhLWcg3wvwsQ。 - Costa
4个回答

65
这就是整数溢出、整数转换为字符串等问题发生的原因,通过使数据类型过于限制而发生。花费一些字节用于128位varchar,可以避免以后的麻烦。如果您的用户群变得非常庞大,以至于需要担心通过压缩UID数据类型来保存多少字节,那么请认为这是一个巨大的成功,并且这是一个你将乐意解决的问题。
简单回答,我不认为任何人能够回答你的问题,“永远”是很长的时间,谁知道到那时Facebook会奴役多少实体。
我最后引用一个名言结束;
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
—Donald E. Knuth

这是一个很好的答案。我刚好遇到了这个问题。之前,我系统中的所有Facebook ID长度都不超过10位数字,但是Facebook最近更改了这一点,使得ID长度为15位数字。我开始看到多个用户具有相同的Facebook ID,并且没有意识到“ID”实际上是最大整数值。我将我的字段更改为varchar,并为其留出了足够的填充空间以备后用。 - Gavin
2
+1 对于 VARCHAR,因为在 JavaScript 中执行 parseInt("10208914157005637") 会返回 10208914157005636!!! - JCKödel

3

你怎么能确定这永远不会改变?最好将它设为varchar。


2

目前,Facebook的UID是64位整数。但我不能保证这一点不会改变。


-10

Facebook UID(用户标识符)永远不会改变,因为它是他们数据库中的唯一标识符。如果它改变了,那么Facebook将无法正常工作。


4
不要押注此事,他们可以决定转而使用包含字母和数字的UID,而无需更新现有UID。当然,这种情况可能性较小,但永远不要说绝对不会发生。 - ivanhoe
3
我知道这是一篇旧文章,但谷歌引导我来到这里。目前Facebook用户ID已经发生了变化!每个Facebook应用程序都会看到具有不同UID的相同用户。组合AppId + UserId应该永远不会改变,因为它旨在由Facebook应用程序处理,所以您可以依赖它。目前,我的测试指出用户ID为17个字符长。我将其声明为MySQL中的facebook_id varchar(50),因为您永远无法知道下一个用户的ID可能是什么。 :-o - Alexandre T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接