GUIDとUUIDに違いはありますか?


866

私はこれらの2つの頭字語が飛び交っているのを見て、GUIDとUUIDの間に何か違いがあるのだろうかと思っていましたか?


183
「GUID」とは言えますが、「UUID」とは言えません。
Hardwareguy

48
UUIDを「you-wid」と発音します
Matt Greer

106
私は「あなたはあなたに」と言いますが、私はネイティブスピーカーではありません...
Wilt

20
UUID仕様(RFC-4122)は要約で述べています。この仕様は、GUID(Globally Unique IDentifier)とも呼ばれるUUID(Universally Unique IDentifier)のUniform Resource Name名前空間を定義します
Tom

88
UUIDは普遍的に一意(ユニバーススコープ)ですが、GUIDはグローバルにのみ一意です(グローブスコープ)。どちらも多面的に一意ではありません。つまり、それらはMUIDではありません。つまり、原則として、GUIDを惑星間で使用しないでください。それ以外は、ほとんど互換性があります。
rsp 2017

回答:


817

簡単な答えはありません:何の違い、彼らは同じものです。それらを、固有の値として使用される16バイト(128ビット)の値として扱います。Microsoft-speakではGUIDと呼ばれますが、Microsoft-speakを使用しない場合はGUIDと呼びます。

UUID仕様の作成者とMicrosoftでさえ、それらは同義語であると主張しています。

  • IETF RFC 4122の紹介から「Universally Unique IDentifier(UUID)URN Namespace」:「GUID(Globally Unique IDentifier)としても知られるUUID(Universally Unique IDentifier)のUniform Resource Name名前空間。」

  • ITU-T勧告X.667、ISO / IEC 9834から8:2004国際規格:「UUIDがまた、グローバル一意識別子(GUID)として知られているが、この用語は、この勧告で使用されていません。」

  • そしてマイクロソフト、GUIDがUUID RFCで指定されていると主張しています。「Microsoft WindowsプログラミングとWindowsオペレーティングシステムでは、[RFC4122]で指定されているグローバル一意識別子(GUID)は...ユニバーサル一意識別子(UUID )は、Windowsプロトコル仕様でGUIDの同義語として使用されることがあります。」

しかし、正しい答えは、質問が「UUID」と言ったときの意味によって異なります...

最初の部分は、質問者が「UUID」と言っているときに何を考えているかに依存します。

Microsoftの主張は、すべてのUUIDがGUIDであることを示唆しています。しかし、すべてのGUIDは実際のUUIDですか?つまり、すべてのUUIDのセットは、すべてのGUIDのセットの適切なサブセットですか、それともまったく同じセットですか?

RFC 4122の詳細を見ると、UUIDには4つの異なる「バリアント」があります。これは主に、これらの仕様がUUID仕様の作成に統合される前に、そのような16バイトの識別子が使用されていたためです。RFC 4122のセクション4.1.1から、UUID の4つのバリアントは次のとおりです。

  1. 予約済み、ネットワークコンピューティングシステムの下位互換性
  2. バリアント RFC 4122で指定された(「バージョン」と呼ばれる5つのサブ変異体は、あるています)
  3. 予約済み、Microsoft Corporationの下位互換性
  4. 将来の定義のために予約されています。

RFC 4122によると、すべてのUUID バリアントは「実際のUUID」であり、すべてのGUIDは実際のUUIDです。「GUIDとUUIDの間に違いはありますか」という文字通りの質問に対する答えは、RFC 4122 UUIDの場合は間違いなくあります。違いはありませ(ただし、以下の2番目の部分が適用されます)。

ただし、すべてのGUIDがバリアント 2 UUIDであるとは限りません(たとえば、Microsoft COMには、バリアント3 UUIDであるGUIDがあります)。質問が「GUIDとバリアント2のUUIDの間に何か違いがあるか」である場合、答えは「はい」になります。それらは異なる場合があります。質問をしている人はおそらくバリアントについて知らず、彼らが「UUID」という言葉を言うとき、彼らはバリアント 2 UUID だけを考えているかもしれません(たとえば、彼らは漠然とUUIDのMACアドレス+時間と乱数アルゴリズム形式を知っています。バリアント 2の両方のバージョンです)。その場合、答えは「はい」と異なります。

したがって、答えは、部分的には、尋ねる人が「UUID」という言葉を言うときに何を考えているかに依存します。それらは、バリアント2 UUIDを意味しますか(それが認識している唯一のバリアントであるため)、またはすべてのUUIDですか?

