关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论
众所周知,QQ号最开始是5位,后来逐渐变为11位,我开始用QQ的时候,一般都是申请到10位,有时候能申请到9位,据说还有传闻“同学的同学”、“朋友的表哥”这些人申请到7位号码,那时候中小学生,去到网吧都会注册几次,看能否申请到短号。言归正传,这也六七年过去了,QQ的用户数量不断增加,受到微信冲击之前,增长速度应该也是在上升,能停留在11位,一个不可忽略的因素就是号码回收机制。QQ的管理系统会自动回收不活跃帐号。具体来说,新注册的号码,一周内不登陆就会被冻结,登陆了几次之后,这个周期会变长一些,随着级别的增高,被冻结的可能性也会阶段性地降低。
我今天脑海里突然想到这个问题:QQ号码的数据库(表)要怎么设计?
对于这个问题,我在网上搜了一下。已有的回答或讨论,无外乎这几种:
- 号码字段自增
- 使用UUID
- 预先生成
对于第一种(号码字段自增),方案确实可行,反对的意见只有“不想用这种方式”,但是用什么类型存储,可以表示多大的范围,没有人细致分析,也没有考虑提及。
使用UUID,能够保证分表、分库的唯一标识,但是位数太多(32位),且字母数字大小写混合,无法记忆,更别说作为QQ号码了,没有考虑实际应用场景。
预先生成的方案,后生成的号码,可能与先前生成的号码有重复,这样一来,随着已分发的号码数的增多,后期生成的号码中,可用的越来越少,分发的成功率越来越低。