ブログに戻る
uuid 2025-02-05

UUIDバージョン:どれをいつ使うべきか

UUIDバージョン(v1, v4, v5, v7)の包括的な比較と、適切なものを選ぶための実践的なガイダンス。

UUID(汎用一意識別子)は、ソフトウェア開発で広く使用される128ビットの識別子です。複数のバージョンがあるため、適切なものを選ぶことが重要です。

UUIDフォーマット

すべてのUUIDは同じフォーマットに従います:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx(Mはバージョン、Nはバリアントを示す)

UUIDバージョン1:時間ベース

UUID v1は現在のタイムスタンプとマシンのMACアドレスを使用します。

メリット

  • 作成時間で自然にソート可能
  • マシン間で一意性が保証される
  • 調整なしの分散システムに適している

デメリット

  • MACアドレスが露出する(プライバシーの懸念)
  • 作成タイムスタンプが露出する

UUIDバージョン4:ランダム

UUID v4は完全にランダムな数値から生成されます。

メリット

  • 情報漏洩なし
  • 実装が簡単
  • 最も広く使用されているバージョン

デメリット

  • ソート不可
  • データベースインデックスのパフォーマンスが低い

UUIDバージョン7:時間順序(最新)

UUID v7は、Unixタイムスタンプとランダムデータを組み合わせた最新の追加です。

メリット

  • 辞書順でソート可能(データベースインデックスに最適)
  • ミリ秒精度のタイムスタンプを含む
  • v4よりデータベースパフォーマンスが向上
  • プライバシーの問題なし

適切なバージョンの選択

ユースケース推奨バージョン

|------------|-------------|

汎用IDv4 データベース主キーv7 名前からの決定論的IDv5 時間ソートイベントv7 最大のプライバシーv4

データベースでのUUID

UUIDを主キーとして使用する際の考慮事項:

1. ソート済み挿入にはv7:B-treeの断片化を削減

2. バイナリストレージ:CHAR(36)の代わりにBINARY(16)で保存して容量を節約

3. インデックス:v7 UUIDは範囲クエリでv4よりはるかに優れたパフォーマンス

UUIDジェネレーターツールでUUIDを即座に生成できます。