2番目の部分は、UUIDの定義として使用されている仕様によって異なります。

混乱していると思われる場合は、ITU-T X.667 ISO / IEC 9834-8:2004をお読みください。このガイドは、RFC 4122と完全に技術的に互換性があり、調整されているはずです。条項11.2に「この推奨事項に準拠するすべてのUUID |国際標準には、オクテット7のビット7が1に設定され、オクテット7のビット6が0に設定されたバリアントビットが含まれる」という追加の文があります。つまり、バリアント 2 UUID のみがその標準に準拠していることになります(これらの2つのビット値はバリアント 2を意味します)。これが当てはまる場合は、すべてのGUIDがITU-T / ISO / IEC UUIDに準拠しているわけではありません。準拠しているITU-T / ISO / IEC UUIDは、バリアント 2の値にしかできないためです。

したがって、実際の答えは、質問が尋ねているUUIDの仕様によっても異なります。バリアント2 UUIDだけでなく、すべてのUUIDについて明確に話していると仮定します。GUIDとIETFのUUID には違いはありませんが、GUIDと準拠する ITU-T / ISO / IECのUUIDには違いがあります。

バイナリエンコーディングは異なる場合があります

(人間が読み取れるテキスト形式ではなく)バイナリでエンコードされている場合、GUID 次の4つの異なるフィールドを持つ構造に格納できます。この形式は、最初の3つのフィールドのバイト順のみがUUID標準と異なります。

Bits  Bytes Name   Endianness  Endianness
                   (GUID)      RFC 4122

32    4     Data1  Native      Big
16    2     Data2  Native      Big
16    2     Data3  Native      Big
64    8     Data4  Big         Big

35
選択した回答よりも有益です。選択した答えは、質問に対する最も単純な答えです。
新しいアレクサンドリア

3
回答に埋め込まれたバイナリエンコーディングテーブルは非常に便利です。Tnx
Luciano

2
「エンディアン」は非常に重要です。IDをバイトとして保存すると、GUIDとUUIDから異なる結果が得られます。
カラバシン16

想像してみてください。存在は665票にとどまっています。どうすればこれを賛成できませんか?
HaakonLøtveit18年

656

GUIDは、MicrosoftによるUUID標準の実装です。

ウィキペディアごと:

GUIDという用語は通常、MicrosoftによるUniversally Unique Identifier(UUID)標準の実装を指します。

同じウィキペディアの記事からの更新された引用:

RFC 4122自体は、UUIDは「GUIDとしても知られている」と述べています。これはすべて、「GUID」が、もともとMicrosoftが使用するUUIDのバリアントを参照していたが、単にUUIDの代替名になったことを示唆しています…


40
(Gはグローバルを意味します)
ted.strauss

487
マイクロソフトのように、どこでも機能するもの(宇宙)を使用して、それを非常に小さなサブセット(地球)で機能させる:)
Gus

33
MicrosoftのGUIDバイナリ表現から標準のUUIDに変換する場合は、「バイナリエンコーディング」セクションの詳細に従って、最初の3つ(4つのうち)のデータフィールドのエンディアンを反転する必要があります。en.wikipedia.org/ wiki / Globally_unique_identifier
フォーム

87
これが、宇宙飛行士がISSにWindowsをインストールすることを許可されていない理由です。
2015

10
@bdukesウィキペディアはあなたが彼らの声明と呼んでいるものを変更したようです。それは今読みますThe term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
11:23にKhadim Ali

13

あんまり。GUIDはよりMicrosoft中心ですが、UUIDはより広く使用されています(たとえば、urn:uuid: URNスキームやCORBAなど)。


1
マイクロソフト中心主義の定義と効果は何ですか?
Karl Richter、

8

GUIDは、UUIDと同じように必ずしも128ビット値である必要がない領域で長年使用されています。たとえば、RSS仕様では、GUIDが一意である限り、任意の文字列になるようにGUID定義し、「isPermalink」属性を使用して、使用している値がシンジケートされるアイテムへのパーマリンクにすぎないことを指定します。


0

MicrosoftのGUIDテキスト表現は、2つの中括弧で囲まれたUUIDの形式にすることができます{}


6
これは、GUIDのテキスト表現のみです。実際の構造は異なります。
匿名

-2

SQL ServerのGUIDとPostgreSQLのUUIDの違いの1つは、大文字と小文字です。SQL Serverは上限を出力し、PostgreSQLは下限を出力します。

16進値 "a"から "f"は小文字として出力され、入力では大文字と小文字は区別されません。- rfc4122の#セクション-3

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.