UUID v7ジェネレーター|最新規格UUID

ソート可能な時刻順UUID v7を生成します。データベースのID生成に最適。

UUID v7 — 時刻順(RFC 9562)
上位48bitにUnixミリ秒タイムスタンプを格納し、ソート可能なUUIDになります。DBキーに最適。
形式:
タイムスタンプ抽出

UUID v7ジェネレーター|最新規格UUIDとは

ソート可能な時刻順UUID v7(RFC 9562)をブラウザ上で即時生成。データベースのプライマリキーに最適なUUID v7を最大100個まで一括生成・コピー対応。登録不要・無料。

使い方

  1. 1生成数(1〜100)をスライダーまたは数値入力で選択してください。
  2. 2「UUID v7を生成」ボタンをクリックするとソート可能なUUID v7が生成されます。
  3. 3最新のUUIDは上部の大型ボックスに表示されます。クリックでコピー可能。
  4. 4複数生成した場合は一覧から各UUIDの「コピー」ボタンで個別コピーできます。
  5. 5「全てコピー」または「DL」ボタンで一括コピー・テキストファイルダウンロードが可能です。

メリット・特徴

  • データベースのB-treeインデックスに最適な単調増加UUID v7
  • 最大100個を一括生成・コピー対応
  • 大文字/小文字・ハイフン有無・括弧形式を自在に設定
  • UUID構造の色付き解析パネルでタイムスタンプ・バージョンビットを確認
  • 登録・インストール不要。ブラウザ上で完全無料
01

UUID v7の構造と設計思想

UUID v7(RFC 9562)はデータベースのパフォーマンス問題を解決するために設計された新世代のUUID形式です。従来のUUID v4(完全ランダム)がデータベースインデックスで引き起こす問題を根本から解消します。ここではv7の128ビット構造と設計思想を解説します。

UUID v7の128ビット構造詳細

UUID v7は以下のフィールドで構成されます。unix_ts_ms(48ビット)は生成時のUnixタイムスタンプ(ミリ秒精度)、ver(4ビット)はバージョン番号(0111 = 7)、rand_a(12ビット)はランダムビット、var(2ビット)はバリアントビット(10)、rand_b(62ビット)はランダムビットです。タイムスタンプが先頭に配置されているため、辞書順ソートと時系列順が一致します。

UUID v4との比較:データベースパフォーマンス

UUID v4(ランダム)をプライマリキーに使うと、新しいレコードがインデックスの任意の位置に挿入されるためB-treeページの分割が頻繁に発生し、インデックスの断片化・キャッシュミスが増加します。UUID v7はタイムスタンプベースの単調増加のため、新しいレコードは常にインデックスの末尾に追加されます。これはAUTO_INCREMENTやSERIALと同様の挿入パターンで、大規模テーブルでのINSERTパフォーマンスを大幅に改善します。

UUID v7の実装サポート状況

UUID v7はRFC 9562(2024年)で標準化されたばかりの新しい仕様ですが、主要な言語・フレームワークで急速にサポートが広がっています。PostgreSQLではpg_uuidv7拡張が利用可能で、将来のバージョンでのネイティブサポートが議論されています。Laravel(PHP)ではStr::uuid7()として実装済みです。Node.jsではuuidライブラリのv7対応版が利用可能です。Rustのuuidクレートもv7に対応しています。

02

UUID v7の実践的な活用ガイド

UUID v7をデータベース設計に採用する際の具体的な実装方法と注意点を解説します。PostgreSQL・MySQL・アプリケーションコードでの使用例を紹介します。

PostgreSQLでUUID v7を使う

PostgreSQLではUUIDをUUID型カラムとして定義できます。UUID v7はRFC 9562準拠の標準UUID形式なので既存のUUID型カラムにそのまま格納可能です。インデックスのパフォーマンスを最大化するには、主キーカラムをUUID型にしてUUID v7を挿入します。PostgreSQL 14以降ではGEN_RANDOM_UUID()(v4生成)の代わりにアプリケーション側でv7を生成して渡す形が推奨されます。将来的にはpostgresql/uuidv7拡張でデータベース側生成も可能です。

MySQLでUUID v7を使う

MySQL 8.0以降のUUID_TO_BIN()・BIN_TO_UUID()関数はUUID v4を前提にしていますが、UUID v7の値も同様に格納できます。BINARY(16)型での格納が最も効率的です。MySQLのUUID()関数はv1を生成しますが、アプリケーション側でUUID v7を生成してBINARY(16)カラムに格納することでINSERTパフォーマンスを改善できます。インデックスの断片化を防ぐためには、文字列としてのVARCHAR(36)格納よりBINARY(16)が推奨されます。

UUID v7使用時のセキュリティ考慮事項

UUID v7にはミリ秒精度のタイムスタンプが含まれるため、IDを公開する場合はレコードの作成時刻が推測される可能性があります。これはUUID v1と同様の考慮事項です。ユーザーIDや機密リソースのIDとして外部公開する場合は、タイムスタンプ情報を含まないUUID v4の使用を検討してください。内部システムIDやデータベースの内部キーとして使用し、APIレスポンスには別のID(v4等)を返す設計も有効なアプローチです。

よくある質問(FAQ)

UUID v7とは何ですか?
UUID v7は2024年公開のRFC 9562で標準化された新しいUUID形式です。先頭48ビットにUnixミリ秒タイムスタンプを配置することで時系列でのソートが可能な「単調増加UUID」を実現します。データベースのプライマリキーとして最適な設計になっています。
UUID v7がデータベースのプライマリキーに向いている理由は何ですか?
UUID v7は単調増加(時系列でソート可能)のため、B-treeインデックスのパフォーマンスが向上し、ランダムなUUID v4に比べてINSERT時のインデックス断片化が少なくなります。PostgreSQL・MySQL・SQL ServerなどでUUIDをプライマリキーに使う場合、v7が現在最も推奨される選択肢です。
UUID v7は公式な標準ですか?
はい。2024年公開のRFC 9562で標準化されており、旧RFC 4122を更新する現行規格です。v1〜v5の再定義とv6・v7・v8の新バージョンが追加されました。
UUID v7からいつ生成されたかわかりますか?
はい。UUID v7の先頭48ビットにはUnixミリ秒タイムスタンプが含まれているため、生成日時をミリ秒精度で復元できます。プライバシーが重要な場面ではUUID v4をご検討ください。
UUID v7とULIDの違いは何ですか?
ULIDはBase32エンコードの26文字形式で、UUID互換ではありません。UUID v7は標準UUIDフォーマット(8-4-4-4-12の16進数)を維持しつつソート可能にした形式で、既存のUUID型カラムとの互換性があります。RFC 9562の標準であるv7が今後のエコシステムサポートという観点では有利です。

不具合や動作がおかしい点を見つけたら教えてください。

不具合報告はこちら →