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

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

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

UUID v7 とは何ですか?

UUID version 7 は、2024年5月に公開された RFC 9562 によって定義された時間順の128ビット識別子です。構成要素は次のとおりです:

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

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

UUID v7 の動作方法

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

利点と注意点

AdvantagesConsiderations
  • 辞書順(レキシコグラフィック)でソート可能
  • MACアドレスを埋め込まない
  • Unixタイムスタンプを埋め込む
  • データベース向けに簡素化
  • システムは UUID v7 のサポートが必要
  • タイムスタンプの解像度がミリ秒に限定される
  • レガシーシステムでのサポートが限定的
  • 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生成時刻を埋め込み、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ビットはミリ秒単位の生成タイムスタンプを明らかにします。このタイミングに関するメタデータは、識別子を受け取った誰にでも見えるものとして扱ってください。

Resources