5.8. UUID Version 8
5.8. UUID Version 8
UUIDv8 は、実験的またはベンダー固有のユースケースのために RFC 互換フォーマットを提供します。唯一の要件は、セクション 4.1 および 4.2 で定義されているように、バリアントとバージョンビットを設定する必要があることです。UUIDv8 の一意性は実装固有であり、想定してはなりません。
明示的に定義されているビットは、バージョンとバリアントフィールドのビットのみで、実装固有の UUID のために 122 ビットが残されています。明確にするために、UUIDv8 は、すべての 122 の追加ビットがランダムデータで埋められる UUIDv4 (セクション 5.4) の代替ではありません。
UUIDv8 の使用が発生する可能性のあるいくつかの例の状況:
-
実装が、この文書で定義されているもの以外の追加情報を UUID 内に埋め込みたい場合。
-
実装が、現在の UUID の 1 つの使用を阻害する他のアプリケーションおよび/または言語の制限を持っている場合。
付録 B では、2 つの例のシナリオに対処するために、2 つのカスタム UUIDv8 アルゴリズムの説明例を提供しています。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| custom_a |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| custom_a | ver | custom_b |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var| custom_c |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| custom_c |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
図 12: UUIDv8 フィールドとビットレイアウト
フィールド定義:
custom_a: レイアウトの最初の 48 ビットで、実装が適切と見なすように埋めることができます。ビット 0 から 47 (オクテット 0-5) を占有します。
ver: セクション 4.2 で定義されている 4 ビットのバージョンフィールドで、0b1000 (8) に設定されます。オクテット 6 のビット 48 から 51 を占有します。
custom_b: レイアウトのさらに 12 ビットで、実装が適切と見なすように埋めることができます。ビット 52 から 63 (オクテット 6-7) を占有します。
var: セクション 4.1 で定義されている 2 ビットのバリアントフィールドで、0b10 に設定されます。オクテット 8 のビット 64 と 65 を占有します。
custom_c: var フィールドの直後のレイアウトの最後の 62 ビットで、実装が適切と見なすように埋めることができます。ビット 66 から 127 (オクテット 8-15) を占有します。