UUID v7とは?

UUID v7は、RFC 9562で定義されたUniversally Unique Identifiersの最新バージョンです。UUID v4(完全ランダム)やUUID v1(MACアドレスを使用)などの旧バージョンとは異なり、UUID v7はミリ秒単位の48ビットUnix Epochタイムスタンプを識別子に直接埋め込みます。これにより、UUID v7の値は生成時刻で自然にソート可能となり、時系列順序が重要なデータベースインデックス、分散システム、イベントログにおいて大きな利点をもたらします。

UUID v7はMACアドレスを使用しないため、UUID v1に関連するプライバシー上の懸念を回避できます。タイムスタンプおよびバージョン/バリアントフィールドの後の残りのビットはランダムまたは単調増加データで埋められ、同一ミリ秒内に複数のUUIDが生成された場合でも一意性が保証されます。

UUID v7の構造

UUID v7は128ビットで構成され、以下のように編成されています:

  • ビット0〜47:ミリ秒単位の48ビットビッグエンディアン符号なしUnix Epochタイムスタンプ
  • ビット48〜510111(7)に設定された4ビットのバージョンフィールド
  • ビット52〜63:サブミリ秒精度または一意性のための12ビットのランダムまたは単調増加データ
  • ビット64〜6510(RFC 9562)に設定された2ビットのバリアントフィールド
  • ビット66〜127:追加の一意性のための62ビットのランダムまたは単調増加データ

この構造により、後から生成されたUUIDは常にミリ秒レベルで以前のものより後にソートされるため、B-treeインデックスを使用するデータベースの主キーとして最適です。

ツールの説明

このUUID v7ジェネレーターは、RFC 9562準拠のバージョン7 UUIDを生成し、埋め込まれたタイムスタンプを視覚的に分解して表示します。一度に1件から最大100件のUUIDを生成し、大文字・小文字の書式を切り替え、ハイフンの有無を選択できます。また、最初に生成されたUUIDから埋め込みUnix Epochタイムスタンプを抽出・表示し、各識別子にエンコードされた生成時刻を確認できます。

書式 出力例
標準 019544a2-3b4c-7d8e-9f01-2a3b4c5d6e7f
大文字 019544A2-3B4C-7D8E-9F01-2A3B4C5D6E7F
ハイフンなし 019544a23b4c7d8e9f012a3b4c5d6e7f

機能

  • 一括生成:数量スライダーで1〜100件のUUID v7を一度に生成
  • 大文字切り替え:小文字と大文字の出力を切り替え
  • ハイフン切り替え:コンパクトな書式に合わせてハイフンの有無を選択
  • タイムスタンプ抽出:生成されたUUIDから埋め込みUnix Epochタイムスタンプを自動表示
  • ダウンロード対応:生成されたUUIDをテキストファイルとしてエクスポートしてバッチ利用が可能

ユースケース

  • 挿入パフォーマンスとローカリティが重要な大規模データベース向けに、時系列ソート可能な主キーを生成する
  • KafkaやPulsarなどの分散イベントストリーミングシステム向けに、単調増加する識別子を作成する
  • 別途タイムスタンプ列を設けることなく時系列順序が必要なアプリケーションでUUID v4を置き換える

UUID v7と他のバージョンの比較

バージョン 時刻ベース ソート可能 プライバシー安全 ランダム性
v1 あり なし なし(MACを使用)
v4 なし なし あり
v6 あり あり なし(MACを使用)
v7 あり あり あり

UUID v7はハードウェア識別子を公開することなく時刻ベースのソート可能性を実現し、分散ノード間での衝突を防ぐのに十分なランダム性を備えた、最良の特性を兼ね備えています。

オプションの説明

  • 数量(1〜100):1回のバッチで生成するUUID v7の件数。バッチ内のすべてのUUIDはほぼ同じタイムスタンプを共有しますが、ランダムビットは異なります。
  • 大文字:有効にすると、UUIDが大文字の16進数文字(a〜fの代わりにA〜F)で出力されます。
  • ハイフン:有効にすると(デフォルト)、UUIDに標準の8-4-4-4-12のハイフングループが含まれます。無効にすると32文字のコンパクトな16進数stringになります。

よくある質問

UUID v7は衝突しますか? 衝突は極めてまれです。同一ミリ秒内であっても、74ビットのランダム/単調増加データにより1800京以上の組み合わせが提供されます。また、uuidライブラリはプロセス内の一意性を保証するために単調増加カウンターを使用しています。

UUID v7はUUID v4と後方互換性がありますか? はい。UUID v7は同じ128ビット、8-4-4-4-12の書式に従っており、UUIDが受け入れられる場所であればどこでも有効です。既存のUUID列、パーサー、バリデーターは変更なしで動作します。

UUID v4の代わりにUUID v7を使用すべき場合はいつですか? 時系列順のキーがユースケースに有益な場合、たとえば連続した挿入によってB-treeインデックスのパフォーマンスが向上するデータベースの主キーとして使用する場合はUUID v7を使用してください。順序が不要で最大限のランダム性を求める場合はUUID v4を使用してください。