分散データベースやマイクロサービス構成では、中央サーバーの採番ボトルネックを介さずに、各ノードが自律的に一意な主キーを生成できる仕組みが不可欠です。その世界標準仕様が UUID (Universally Unique Identifier / GUID) です。
1. 128ビットUUIDの基本構造
RFC 9562で標準化されたUUIDは、16オクテット(128ビット)のデータであり、ハイフンで区切られた5つのブロック(32文字の16進数)として表記されます:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxM = バージョン番号 (4 または 7) | N = バリアント仕様 (通常 8, 9, a, b)
2. 衝突確率の数学的安全性
UUID v4には122ビットの純粋な暗号論的乱数(約5.3 × 10^36通りの組み合わせ)が含まれています。1秒間に10億個のUUIDを85年間連続生成し続けたとしても、衝突が発生する確率はわずか50%にすぎません。
3. UUID v4(完全ランダム)vs UUID v7(時系列ソート)
UUID v4が完全な疑似乱数であるのに対し、最新規格UUID v7は最上位48ビットにUnixミリ秒タイムスタンプを格納し、下位に74ビットの乱数を配置します。これによりIDが自然と時系列順に整列します。
4. DBインデックス性能とB-Tree断片化の防止
ランダムなUUID v4を主キーB-Treeに挿入すると激しいページスプリットとキャッシュミスが発生します。UUID v7は自動採番連番のように末尾へシーケンシャルに追加されるため、PostgreSQLやMySQLで最大10倍の書き込みスループット向上を実現します。