2011-09-27 57 views
34

我已经看到了多个尺寸,我不想浪费在MySQL字段上的服务器内存,因为它为太多字符保留了太多空间。他们能够获得的最大收益是什么,并且这会不会改变?什么是最大值。 Facebook用户的长度?

+2

文档中没有任何限制。至于“它会不会改变” - 这就是我们正在谈论的Facebook;急剧的API变化是司空见惯的。所以,尽管UID非常重要,但我不会相信FB *不会*在未来的任何时候改变它,因为他们可能会感觉如此。最好把它当作一串不透明的字符。 – Piskvor

+3

对于Mysql,请使用UNSIGNED BIGINT;请参阅:http://stackoverflow.com/questions/2172126/user-id-big-int-int-or-string – Costa

回答

63

这是整数溢出,integer-> string migrations等等,通过使数据类型过于限制。在128b 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 
+0

同意。谢谢! =) –

+0

这是一个很好的答案。我只是有这个确切的问题。以前,我系统中的所有Facebook ID都不超过10位数字,但Facebook最近更改了这个ID,所以ID是15位数字。我开始看到具有相同Facebook ID的多个用户,并且不认识到“ID”实际上是最大整数值。我把我的领域改为了一个varchar,并为后人提供了大量的填充。 – Gavin

+0

对于VARCHAR +1因为这样:Javascript中的parseInt(“10208914157005637”)返回10208914157005636 !!! –

2

你怎么能确定这永远不会改变?最好使它成为一个varchar。

-8

Facebook的UID永远不会改变,因为它是他们数据库中的唯一标识符。如果它改变,那么Facebook将停止工作

+4

不会下注,他们可以例如决定切换到使用字母数字UID而无需更新现有的..这当然不太可能改变,但从来没有说过从来没有... – ivanhoe

+2

我知道这是一个旧帖子,但谷歌带我到这里。 Facebook的UIDs确实在这个时候改变!每个Facebook应用程序都会看到具有不同UID的相同用户。 AppId + UserId的组合应该永远不会改变,因为它被设计为由Facebook应用程序处理,所以你很可能依靠它。 此刻,我的测试指出用户ID为17个字符长。此时,我在facebook上将它声明为facebook_id varchar(50),因为你永远不知道下一个用户的id是什么。 :-o –

2

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