UUID v7 とは何ですか?
UUID version 7 は、2024年5月に公開された RFC 9562 によって定義された時間順の128ビット識別子です。構成要素は次のとおりです:
- Unixタイムスタンプ: ミリ秒精度のUnix時間(48ビット)
- ランダムデータ: 74ビットのランダムデータ
- バージョンおよびバリアントビット: フォーマット識別のための6ビット
フォーマット例: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f
UUID v7 の動作方法
- 現在のUnixタイムスタンプをミリ秒で取得する(48ビット)
- 暗号学的に強いランダムデータを74ビット生成する
- バージョンビットを0111に設定する(version 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 | 生成時刻を埋め込み、MACアドレスは含まれない |
一般的な使用例
- データベースの主キー: 効率的なインデックス
- 分散システム: 調整なしで時間順に並べられる
- 最新のアプリケーション: プライバシーに配慮した識別子
- Microservices: サービス間でソート可能な ID
- イベントソーシング: 時系列のイベント ID
- データウェアハウジング: 時間順の分析用 ID
よくある質問
UUID v7 が v1 や v6 より優れている点は何ですか?
UUID v7 は Unix タイムスタンプ(ミリ秒)とランダムデータを使用し、MACアドレスの代わりにプライバシーを保護しつつ、生成時刻によるソート性を維持します。
UUID v7 は正式な標準ですか?
はい。UUID v7 は RFC 9562 によって定義されており、2024年5月に公開されました。
UUID v7 から作成時刻を抽出できますか?
はい。最初の48ビットからミリ秒単位の Unix タイムスタンプを抽出し、標準的な日時に変換できます。
UUID v7 は作成時刻でソートできますか?
はい。UUID v7 は辞書順(レキシコグラフィック)でソートされるように設計されており、最上位ビットに Unix タイムスタンプが配置されているため、文字列の直接比較で時系列順と一致します。
UUID v7 はシステム情報を露出しますか?
UUID v7 は MAC アドレスを埋め込みませんが、最初の48ビットはミリ秒単位の生成タイムスタンプを明らかにします。このタイミングに関するメタデータは、識別子を受け取った誰にでも見えるものとして扱ってください。