UUID v7とは?
UUIDバージョン7 は新しいUUID仕様案で提案された時間順序付けされた128ビット識別子(36文字の文字列)です。構成は以下の通りです:
- Unixタイムスタンプ: ミリ秒精度のUnix時間48ビット
- ランダムデータ: 74ビットのランダムデータ
- バージョンとバリアントビット: フォーマット識別用6ビット
フォーマット例: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f
UUID v7の動作
- 現在のUnixタイムスタンプをミリ秒単位で取得 (48ビット)
- 暗号学的に強力な74ビットのランダムデータを生成
- バージョンビットを0111(バージョン7)に設定
- バリアントビットを10に設定 (RFC 4122標準)
- 32桁の16進数をハイフン付きで組み立て: 8-4-4-4-12形式
利点と考慮点
Advantages | Considerations |
---|---|
|
|
UUID v7の構造
Bits | Content |
---|---|
0-47 | Unixタイムスタンプ(ミリ秒) |
48-51 | バージョン(v7は0111) |
52-63 | ランダムデータ |
64-65 | バリアント(RFC4122は10) |
66-127 | ランダムデータ |
UUID v7と他のバージョンの比較
Version | ベース | ユースケース | Privacy |
---|---|---|---|
UUID v1 | 時間 + MAC | 時間順序付けID | ⚠️ MACアドレスを公開 |
UUID v3 | 名前空間 + MD5 | 決定論的ID | ✅ プライベート |
UUID v4 | Random | 安全なランダムID | ✅ プライベート |
UUID v5 | 名前空間 + SHA-1 | 決定論的ID | ✅ プライベート |
UUID v6 | 時間(再配置) | ソート可能ID | ⚠️ MACアドレスを公開 |
UUID v7 | 時間 + ランダム | ソート可能ID | ✅ プライベート |
一般的な使用例
- データベースの主キー: 効率的なインデックス
- 分散システム: 調整なしで時間順序付け
- モダンアプリケーション: プライバシー重視の識別子
- Microservices: サービス間でソート可能なID
- イベントソーシング: 時系列イベントID
- データウェアハウジング: 時間順序付け分析ID
よくある質問
UUID v7のv1やv6に対する利点は何ですか?
UUID v7はUnixタイムスタンプのミリ秒とランダムデータを使用し、MACアドレスの代わりにプライバシー保護を提供しつつ、生成時間によるソート性を維持します。
UUID v7は公式標準ですか?
UUID v7は現在、提案中のRFC 4122bis文書のドラフト仕様です。まだ公式なRFC標準ではありませんが、多くのUUIDライブラリで実装されています。
UUID v7から作成時間を抽出できますか?
はい。最初の48ビットからミリ秒単位のUnixタイムスタンプを抽出し、標準的な日時に変換できます。
UUID v7は作成時間でソート可能ですか?
はい。UUID v7は辞書式にソート可能になるよう設計されており、最上位ビットにUnixタイムスタンプがあり、文字列比較で時系列順を直接比較できます。
UUID v7はシステム情報を公開しますか?
いいえ。v1/v6とは異なり、UUID v7はMACアドレスを使用しません。タイムスタンプとランダムデータを組み合わせて、プライバシーを保護しつつソート性を維持します。