UUID バージョン7 ジェネレーター(Unixエポック時間)

ミリ秒精度のUnixタイムスタンプUUIDを生成し、時間順のソートを実現

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

UUID v7とは?

UUIDバージョン7 は新しいUUID仕様案で提案された時間順序付けされた128ビット識別子(36文字の文字列)です。構成は以下の通りです:

  • Unixタイムスタンプ: ミリ秒精度のUnix時間48ビット
  • ランダムデータ: 74ビットのランダムデータ
  • バージョンとバリアントビット: フォーマット識別用6ビット

フォーマット例: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

UUID v7の動作

  1. 現在のUnixタイムスタンプをミリ秒単位で取得 (48ビット)
  2. 暗号学的に強力な74ビットのランダムデータを生成
  3. バージョンビットを0111(バージョン7)に設定
  4. バリアントビットを10に設定 (RFC 4122標準)
  5. 32桁の16進数をハイフン付きで組み立て: 8-4-4-4-12形式

利点と考慮点

AdvantagesConsiderations
  • 辞書式にソート可能
  • プライバシーの懸念なし
  • 埋め込みUnixタイムスタンプ
  • データベース向けに簡素化
  • 仕様案の状態
  • タイムスタンプの解像度制限(ミリ秒)
  • レガシーシステムでのサポート制限
  • 1970年以前には戻れない

UUID v7の構造

BitsContent
0-47Unixタイムスタンプ(ミリ秒)
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 v4Random安全なランダム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アドレスを使用しません。タイムスタンプとランダムデータを組み合わせて、プライバシーを保護しつつソート性を維持します。

Resources