世界中の人々をターゲットにしたウェブサービスを作りたい!
そんな時にデータベースの「ユーザー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年)人。
インドの人口は12.52億(2013年)人。
インド人と中国人の全員がユーザーになった場合は26億人!!
INT型のMAXは、21億4748万3647人!!
INT型では足りなくなってしまいます!!
つまり、もしユーザー数が21億人を超えるようなウェブサービスを作る場合は、データベースの「ユーザーID」をINT型にしてはいけないのです。
まぁ仮に超えたら、その時に対応すればいいんですけど。
仕事中に話題に出た”ネタ”記事でした。
※Facebookのユーザー数 = 14億人。
※Mysqlには更に大きい数値を扱えるBIGINT型もあります。
コメント