世界規模のWebサービスを作るときにDBのユーザーIDをINT型にしてはいけない理由

01

世界中の人々をターゲットにしたウェブサービスを作りたい!

そんな時にデータベースの「ユーザーID」をINT型にしてはいけません。

 

会員制のウェブサービスを作るときは、サイト側でユーザー情報を覚えておく必要があるために、データベースに情報を保存します。

このデータベースですが、簡単に説明するとエクセルを想像してください。

※この記事で書いているデータベースは、Mysqlを想定しています。

 

例えば、「ユーザー情報」というエクセルがあって、各列にユーザーのID、名前、住んでる国…などなどユーザーに登録してもらった情報を保存していきます。

イメージとしては次のような感じです。

ID Name Contory
1 ナカシマ Japan
2 Jack USA
3 China

 

エクセルと違うのは、この列にいれる情報は「数値」なのか、「文字列」なのか「型」を指定する必要がある所です。

数値を入れる列なら、-128から127までならTINYINT型

-2147483648から2147483647までならINT型と指定します。

※数値だけでも他にも型があります。


このように型を指定するのですが、ユーザーIDの場合はINT型にすることが多いです。

多くの技術書でも、ユーザーIDはINT型にしているものが多いですね。

 

しかし、世界中の人々をターゲットにしたウェブサービスを作ろうとした時に、ユーザーIDをINT型にした場合は2147483647までしか入りません。

つまり、21億4748万3647人のユーザーまでしか対応することができないのです。

 

しかし、中国の人口は13.57億(2013年)人。

2015-11-10 11.32.32

 

インドの人口は12.52億(2013年)人。

2015-11-10 11.32.58

 

インド人と中国人の全員がユーザーになった場合は26億人!!

INT型のMAXは、21億4748万3647人!!

INT型では足りなくなってしまいます!!

 

つまり、もしユーザー数が21億人を超えるようなウェブサービスを作る場合は、データベースの「ユーザーID」をINT型にしてはいけないのです。

 

まぁ仮に超えたら、その時に対応すればいいんですけど。

仕事中に話題に出た”ネタ”記事でした。


※Facebookのユーザー数 = 14億人。

※Mysqlには更に大きい数値を扱えるBIGINT型もあります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次