究極の主キーUUID

OpenbravoPOSのテーブルの主キーに使用されているUUIDには、最初驚いた。

UUIDは、世界中でユニークであることが保証されている値とされている。
重複する可能性はほとんどないといわれているが、
少しでも可能性があるなら使うのをやめておこうと短絡的に考えてしまう。

重複するのか、しないのか。

引用 ttp://itpro.nikkeibp.co.jp/article/Keyword/20090206/324330/

「UUIDは,なぜ勝手に作っても重複しないのでしょうか。
それは,UUIDが機器の名前や時刻情報などを基に
「十分大きなサイズかつランダムな数値」として生成される仕組みになっているからです
。UUIDのサイズは16バイトで,256を16回掛けた数のバリエーションを作り出せます。
これがどのくらいかというと,仮に毎秒数億個以上のスピードでUUIDを作ったとしても,
人の一生どころか宇宙が誕生してから現在に至るまでの年月(約137億年)作り続けても
重複などまずありえないほどです。
実際のUUIDは,「UUID=6bffaf56-7af9-4d1a-a268-6195ca3c1de9」といった形式で表記されます。

つまり、天文学的な数字で、自分が生きている間、人類が存在する間程度は、重ならんということらしい。

さらに、引用 ttp://liosk.blog103.fc2.com/?mode=m&no=156&m2=res
「上8桁以外の数値が一定になるのはUUID version 1の仕様です。
version 1では、下48ビットにMACアドレスをそのまま使う仕組みになっているので、
同じマシンから生成するUUIDの下48ビットは基本的に全て同じになります。
こうすることで、MACアドレスが重複しない限りは別々のマシンから同じUUIDが生成されないようになっているんですね!

パソコン固有の識別IDと時間の複合コードで、桁あふれがないように考慮済みということのようだ。

UUID の詳細な構造については、
ttp://d.hatena.ne.jp/dayflower/20090306/1236314881