86

GUIDとは正確には何ですか?なぜ、どこで使用する必要があるのですか?
多くの場所やウィキペディアで GUID への言及を見てきましたが、どこで使用するかはあまり明確ではありません。誰かがこれに答えることができれば、それは素晴らしいことです。ありがとう

4

16 に答える 16

117

GUID は技術的には、グローバルに一意の識別子を表します。実際、これは 128 ビット構造であり、衝突が繰り返されたり作成されたりする可能性はほとんどありません。計算すると、値のドメインは10 億単位になります。

一意である必要がある ID を生成する複数の独立したシステムまたはクライアントがある場合は、GUID を使用します。

たとえば、ID に一意の制約があるテーブルにトランザクション データを作成して挿入する 5 つのクライアント アプリがある場合は、GUID を使用します。これにより、クライアントが最初にサーバーから発行された ID を要求する必要がなくなります。

これは、2 つのオブジェクトに同じ ID を持たせたくない、さまざまなテーブルに多数のオブジェクト タイプが格納されているオブジェクト ファクトリやシステムにも最適です。これにより、スキーマのキャッシングと清掃がはるかに簡単に実装できるようになります。

于 2008-12-16T16:14:42.450 に答える
28

GUID は「グローバルに一意の識別子」です。他のものとは異なることが保証されている識別子が必要な場所ならどこでも使用できます。

通常、値が「ローカルで一意」である必要があるだけです。たとえば、データベース テーブルの主キー ID は、そのテーブルの他の行と異なるだけでよく、他のテーブルの ID と同じにすることもできます。 . (ここでは GUID は必要ありません)

GUID は一般に、他の誰か (自分の制御外) が定義する ID とは異なる ID を定義する場合に使用されます。ActiveX コントロールのインターフェイス識別子のそのような場所の 1 つです。誰でも ActiveX を作成できますが、他のどのコントロールで使用されるかはわかりません。また、誰もが自分のコントロールに同じ名前を付けることを妨げるものは何もありません。GUID はそれらを区別します。

GUID は、時間 (非常に短い 1 秒単位) (そのため、前後に定義された GUID とは異なることが保証されます) と、場所を定義する数値 (ネットワーク カードの MAC アドレスから取得される場合もあります) の組み合わせです。 (そのため、他の誰かが現在定義している他の GUID とは異なることが保証されています)。

また、UUID (ユニバーサル ユニーク ID) と呼ばれることもあります。

于 2008-12-16T16:11:27.637 に答える
11

GUIDまたはUUID(グローバル対ユニバーサル)一意のIDentifierは、まあ、一意のIDです:)本当に一意のマシンが生成されたものが必要な場合は、それを取得するためのライブラリがあります.

詳細については、ウィキペディアの GUID を参照してください。

GUID が不要な場合は、制御するカウンター (SERIAL SQL 型やシーケンスなど、何らかの方法で) がインクリメントされる場合です。「テキスト」値 (テキスト形式の GUID) または 128 ビットのバイナリ値 (GUID) のインデックス作成は、整数よりもはるかにコストがかかります。

于 2008-12-16T16:11:58.540 に答える
4

数年前、私は ACD コール センター システムに取り組んでいました。そこでは、複数のコール プロセッサから単一のデータベースにコールの詳細レコードを収集したいと考えていました。システムで生成されたシーケンシャル ID (ID 列) を使用するのではなく、データベース キーの GUID を生成するように MS SQL で列をセットアップしました。当時、これにはデフォルト値を NewID に設定する必要がありました (またはコードで生成しますが、NewID() 関数の方が安全でした)。もちろん、キーの値が大きいと眉をひそめるかもしれませんが、衝突の危険を冒すよりもスペースを放棄したいと思います。

GUID をデータベース キーとして使用しているアドレスを誰も見たことがなかったので、それができることを知っておくと役立つと思いました。

于 2008-12-19T23:59:25.110 に答える
4

それらを生成する背後で行われるすべての数学のため、理解するのが難しい場合があります. 一意の ID と考えてください。Visual Studio で生成するか、C# や他の多くのアプリケーションや Web サイトのいずれかを使用している場合は .NET を生成できます。同じものを 2 回目にする可能性が非常に小さいため、考慮する価値がないため、それらは一意であると見なされます。

于 2008-12-16T16:15:04.353 に答える
4

128 ビットのグローバルに一意の ID。今から日没まで GUID を生成できます。同じ GUID を 2 回生成することはありません。これらは COM でよく使用されます。

たとえば、何かに使用する場合は、製品の 1 つに使用しています。ユーザーは、さまざまなデバイスでカテゴリとカードを生成できます。あるデバイスで作成されたカテゴリと別のデバイスで作成されたカテゴリを混同しないようにしたいので、ID は、誰が、どこで、いつ生成したかに関係なく一意であることが重要です。そのため、GUID を使用します (実際には、64 ビットの数値を使用する独自のスキームを使用しますが、GUID に似ています)。

于 2008-12-16T16:16:44.350 に答える
3

GUID は「Globally Unique Identifier」の略で、グローバルに一意の識別子が必要な場合に使用します。

たとえば、RSS フィードでは、フィード内の各アイテムに GUID が必要です。そうすれば、フィード リーダー ソフトウェアは、そのアイテムを読んだかどうかを追跡できます。GUID がなければ、見分けることは不可能です。

GUID はデータベース ID のようなものとは異なります。つまり、誰がオブジェクトを作成しても (あなた、私、通りすがりの人など)、GUID は常に異なります。GUID を使用して衝突があってはなりません。

「Universally Unique Identifier」を表す UUID という用語も表示されます。両者の間に本質的な違いはありません。UUID の方が適切な用語です。GUID は Microsoft が使用する用語です。

于 2008-12-16T16:16:19.030 に答える
3

アプリケーションの存続期間全体で一意である必要がある識別子を生成する必要がある場合は、GUID を使用します。

セッションを持つサーバーがあると想像してください。各セッションに GUID を与えると、サーバーによって作成されたすべてのセッションで一意になることが確実になります。これは、バグの追跡に役立ちます。

于 2008-12-16T16:16:29.123 に答える
3

私が見つけた GUID の特に有用なアプリケーションの 1 つは、訪問者が匿名 (つまり、ログインまたは登録されていない) である Web アプリケーションで一意の訪問者を追跡するために使用することです。

于 2008-12-16T16:19:30.630 に答える
2

GUID = グローバル一意識別子。

グローバル コンテキストで何かを一意に識別したい場合に使用します。

このジェネレーターは便利です。

于 2008-12-16T16:11:34.343 に答える
1

GUIDに関するウィキペディアの記事では、GUID が何のために使用されているかについて明確に説明されています。

于 2008-12-16T16:12:51.347 に答える