A GUID (globally unique identifier) is a 128-bit value composed of 32 hexadecimal digits that uniquely labels objects, records, and devices without requiring central coordination, making it ideal for stable identification in networked environments where names and IP addresses change frequently. Generated locally through algorithms that make collisions extremely unlikely, GUIDs enable directory services, databases, and management tools to maintain consistent records across infrastructure changes such as host renames, DHCP reassignments, and device relocations. Operational challenges arise from careless implementation practices including cloned virtual machines that share identifiers, inconsistent text formatting across systems, and synchronization failures between binary and text representations, requiring careful handling to preserve data integrity and security.
GUIDの仕組み
GUIDは、独立して生成された2つの値が衝突する可能性を極めて低くするアルゴリズムによって生成されます。生成時に中央レジストリとの照合は必要ありません。
GUID は 128 ビットの値であり、Windows ツールでは中括弧で囲まれた「8-4-4-4-12」という形式の 32 桁の 16 進数で表示されます。この形式は、いくつかのバージョンを定義する RFC 4122 の UUID レイアウトに準拠しています。 バージョンによっては、タイムスタンプとノード識別子から値を導出するもの、名前空間でハッシュ化された名前から導出するもの、そして乱数から導出するものがあります。バージョン4は乱数に依存しているため、一意性は保証されているわけではなく、統計的なものです。 バージョン4の値には122ビットのランダムなビットが含まれており、実用的な規模では2つの値が一致する確率は無視できるほど小さい。生成されたGUIDは、ディレクトリエントリ、データベースの行、デバイスレコードなどのオブジェクトの属性として格納される。 その後、アプリケーションはその値を用いてオブジェクトを参照するため、オブジェクトの名前、アドレス、または場所が変更されても、その識別子は維持されます。これが、時間の経過とともに変化する可能性のあるホスト名やIPアドレスと、GUIDを区別する点です。
GUIDに関するよくある問題
統合処理がGUIDではなくホスト名やIPアドレスでオブジェクトを照合する場合、名前変更やDHCPリースの変更により、重複レコードが生成されたり、元のレコードが孤立したりすることがあります。GUIDを結合キーとして使用することで、これを回避できます。
ディレクトリオブジェクトを削除して再作成すると、名前が同じであっても新しいGUIDが生成されます。古いGUIDを参照していたグループのメンバーシップ、アクセス権、およびリンクされたレコードは、もはや解決されなくなります。
中括弧、大文字・小文字、ハイフンの有無はツールによって異なります。そのため、実際には同じ値であっても文字列の比較に失敗することがあるため、インポートや検索を行う際は、まず形式を正規化する必要があります。
バージョン 4 の値は、優れた乱数生成器に依存しています。新しくクローンされたシステムなどで発生しうる、性能の低い、あるいはシード値が同一の乱数生成源を使用すると、重複が発生する確率が理論値をはるかに上回ってしまいます。