UUIDとは?v4・v1・v7の違いと使い分け
UUID(Universally Unique Identifier)は128ビットの一意識別子で、分散システムでIDを生成する際の標準形式です。データベースの主キー・ファイル名・セッションIDなど幅広い用途に使われます。
UUID v4(ランダム)
UUID v4は暗号論的に安全な乱数から生成されるため、推測が困難です。最も広く使われるバージョンで、ほとんどのユースケースに適しています。「xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx」の形式で、バージョン番号(4)とバリアントビット(8・9・a・bのいずれか)を除いて122ビットがランダムです。衝突確率は極めて低く、1兆件のUUIDを生成しても衝突が起きる確率は10億分の1以下です。JavaScriptではcrypto.randomUUID()(Node.js 14.17+・最新ブラウザ)でライブラリなしにUUID v4を生成できます。UUID Generatorでは最大100件を一括生成してCSVとしてコピーできるため、テストデータやモックIDを大量に作る場面に役立ちます。
UUID v1(タイムスタンプ)
UUID v1はMACアドレスと現在時刻(100ナノ秒精度)から生成されます。タイムスタンプが含まれるため生成順に並べることができますが、MACアドレスが含まれるためデバイスを特定できるプライバシー上の懸念があります。ログのトレースIDや時系列で並べたいIDに使えますが、MACアドレスを含まないUUID v4や、より安全でソート可能なUUID v7が代替として推奨されています。UUID v1のタイムスタンプ部分は1582年10月15日(グレゴリオ暦開始日)からの100ナノ秒単位の経過値で、Unixエポックとは異なります。このタイムスタンプ形式の特殊性もv7が登場した理由の一つです。
UUID v7(順序付きランダム)— 新世代の標準
UUID v7は2022年に標準化された新しいバージョンで、Unixタイムスタンプをプレフィックスとして含みながら残りはランダムです。タイムスタンプ順に並ぶためDBのインデックス効率が良く、プライバシー問題もありません。PostgreSQL 17+・AWS・Cloudflareが採用しており、新規プロジェクトではv7が推奨されつつあります。
UUIDをDBの主キーに使う際の注意
UUID v4はランダムなためB-treeインデックスにおける挿入順序がランダムになりページ分割が頻発し、パフォーマンスが低下することがあります。大量のINSERTがある場合はUUID v7か順序付きUUID、またはULIDの使用を検討してください。UUID Generatorでは最大100件の一括生成とCSV/TXT出力(デスクトップ版)が可能です。