UUID バージョン6 ジェネレーター(順序付けされたタイムスタンプ)

データベースのインデックス作成に最適化されたタイムスタンプ順のUUIDを生成

これらの例を試してください:

UUID v6とは何ですか?

UUIDバージョン6 はUUID v1の改良として提案された時間ベースの128ビット識別子(36文字の文字列)です。構成は以下の通りです:

  • 並べ替えられたタイムスタンプ: 最も重要なビットから最も重要でないビットへの60ビットタイムスタンプ
  • クロックシーケンス: クロック調整のための14ビットカウンター
  • ノードID: 48ビットの値(通常はMACアドレス)

フォーマット例: 1eb527d6-e927-6511-9a03-0242ac130003

UUID v6の動作

  1. 現在のタイムスタンプを計算する(1582-10-15以降の100ナノ秒単位)
  2. より良いソートのためにタイムスタンプビットを並べ替える(最も重要なビットを先頭に)
  3. 一意性のためにクロックが後退した場合の14ビットクロックシーケンスを取得/インクリメントする
  4. 48ビットのノードIDを取得する(通常はMACアドレスから)
  5. バージョンビット(0110)とバリアントビット(10)を設定する
  6. 8-4-4-4-12形式のハイフン付き32桁の16進数として組み立てる

利点と考慮事項

AdvantagesConsiderations
  • 辞書式にソート可能
  • 埋め込まれた作成時間
  • 高性能な生成
  • 分散生成
  • MACアドレスのプライバシー懸念
  • クロック同期の問題
  • ランダムUUIDより予測可能性が高い
  • ドラフト仕様の状態

UUID v6の構造

BitsContent
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 v4Random安全なランダム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を使用する場合があります。

Resources