UUIDって知っていますか?
Universally Unique IDentifierの略で、128bitのユニークなIDです。
ユニークなIDと言われていますが、その実態は乱数です。
ということで、大量にUUIDを生成すればいつかは衝突するはずなんです。
ということで、まずはUUIDでどの程度のデータを作れるのか調べてみます。
128bitのユニークなIDを謳っていますが、先頭6bitはUUIDの情報を示す領域であるため122bitが乱数で生成される範囲になります。
122bitあると、約5澗3169溝(5.3169*10^36)ものデータが作成できます。
これを昨日紹介した、誕生日のパラドックスを使ってuuidをいくつ生成すれば1%,10%,50%,99%の確率で衝突するかを計算したかったのですが・・・
二段階認証の数字と誕生日のパラドックス - アーシの毎日インプット
あまりにも数が膨大過ぎて私のパソコンでは計算できなかったため、色々調べてきたものを紹介します。
UUIDを50%の確率で衝突させるために生成する必要があるUUIDはその数なんと約230京5843兆(2.305843*10^18)!
億くらいならパソコンをガンガン回せばUUIDの衝突を試せる気がしてきましたが、京を超える数のデータは個人のパソコンで取り扱える気がしないです・・・
また、UUIDを衝突させるだけなら乱数を大量生成することでも可能ですが、システムとして一意のIDを与えたい場面はそうそうないので、一般的なシステム運用でUUIDが被るなんてことはないと言い切っていいレベルですね。
システムで運悪くUUIDが衝突してしまったら運用でカバーしましょう。