存QQ號碼,究竟該用int類型還是string類型?
大家好,我是了不起。
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節約內存,查詢速度快,但是一旦有需求變更,就會很難受。