UUID v6とは何ですか?
UUIDバージョン6 はUUID v1の改良として提案された時間ベースの128ビット識別子(36文字の文字列)です。構成は以下の通りです:
- 並べ替えられたタイムスタンプ: 最も重要なビットから最も重要でないビットへの60ビットタイムスタンプ
- クロックシーケンス: クロック調整のための14ビットカウンター
- ノードID: 48ビットの値(通常はMACアドレス)
フォーマット例: 1eb527d6-e927-6511-9a03-0242ac130003
UUID v6の動作
- 現在のタイムスタンプを計算する(1582-10-15以降の100ナノ秒単位)
- より良いソートのためにタイムスタンプビットを並べ替える(最も重要なビットを先頭に)
- 一意性のためにクロックが後退した場合の14ビットクロックシーケンスを取得/インクリメントする
- 48ビットのノードIDを取得する(通常はMACアドレスから)
- バージョンビット(0110)とバリアントビット(10)を設定する
- 8-4-4-4-12形式のハイフン付き32桁の16進数として組み立てる
利点と考慮事項
Advantages | Considerations |
---|---|
|
|
UUID v6の構造
Bits | Content |
---|---|
0-47 | タイムスタンプの上位48ビット |
48-51 | バージョン(v6の場合は0110) |
52-59 | タイムスタンプの下位8ビット |
60-63 | タイムスタンプの上位4ビット |
64-65 | バリアント(RFC4122の場合は10) |
66-79 | クロックシーケンス(14ビット) |
80-127 | ノードID(48ビット) |
UUID v6 と他のバージョンの比較
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 | ✅ プライベート |
一般的な使用例
- 時間でソート可能なデータベースキー: 時系列ソート用
- 分散データベース: 時間順インデックス付き
- ログエントリ: 自然な時系列順で
- 監査証跡: 埋め込みタイムスタンプ付き
- メッセージキューイング: 時間ベースの処理用
- トランザクション記録: 時系列順で
よくある質問
UUID v1とv6の違いは何ですか?
UUID v6はUUID v1のタイムスタンプビットを並べ替え、辞書式順に自然にソート可能にしています。内容はv1と同じで、並べ替えられているだけです。
UUID v6は公式の標準ですか?
UUID v6は現在、提案中のRFC 4122bis文書のドラフト仕様です。まだ公式なRFC標準ではありませんが、多くのUUIDライブラリで実装されています。
UUID v6から作成時間を抽出できますか?
はい。タイムスタンプのコンポーネントはビット0-59から抽出でき、日時値に変換可能です。
UUID v6は作成時間でソート可能ですか?
はい。v1とは異なり、UUID v6はタイムスタンプビットを最も重要なビットから最も重要でないビットの順に配置しているため、辞書式(文字列)比較で時系列順と一致します。
UUID v6は私のMACアドレスを公開しますか?
デフォルトでは公開します。UUID v1と同様に、多くの実装はノードIDにMACアドレスを使用します。プライバシー重視の実装ではランダムなノードIDを使用する場合があります。