7

RFC 4122 ( Universally Unique IDentifier (UUID) URN Namespace ) では、「クロック シーケンス」という用語が使用されています。

4.1.5. クロック シーケンス

UUID バージョン 1 の場合、クロック シーケンスを使用して、クロックが時間を遡って設定された場合やノード ID が変更された場合に発生する可能性のある重複を回避します。

クロックが逆に設定されている場合、または逆に設定されている可能性がある場合 (たとえば、システムの電源がオフになっている間)、UUID ジェネレーターは、クロックが設定された値よりも大きいタイムスタンプを持つ UUID が生成されていないことを確認できません。その場合、クロック シーケンスを変更する必要があります。クロック シーケンスの以前の値がわかっている場合は、インクリメントするだけです。それ以外の場合は、ランダムまたは高品質の疑似乱数値に設定する必要があります。

同様に、ノード ID が変更された場合 (ネットワーク カードがマシン間で移動された場合など)、クロック シーケンスを乱数に設定すると、マシンのクロック設定のわずかな違いによる重複の可能性が最小限に抑えられます。変更されたノード ID に関連付けられたクロック シーケンスの値がわかっている場合は、クロック シーケンスをインクリメントするだけで済みますが、そうはなりません。

クロック シーケンスは、システム間の相関を最小限に抑えるために、最初に (つまり、システムの有効期間内に 1 回) 乱数に初期化する必要があります。これにより、システムからシステムへと急速に移動または切り替わる可能性があるノード識別子に対して最大限の保護が提供されます。初期値は、ノード識別子に関連付けてはなりません。

UUID バージョン 3 または 5 の場合、クロック シーケンスは、セクション 4.3 で説明されている名前から構築された 14 ビット値です。

UUID バージョン 4 の場合、クロック シーケンスは、セクション 4.4 で説明されているように、ランダムまたは疑似ランダムに生成された 14 ビット値です。

この用語はどういう意味ですか?

4

4 に答える 4

7

"Clock Sequence" は本当に誤解を招く名前のようです。その定義に基づいて、より適切な名前は「uuid のランダム コンポーネント」である可能性があります。

uuid の名声に対する大きな主張の 1 つは、両方が UUID 値を生成した場合、同じ 128 ビット値を生成しないことを確信できることです。これは、衝突の可能性が高いことを示しています。

共通のコーディネーターまたは事前に合意されたスキームがあれば、衝突が発生しないと確信することもできます.

潜在的なスキーム:

1. Partition Int Space: I get numbers 1-999, you get 1000-1999.
2. Request Reservation: Request 10 numbers and increment a centrally stored max reserved numbers.  You get numbers 1-10.  The next reservation gets 11-20.

大きな UUID 観測は、かなりの数のビット (この場合は 16) がある場合、次のリクエスターが同じランダム値を取得する可能性はほとんどないということです。

宝くじはこのコンセプトに基づいています。

于 2017-01-05T01:44:21.580 に答える
-1

セクション 4.1.2 で定義されているように、UUID を構成するフィールドの 1 つです。

于 2017-01-05T01:20:36.310 に答える