一意性は、公正な GUID 生成アルゴリズムを使用して、同じ GUID を再び取得する可能性から生じます。guid アルゴリズムは基本的に乱数生成器であり、選択肢の数は天文学的な数です。つまり、公平に生成された 2 つの guid 生成が同じ数になることはほとんどありません。
GUID は 128 ビットであるため、2^128 個の一意の GUID があります。64 ビット (8 バイト) しかない場合、選択肢は 2^64 しかありません。これははるかに小さい数値であり、64 ビットの数値をランダムに選択すると、別のランダムな選択と「衝突」する可能性がはるかに高くなります。
日付と時刻を分までの 4 バイト (smalldatetime) などの構造を指定すると、その 1 分間のレコードを一意に識別するための乱数用に 60 ビットが残ります。毎分 n 番目の新しいレコードの ID を (n-1)/2^60 番目に繰り返す可能性がある場合は、それを使用できます。(これらの 64 ビットすべてを ID として引き続き使用します) そうでない場合は、ビットを増やしてください!
さらに、GUID が有用であるために真にグローバルに一意である必要はないことに注意してください。何のためにあるのかという暗黙の情報も一意性の一部です。ファイルのアップロードを管理するためのレコードがデータベースにあり、その同じ GUID がプラハのプログラマーによって ActiveX プラグインを定義するために使用されている場合 - 一部のコードがレコード ID を使用して ActiveX をロードする時間がないため、まったく問題はありません。 、プラグインをロードしようとしていたときにブラウザが誤ってレコードをロードすることもありません! 数のコンテキストは、数自体の重要な部分です。
ただし、常に接続されているとは限らない 2 つ以上のシステム (オフラインまたはピアツーピア クライアント、または複数のサーバー) 間で新しい ID を生成する必要がない限り、中央機関によって管理され、代わりに連続的に増加する long を使用します。