UUID v8 とは
UUID v8 は標準形式のバージョンとバリアントのビットをそのまま保ちつつ、残りの 122 ビットをアプリケーションが自由に定義できます。カウンタやパーティション番号、テナント識別子など、必要な情報を埋め込めます。
v8 ができる前は、こうした形式は v4 を流用するか独自のデータ型を用意するしかありませんでした。RFC 9562 がそれらを正式に認めたことで、UUID を理解するあらゆるツールや列と互換性を保てるようになりました。
使い方
- 生成する件数を選びます。
- システムが求める場合は大文字や波括弧を有効にします。
- 生成を押します。各値は RFC 9562 に準拠した有効な UUID です。
用途
- 値そのものにメタデータを持たせたい識別子。
- UUID のように見え、UUID として扱える独自形式。
- 標準化の前に新しいビット配置を試す。
UUID v8 の位置づけ
| 選択肢 | 使う場面 |
|---|---|
v8 | 独自の配置を UUID の形に収めたもの |
v7 | 必要なのが時刻順だけなら v7 で足ります |
v4 | 追加情報を持たせる必要がないなら v4 が簡単です |
UUID の各バージョン早見表
| バージョン | 並べ替え可能 | 基になる情報 | 向いている用途 |
|---|---|---|---|
| v1 | 不可 | タイムスタンプ + MAC アドレス | v1 に依存したままの既存システム |
| v3 | 不可 | 名前の MD5 ハッシュ | MD5 を使わざるを得ない場面の決定的な識別子 |
| v4 | 不可 | 122 ビットの乱数 | 一般的な識別子のほとんど |
| v5 | 不可 | 名前の SHA-1 ハッシュ | 同じ名前から常に同じ識別子を得たいとき |
| v6 | 可 | 並べ替えたタイムスタンプ | 乱数性を保ったまま並べ替えたいとき |
| v7 | 可 | ミリ秒精度の Unix 時刻 | データベースの主キーやイベント識別子 |
| v8 | 不可 | 独自のビット配置 | 独自形式や実験的な用途 |
7 つのバージョンはいずれも 128 ビットで、同じ 8-4-4-4-12 の形式で表記します。違うのはビットの意味だけです。
よくある質問
UUID v8 は有効な UUID ですか?
はい。RFC 9562 が v8 を正式に定義しているため、UUID の検証を通り、uuid 型の列にも保存できます。
いつ v8 を使い、いつ独自形式にすべきですか?
既存のツール・ライブラリ・データベース列に追加のコードなしで理解させたいときに v8 を使います。代わりにビットの意味は自分で決めるため、文書化は自分の責任になります。
v8 は重複の危険がありますか?
ビットの割り当ては自分で決めるため、危険は設計次第です。122 ビットを乱数にすれば v4 と同等に安全ですが、32 ビットのカウンタだけにすると重複の可能性が大きく上がります。