web-dev-qa-db-ja.com

GUIDとは正確には何ですか?なぜ、どこで使用する必要がありますか?

GUIDとは正確には何ですか?なぜ、どこで使用する必要がありますか?
GUIDの参照は多くの場所やウィキペディアで見たことがありますが、どこで使用すればよいか明確ではありません。いいね。ありがとう

61
Danmaxis

GUIDは、技術的にはグローバルに一意の識別子を表します。実際には、128ビット構造で、まれに繰り返されたり衝突が発生したりすることはありません。数学を行う場合、値のドメインは ndecillions にあります。

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

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

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

90
Brian Rudolph

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

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

通常、GUIDは、他の誰か(コントロール外)が定義するIDとは異なるIDを定義するときに使用されます。 ActiveXコントロールのインターフェイス識別子のそのような場所。誰でもActiveXを作成できますが、他のコントロールで誰かがそれらを使用することを知らないため、誰もコントロールに同じ名前を付けるのを止めることはできません。 GUIDはそれらを区別します。

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

UUID(ユニバーサルユニークID)とも呼ばれます。

21
James Curran

他のすべての答えに加えて、online GUID generator

http://www.guidgenerator.com/

GUIDとは?

GUID(またはUUID)は、「Globally Unique Identifier」(または「Universally Unique Identifier」)の頭字語です。これは、リソースを識別するために使用される128ビットの整数です。 GUID=という用語は、Microsoftテクノロジーを使用する開発者が一般的に使用しますが、UUIDは他のあらゆる場所で使用されます。

GUIDはどのくらいユニークですか?

128ビットは十分に大きく、生成アルゴリズムは十分にユニークであるため、1年間に1,000,000,000のGUIDが1年間生成された場合、重複の可能性はわずか50%になります。または、地球上のすべての人間が600,000,000のGUIDを生成した場合、重複する確率は50%になります。

GUIDはどのように使用されますか?

GUIDは、ソフトウェア開発でデータベースキー、コンポーネント識別子、または真に一意の識別子が必要な他の場所として使用されます。 GUIDは、COMプログラミングですべてのインターフェイスとオブジェクトを識別するためにも使用されます。

14
splattne

A GUIDは「グローバルに一意のID」です。UUID(Universally Unique ID)とも呼ばれます。

