2

GUID は、MSFT によって生成される 128 ビットの一意の識別子です。

GUID がグローバルに一意であるかどうかは疑問でした。つまり、私が生成した GUID は、世界中のアプリを使用しているどのシステムでも誰も生成できないということですか? 本当?

Microsoft がこの独自性をどのように認識または追跡するのか、私は驚いています。

また、生成された一意の GUID は、任意のエンティティにリンクできますか? アプリケーション、変数、システム、?

GUOD をリンクできるすべてのエンティティは? GUID の概念を明確にしてくれる人はいますか? プログラミング言語に依存しませんか。

4

5 に答える 5

5

これらの 2 つの記事は、これらの ID の背後にある概念を理解するのに役立つはずです。


UUID の目的は、分散システムが重要な中央調整なしで情報を一意に識別できるようにすることです。[...] 一意という言葉は、「保証された一意」ではなく「実質的に一意」を意味するものと解釈する必要があります。[...] 2 つの異なるアイテムが同じ識別子を共有する可能性があります。

識別子のサイズと生成プロセスは、実際にこれが十分に起こりそうにないように選択する必要があります。

誰でも UUID を作成し、それを使用して何かを識別することができます。同じ識別子が他の何かを識別するために意図せずに作成されることはありません。したがって、UUID でラベル付けされた情報は、識別子 (ID) の競合を解決する必要なく、後で単一のデータベースに結合できます。

非常に単純化: 基本的には、一意である可能性が非常に高い (特定の形式の) 識別子を作成する方法です。

于 2012-04-26T08:56:14.807 に答える
1

これは基本的に、さまざまな情報のハッシュ値の一種であり、その組み合わせの合計は、一意である可能性が非常に高いか、非常にまれです。他のハッシュと同様に、衝突が発生する可能性がありますが、実際に衝突が発生する可能性は非常に低く、無視できます。

ハッシュ関数は、一意であることが保証されている、または一意であることが期待されるさまざまな情報を利用します (たとえば、MAC アドレスを使用できます)。または、別のオプションとして、数値をランダムに生成します (128 ビットを使用すると、まったく同じ数値をランダムに生成する可能性があります)。は...まあ、計算できますが、かなり低いです:-))

于 2012-04-26T08:55:43.917 に答える
0

グローバルに一意の識別子を生成できます。たとえば、MAC アドレス (一意) + 現在時刻。もちろん、GUID ジェネレーターはより複雑なアルゴリズムを使用します。

于 2012-04-26T09:00:05.610 に答える
0

GUID が 1 つのシステム上でも一意ではないことを証明する簡単な反例を 1 つ思いつくことができます。

for i = 0 : 2^128
   generateGUID();

実際2^128、GUID を生成することは現実的ではありませんが、これは、閉じた間隔では一意性が数学的に不可能であることを示しています。

ただし、2 つの同一の GUID に遭遇することはまずありません。

于 2012-04-26T09:30:30.780 に答える
0

非常によく似た質問への回答を読みたいと思うかもしれませんウィキペディアからの次の引用が含まれています。

生成された各 GUID が一意であるとは限りませんが、一意のキーの総数 (2^128 または 3.4×10^38) が非常に多いため、同じ番号が 2 回生成される確率は非常に低くなります。たとえば、約 5×10^22 個の星を含む観測可能な宇宙を考えてみましょう。すべての星は、6.8×10^15 個の普遍的に一意の GUID を持つことができます。

lxが提供する回答のリンクを参照してください

次に、Raymond Chen によるブログ投稿に従ってください。GUID はグローバルに一意ですが、GUID の部分文字列は詳細については説明していません。

興味深い議論が別の SO の質問に続きました。

于 2012-04-26T08:59:31.160 に答える