衝突がほぼ起こり得ないとされる理由
バージョン4のUUIDは約122ビット分のランダムな要素を持っており、取り得る値の数は膨大です。よく引き合いに出される例え話として、1秒間に何十億ものUUIDを生成し続けるシステムを何年も稼働させて初めて、偶然の重複が無視できないレベルの確率になる、というものがあります。実際のアプリケーションでは、これに近づくことすらまずありません。
UUIDは利便性と引き換えにサイズが大きい
UUIDは単純な連番の整数IDに比べてかなり長いため、データベースの保存容量やインデックスの効率という面では多少のコストがかかります。それでも多くのシステムがこのトレードオフを受け入れているのは、ID発行のたびにサービス間で調整を取る必要がなくなるためです。
よくある質問
UUIDはセッションIDのようなセキュリティトークンとして安全に使えますか?
適切に生成されたランダム(バージョン4)なUUIDは推測されにくいだけのエントロピーを持っていますが、暗号学的な秘密情報として設計されたものではありません。そのため、セキュリティ上重要な用途では、暗号学的に安全な専用の乱数生成関数から作られた識別子の方が好まれることが多いです。
UUIDから、それが紐づけられているデータを逆算できますか?
いいえ、ランダムなUUIDはそれが指すレコードについての情報を一切含んでいません。単なる一意のラベルであり、UUIDと実際のデータとの対応関係は、それを保存しているデータベースやシステム側にのみ存在します。