UUID とは?
UUID (Universally Unique Identifier) は空間と時間を超えてグローバルに一意となるよう設計された標準化された識別子形式です。UUID は通常、32 文字の16進数で表され、ハイフンで区切られた5つのグループで表示されます。 123e4567-e89b-12d3-a456-426614174000
.
UUID は RFC 9562 標準(以前の RFC 4122 を廃止)で定義されており、中央登録や調整を必要とせずに情報を識別するためにコンピューティングプラットフォーム全体で使用されます。
UUID フォーマット
すべての UUID は共通のフォーマットを持ち、36 文字(32 文字の16進数と4つのハイフン)で次のパターンに配置されます。
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
ここで:
x
は任意の16進数の数字 (0-9, a-f)M
UUID バージョン (1-7) を示しますN
は UUID のバリアントを示します(通常はモダン UUID で 8, 9, A, または B)
UUID バージョンの比較
Version | Name | 生成方法 | Time-ordered | 使用例 |
---|---|---|---|---|
UUID v1 | Timestamp | 現在のタイムスタンプ + ノード ID (MAC) | はい(一部) | ログ記録、分散システム |
UUID v3 | 名前ベース (MD5) | 名前空間 + 名前の MD5 ハッシュ | No | 同じ入力に対する一貫した ID |
UUID v4 | Random | ランダムまたは疑似ランダムな数値 | No | 汎用、最も一般的 |
UUID v5 | 名前ベース (SHA-1) | 名前空間 + 名前の SHA-1 ハッシュ | No | より強力なハッシュによる一貫した ID |
UUID v6 | 再配置されたタイムスタンプ | ソート用に順序付けられたタイムスタンプ | Yes | データベースキー、時間でソート可能なレコード |
UUID v7 | Unix エポックタイムスタンプ | Unix タイムスタンプ + ランダムデータ | Yes | モダンなソート可能な識別子 |
Nil UUID | ゼロ UUID | すべてゼロ | N/A | 特別な値、未初期化マーカー |
UUID の利点
- 調整不要: 中央調整なしで ID を生成
- グローバルな一意性: 衝突確率が極めて低い
- 固定長: 一貫した 36 文字の文字列表現
- Cross-Platform: ほぼすべてのプログラミング言語でサポート
- Versatile: 用途に応じた異なるバージョン
非標準 UUID の代替
ID タイプ | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Microsoft の UUID 実装 | UUID と機能的に同等 | 古いシステムでの実装差異あり |
ULID | 普遍的に一意な辞書式ソート可能識別子 | 辞書式ソート可能、タイムスタンプ先頭、大文字小文字を区別しない | 新しく、普及度は低い |
Snowflake ID | Twitter の分散 ID システム | 時間でソート可能、コンパクト (64ビット) | 中央調整が必要 |
CUID/CUID2 | 衝突耐性のある ID | 短く、クライアント側生成に適する | 公式標準ではない |
Nano ID | 小型で安全、URL フレンドリーな一意文字列 ID ジェネレーター | UUID より小さく、アルファベットを設定可能 | 標準化されていない |
Short UUID | 標準 UUID の短縮エンコード | よりコンパクトな表現 | 標準 UUID との変換が必要 |
Nil UUID | すべてのビットがゼロの UUID | 特別な意味を持つ | 一意ではない(特別な値として使用) |
Minecraft UUID | ハイフンあり・なしの UUID | 標準 UUID と互換性あり | フォーマットの違いのみ |
実用的な用途
- データベースの主キー: 特に分散または複製データベースで
- 分散システム: 複数システム間のエンティティ識別
- Web アプリケーション: セッション識別子、匿名ユーザーの追跡
- コンテンツ管理: ドキュメントおよびメディア識別子
- APIs: トレースおよびデバッグのためのリクエストおよびトランザクション識別子
- モノのインターネット: 中央登録なしのデバイス識別
- データ同期: 複数のデータストア間のレコード識別
- ソフトウェアライセンス: 一意の製品またはライセンスキー