ASP.NETサーバーが複数のユーザーに同じGUIDを生成することは可能ですか?

StackOverflow https://stackoverflow.com/questions/272169

  •  07-07-2019
  •  | 
  •  

質問

GUIDコリジョンを見てきました 両方のクライアントがまったく同じ時間(おそらくマイクロ秒まで)にGUIDを生成する同じWebページにアクセスした場合に、GUID衝突が発生する可能性があるかどうかについて考えてみたかっただけですか?

役に立ちましたか?

解決

理論的には可能ですが、ほとんどありません。

他のヒント

いいえ。その場合は、急いで宝くじを購入してください!

単一のサーバーでは、できません。不可能です。バージョン4のGUIDは、(とりわけ)擬似ランダムな54ビット値で構成されており、私が理解しているように、繰り返しの前にすべての値を循環します。

複数のサーバーで作成する場合、非常にまれですが、guidの衝突が発生する可能性があります。

RFC 4122 、特にセクション4.1.5を参照してください。現代のWindowsはv4 UUIDを使用していると思います。

無料の百科事典ウィキペディアから

グローバルに一意の識別子またはGUID(/ˈ guːɪ d /または/ˈ gwɪ d /と発音)は、ソフトウェアアプリケーションで使用される特別な種類の識別子です注文任意のコンテキストで一意の参照番号を提供する(したがって、「グローバルに」)、たとえば、ソフトウェアアプリケーションのアクセスポイントの種類の内部参照を定義するとき、またはデータベース内の一意のキー。 生成された各GUIDの一意性は保証されませんが、一意のキーの総数(2128または3.4× 1038)は非常に大きいため、同じ数が2回生成される可能性は非常に小さくなります 。たとえば、約5× 1022個の星を含む観測可能な宇宙を考えてみましょう。すべての星は6.8× 1015の普遍的に一意のGUIDを持つことができます。

多数のGUIDを生成する場合、 誕生日のパラドックス 。理論的にはGUIDの衝突は非常にまれですが(直感的ではありません)、実際には時々発生します。

もちろん、これらの衝突をプログラムで処理するのは時間の無駄ですが、コードが発生した場合、静かに検出されずに大声で失敗するようにコードを記述する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top