大家好,我是了不起。
QQ号相信现在玩互联网的基本上人人都有。大多数人应该玩过这个游戏吧,“今天是马化腾的生日,转发这条消息到五个群,你的QQ等级就会多一个太阳。”
看到这里你也许会心一笑,多少年前的老把戏了,还想骗我?但是当初人人想提高QQ等级的年代,应该不少人被骗过。
今天了不起不和大家议旧,而是和大家聊一个一直以来争议很大的问题——存QQ号码,究竟该用int类型还是string类型?
图片
1、QQ历史
QQ,最早的名字是OICQ(Open ICQ),于1999年2月推出。彼时,QQ号的分配还显得非常稀缺且珍贵,最早的QQ号是五位数或六位数。
由于那个时代的互联网用户基数较小,能够拥有一个五六位数的QQ号在当时几乎是一种“身份的象征”。
事实上,这些早期的QQ靓号,现在在网上有专门的售卖产业。
后来随着QQ的普及,越来越多的用户开始涌入这个社交平台,然后QQ号长度开始变长,七位,八位,到现在的十一位。
图片
2、选择 int 还是字符串?
先看腾讯内部人员的回答:
图片
答案很明显了,他们最先开始是用的 int32,后面迁移到 int64 了。
但是这样设计是合理的么?
如果早期程序员设计过身份证号存储的人,应该都吃过亏。
因为最开始身份证号用 bigint 存就可以,后来身份证多出了一个 X,然后......
所以,如果让我来主导QQ设计的话,我会选择 string。
无它,能满足多样化的用户需求,不仅仅是长度,如果后期需要带有特殊符号或其它国家的手机号,那么 string 是一个更为稳妥的选择。用 string 可以确保无论用户输入什么形式的号码,你的程序都能正确处理并保存。
即使int节约内存,查询速度快,但是一旦有需求变更,就会很难受。