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よりデータベースパフォーマンスが向上
- プライバシーの問題なし
適切なバージョンの選択
|------------|-------------|
データベースでのUUID
UUIDを主キーとして使用する際の考慮事項:
1. ソート済み挿入にはv7:B-treeの断片化を削減
2. バイナリストレージ:CHAR(36)の代わりにBINARY(16)で保存して容量を節約
3. インデックス:v7 UUIDは範囲クエリでv4よりはるかに優れたパフォーマンス
UUIDジェネレーターツールでUUIDを即座に生成できます。