나는이 두 약어가 던져지는 것을 보았고 GUID와 UUID 사이에 차이점이 있는지 궁금합니다.
나는이 두 약어가 던져지는 것을 보았고 GUID와 UUID 사이에 차이점이 있는지 궁금합니다.
답변:
대답은 간단 하다 : 차이는 , 그들은 같은 일을하지 않습니다. 고유 값으로 사용되는 16 바이트 (128 비트) 값으로 취급하십시오. Microsoft 말하기에서는 GUID라고하지만 Microsoft 말하기를 사용하지 않을 때는 UUID라고합니다.
UUID 사양의 저자와 Microsoft조차도 동의어라고 주장합니다.
IETF RFC 4122 소개부터 " UUID (Universally Unique IDentifier) URN 네임 스페이스 ": "UID (Universally Unique IDentifier)에 대한 통일 리소스 이름 네임 스페이스 (GUI) (Globally Unique IDentifier)라고도 함)
로부터 ITU-T 권고 X.667, ISO / IEC 9834-8 : 2004 국제 표준 : "UUID를도 전역 고유 식별자 (GUID)로 알려져 있지만,이 용어는이 표준에서 사용되지 않습니다."
또한 Microsoft 는 UUID RFC에 의해 GUID가 지정되어 있다고 주장 합니다. "Microsoft Windows 프로그래밍 및 Windows 운영 체제에서 [RFC4122]에 지정된 GUID (Globally Unique Identifier)는 ... UUID (Universally Unique Identifier)라는 용어입니다. )는 Windows 프로토콜 사양에서 GUID와 동의어로 사용되기도합니다. "
그러나 정답 은 "UUID"라고 말할 때 질문의 의미에 따라 다릅니다.
첫 번째 부분은 "UUID"라고 말할 때 질문자가 생각하는 것에 달려 있습니다.
Microsoft의 주장은 모든 UUID가 GUID임을 암시합니다. 그러나 모든 GUID는 실제 UUID입니까? 즉, 모든 UUID 세트가 모든 GUID 세트의 적절한 서브 세트입니까, 아니면 정확히 동일한 세트입니까?
RFC 4122의 세부 사항을 살펴보면 UUID의 4 가지 "변형"이 있습니다. 이는 UUID 스펙 작성시 해당 스펙이 결합되기 전에 이러한 16 바이트 ID가 사용 되었기 때문입니다. RFC 4122 의 섹션 4.1.1 에서 UUID 의 네 가지 변형 은 다음과 같습니다.
RFC 4122에 따르면 모든 UUID 변형 은 "실제 UUID"이고 모든 GUID는 실제 UUID입니다. 문자적인 질문에 "GUID와 UUID 사이에 차이점이 있습니까?"는 RFC 4122 UUID에 대한 대답은 확실히 없습니다. 차이는 없습니다 (그러나 두 번째 부분에 따름).
그러나 모든 GUID가 변형 2 UUID 인 것은 아닙니다 (예 : Microsoft COM에는 변형 3 UUID 인 GUID가 있음). 질문이 "GUID와 변형 2 UUID간에 차이가있는 경우"라면 대답은 '예'일 수 있습니다. 질문을하는 사람은 변형 에 대해 알지 못하고 "UUID"라는 단어를 말할 때 변형 2 UUID 만 생각할 수 있습니다 (예 : MAC 주소 + 시간 및 UUID의 난수 알고리즘 형식을 모호하게 알고 있음). 모두 버전 의 변종 2). 이 경우 대답은 예 다릅니다 .
따라서 부분적으로 대답은 "UUID"라는 단어를 말할 때 요구하는 사람이 생각하는 것에 달려 있습니다. 변형 2 UUID (알고있는 유일한 변형이기 때문에) 또는 모든 UUID를 의미합니까?
두 번째 부분은 UUID의 정의로 사용되는 사양에 따라 다릅니다.
혼동 스럽다고 생각되면 ITU-T X.667 ISO / IEC 9834-8 : 2004 를 읽고 RFC 4122 와 완벽하게 기술적으로 호환되도록해야합니다 . 이 표준은 11.2 절에 "이 권장 사항을 준수하는 모든 UUID | 국제 표준은 옥텟 7의 비트 7이 1로 설정되고 옥텟 7의 비트 6이 0으로 설정되는 변형 비트를 가진다"는 추가 문장을 가지고있다. 이는 변형 2 UUID 만 해당 표준을 준수 함을 의미합니다 (두 비트 값은 변형 2를 의미 함 ). 이것이 사실이면, 모든 GUID가 ITU-T / ISO / IEC UUID를 따르는 것은 아닙니다. 왜냐하면 적합한 ITU-T / ISO / IEC UUID는 변형 2 값만 가능하기 때문입니다.
따라서 실제 답변은 질문이 요구하는 UUID 사양에 따라 다릅니다. 없다 : 우리가 분명히 모든 UUID를 얘기하고 2 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
GUID는 Microsoft의 UUID 표준 구현입니다.
위키 백과 당 :
GUID라는 용어는 일반적으로 UUID ( Universally Unique Identifier ) 표준 의 Microsoft 구현을 나타냅니다 .
동일한 Wikipedia 기사에서 인용 한 업데이트 :
RFC 4122 자체는 UUID가 "GUID라고도합니다"라고 명시하고 있습니다. 이 모든 것이 "GUID"는 원래 Microsoft에서 사용하는 변형 된 UUID를 지칭하지만 UUID의 대체 이름이되었습니다.
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
실제로는 아닙니다. GUID는 Microsoft 중심이지만 UUID는 더 광범위하게 사용됩니다 (예 : urn : uuid : URN 체계 및 CORBA).
GUID는 UUID와 같은 방식으로 반드시 128 비트 값이 아닌 영역에서 오랫동안 사용되어 왔습니다. 예를 들어, RSS 사양은 GUID 가 고유 한 한 "isPermalink"속성을 사용하여 GUID 를 선택한 문자열로 정의합니다 .
Microsoft의 GUID
텍스트 표현은 두 개의 중괄호로 둘러싸인 UUID의 형태 일 수 있습니다 {}
.
SQL Server의 GUID와 PostgreSQL의 UUID의 한 가지 차이점은 소문자입니다. PostgreSQL의 출력은 낮지 만 SQL Server의 출력은 위쪽입니다.
16 진수 값 "a"~ "f"는 소문자로 출력되며 입력시 대소 문자를 구분하지 않습니다. - rfc4122 번호 섹션-3