データベース利用時のキーをbigintにする必要があるか

2011/10/31 | データベース

結構これに悩む開発者は多いのではなかろうか。

そもそもこういうことに悩むのが間違いの元だと思う。システム開発者たるもの、事前の想定があってそれに対しての開発をするわけで、適当に「将来増加するかもしれないから」なんてことだけで開発してはいけない(とは言っても・・・とも思うけれど)。

MySQLで主キーにauto_incrementを設定すると仮定する。カラムの型がintegerでunsignedの場合最大約42億まで値を確保できる。42億、というと実際には手に届かないが、接したことのある数字である(算数の計算とかの話)。「億」という言葉が問題なのかもしれない。じゃあ「兆」は、「京」はみたいなことをいうと切りがない。なので、まず実際に使用すると思われる量を計算しなくてはならない。

42億というと1日1件の処理で値が1増加すると仮定すれば、約1150万年も使えるわけだ。その頃には人類は絶滅しているんじゃないかと思うので、すでに考えなくていい。

1日100件の処理が行われるとすると、約1万1千年使えるわけだ。人類が絶滅していなかったと仮定してもMySQLは存在しないだろう。じゃ、やっぱり考えなくていい。

1件あたりの処理で値が100増えるとすれば(1日100件の処理で)、101年となるわけだ。さすがに人類はまだ絶滅していなさそうだし、ひょっとしたらMySQLもまだあるかもしれない。でも100年前のシステムの考え方が通用するだろうか。そもそもそれを使う会社が100年先も存在するだろうか(ま、発注者にはそんな事言えないけど)。となれば、これでも考えなくていい。

といった具合に、見積もりを立てれば問題ない。そしてそれを仕様書にまとめて提出する(できれば「こういう仕様でいきます」という事前確認をしておくほうがいい)。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net