基本的に128ビットの数値であるため(RFC 4112 http://www.ietf.org/rfc/rfc4122.txt を参照)、重複を生成することはほぼ不可能です。このようにして、いくつかのサードパーティ組織がGUIDを生成して、一意であることを確認する必要はありません。

GUIDの広範な使用法の1つは、Windows上のCOMエンティティ(クラス、タイプライブラリ、インターフェイスなど)の識別子としてです。開発者はGUIDを使用して、Microsoftにアクセスして一意の識別子を取得せずにCOMコンポーネントを構築できます。 COMエンティティの識別はGUIDの主な用途ですが、一意の識別子を必要とする多くのことに使用されます。一部の開発者は、データベースレコードのGUIDを生成して、多くの異なるデータベースで一意である必要がある場合でも使用できるIDを提供します。

通常、GUID=は、いつでも誰でも生成できるシリアル番号と考えることができ、シリアル番号は一意であることがわかります。

一意の識別子を取得する他の方法には、ドメイン名の取得が含まれます。ドメイン名の一意性を確保するには、何らかの組織から取得する必要があります(最終的にはICANNによって管理されます)。

GUIDは扱いにくいため(人間が読み取れる観点からは、通常16進数の文字列であり、aaaaaaaa-bbbb-cccc-dddd-ffffffffffffのようにグループ化されています)、異なる組織間で一意の名前を必要とする一部の名前空間は別のスキームを使用します(多くの場合、インターネットドメイン名に基づいています)。

したがって、Javaパッケージの名前空間は、慣例により、組織のドメイン名(反転)で始まり、その後に組織固有の方法で決定される名前が続きます。たとえば、Javaパッケージの名前は次のとおりです。

com.example.jpackage

これは、名前の衝突に対処することが各組織の責任になることを意味します。

XML名前空間も同様の方法で一意になります。慣例により、XML名前空間を作成する誰かは、その名前空間を管理下の登録済みドメイン名の「下」に置くことになっています。例えば:

xmlns="http://www.w3.org/1999/xhtml"

一意のIDを管理するもう1つの方法は、イーサネットMACアドレス用です。イーサネットカードを製造する会社は、IEEEによって割り当てられたアドレスのブロックを取得する必要があります(IEEEであると思います)。この場合、スキームは非常にうまく機能し、製造元が重複したMACアドレスを持つカードを台無しにして発行しても、それらのカードが同じサブネット上にない限り、物事は引き続き動作します。アドレスはパケットのルーティングに使用されます。影響を受ける可能性のあるMACアドレスの他の使用法がいくつかありますが、GUIDを生成するアルゴリズムの1つは、MACアドレスを1つのパラメーターとして使用します。このGUID=生成方法は、プライバシーの脅威と見なされているため、これほど広く使用されていません。

うまく機能しなかった一意の識別子を思い付くためのスキームの1つの例は、MicrosoftがWindows 9xの「VxD」ドライバーにIDを提供したことです。サードパーティのVxDドライバの開発者は、サードパーティが作成したドライバに使用するIDのセットをMicrosoftに要求することになっています。これにより、MicrosoftはIDの重複がないことを確認できました。残念ながら、多くのドライバーライターは気にすることはなく、出発点として使用したVxDの例にあるIDを使用していました。これがどれほどの問題を引き起こしたかはわかりません。VxDIDの一意性は絶対に必要だとは思いませんが、おそらくいくつかのAPIの機能に影響を与えました。

11
Michael Burr

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

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

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

9
Keltia

誰かがそれらは概念的に128ビットのランダムな値であり、それは実質的に正しいと言いましたが、 [〜#〜] uuid [〜#〜] (GUIDは通常Microsoftの実装を指しますUUID)、いくつかの異なるUUIDバージョンがあり、それらのほとんどは実際にはランダムではないことがわかります。そのため、マシン(または他の何か)のUUIDを生成し、そのプロセスを確実に繰り返して同じUUIDを取得することが可能です。これは一部のアプリケーションにとって重要です。

5
skiphoppy

私にとっては、単純に「128ビットのランダム値」と考える方が簡単です。それは本質的に彼らが何であるかです。 GUID(したがって、ランダムな部分が少し小さくなります)の数桁に少しの情報を含めるためのアルゴリズムがいくつかありますが、それでもかなり大きなほぼランダムな値です。

それらは非常に大きいため、extremelyであり、同じGUIDが2つ生成されることはほとんどありません。すべての実際的な目的のために、これまでに生成されたすべてのGUIDは世界で一意です。

それらをどこで使用するかを決めるのはあなたに任せますが、他の答えにはすでにいくつかの例があります。想像力をかき立てましょう。 :)

4
Vilx-

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

3
Dan Revell

128ビットのグローバル一意ID。今から日没までGUIDを生成できますが、同じGUID=を2回生成することはありません。

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

3
mhenry1384

数年前に、複数のコールプロセッサから単一のデータベースにコール詳細レコードを収集したいACDコールセンターシステムで働いていました。 MS SQLの列をセットアップして、システム生成のシーケンシャルID(ID列)を使用するのではなく、データベースキーに対してGUIDを生成します。当時は、デフォルト値をNewID(または、コードでそれを生成しますが、NewID()関数の方が安全でした。)もちろん、キーに大きな値を設定すると、いくつかの眉が上がる場合がありますが、衝突のリスクよりもスペースをあきらめます。

GUID=をデータベースキーとして使用するアドレスを見たことがありませんでした。

3
Tom Schaefer

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

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

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

2
Greg Hurlman

GUIDは「Globally Unique Identifier」の略であり、グローバル一意識別子を使用する場合に使用します。

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

A GUID=データベースIDのようなものとは、誰がオブジェクトを作成するかに関係なく-あなた、私、通りの男-私たちのGUIDはalways GUIDを使用した衝突はありません。

また、UUIDという用語が表示されます。これは、「Universally Unique Identifier」の略です。 2つの間に本質的な違いはありません。 UUIDはより適切な用語です。 GUIDはMicrosoftが使用する用語です。

2
August

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

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

2
Edouard A.

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

2
yalestar

Wikipedia GUIDに関する記事では、GUIDの使用目的が明確になっています-質問の言い換えが役立つ場合があります-GUIDが必要なのは何ですか?

1
Rob