유니버설 유니크 아이디
Universally unique identifier![]() UEFI 변수에 사용되는 UUID/GUID | |
약자 | UUID |
---|---|
조직 | |
No. 숫자의 | 32 |
예 | 123e4567-e89b-12d3-a456-426614174000 |
웹 사이트 | RFC 4122 |
UUID(Universal Unique Identifier)는 컴퓨터 시스템의 정보에 사용되는 128비트 라벨입니다.Global Unique Identifier(GUID; 글로벌 고유 식별자)라는 용어도 사용됩니다.[1]
UUID는 표준 방법에 따라 생성될 때 실질적으로 고유합니다.대부분의 다른 번호 체계와 달리, 이러한 고유성은 중앙 등록 기관이나 이를 생성하는 당사자 간의 조정에 의존하지 않습니다.UUID가 복제될 확률은 제로는 아니지만 무시할 [2][3]수 있을 정도로 제로에 가깝습니다.
따라서 누구나 UUID를 생성하여 ID가 이미 작성되었거나 다른 ID를 식별하기 위해 작성될 예정인 ID를 거의 확실하게 식별할 수 있습니다.따라서 독립 당사자에 의해 UUID로 라벨이 붙여진 정보는 나중에 단일 데이터베이스로 결합되거나 같은 채널로 전송될 수 있으며 복제 가능성은 거의 없습니다.
UUID의 채택은 광범위하게 이루어지고 있으며, 많은 컴퓨팅 플랫폼이 UUID의 생성과 텍스트 표현 해석을 지원합니다.
역사
1980년대에 Apollo Computer는 네트워크 컴퓨팅 시스템(NCS)에서 UUID를 처음 사용했으며 이후 Open Software Foundation(OSF)의 DCE(Distributed Computing Environment)DCE UUID의 초기 설계는 NCS [4]UUID를 기반으로 했습니다.NCS UUID의 설계는 Apollo Computer가 설계한 운영 체제인 Domain/OS에서 정의 및 널리 사용되는 (64비트) 고유 식별자에서 영감을 받았습니다.그 후,[when?] Microsoft Windows 플랫폼은 DCE 설계를 「글로벌 일의 식별자」(GUID)로서 채용했습니다.RFC 4122는 UUID용[1] URN 네임스페이스를 등록하고 동일한 기술 [citation needed]내용을 사용하여 이전 사양을 요약했습니다.2005년 7월에 제안된 IETF 표준으로 RFC 4122가 발표되었을 때 ITU는 이전 표준과 RFC 4122의 [citation needed]초기 버전을 기반으로 UUID도 표준화했습니다.
표준
UUID는 Open Software Foundation(OSF)에 의해 Distributed Computing Environment(DCE)[5][6]의 일부로 표준화됩니다.
UUID는 ISO/IEC 11578:1996 "Information Technology – Open Systems Interconnection – Remote Procedure Call (RPC)"의 일부로서 문서화되어 있으며, 최근에는 ITU-T Rec. X.667 ISO/IEC 9834-8:[7]2005에 기재되어 있습니다.
Internet Engineering Task Force(IETF; 인터넷 기술 특별 조사위원회)는 기술적으로는 ITU-T Rec. X.667 ISO/IEC 9834-8과 동등한 Standards-Track RFC [1]4122를 발표했습니다.
포맷
표준 텍스트 표현에서는 UUID의 16 옥텟은 32자리 16진수(베이스-16)로 나타나며 하이픈으로 구분된5개의 그룹으로 나누어 총 36자(16진수 문자 32자 및 하이픈 4개)의 형식으로 표시됩니다.예를 들어 다음과 같습니다.
123e4567-e89b-12d3-a456-426614174000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
4비트 M과 1~3비트N필드는 UUID 자체의 형식을 코드화합니다.
네 자리 숫자M
UUID 버전 및 최상위1 ~ 3 비트의 디짓입니다N
UUID 배리언트를 코드화합니다.(아래 참조).이 예에서 M은1
, N은a
(10xx2). 이는 버전 1, 바리안트1 UUID, 즉 시간 기반의 DCE/RFC 4122 UUID임을 의미합니다.
표준 8-4-4-4-12 형식의 문자열은 [1]UUID의 16바이트 레코드 레이아웃에 기초하고 있습니다.
이름. | 길이(바이트) | 길이(16진수) | 길이(비트) | 내용물 |
---|---|---|---|---|
시간_낮음 | 4 | 8 | 32 | 하위 32비트를 제공하는 정수 |
time_mid | 2 | 4 | 16 | 시간의 중간 16비트를 주는 정수 |
time_hi_and_version | 2 | 4 | 16 | 최상위 비트의 4비트 "버전"에 이어 상위 12비트의 시간 |
clock_seq_hi_and_res clock_seq_low | 2 | 4 | 16 | 최상위 비트로 1~3비트의 '스위치'를 설정하고 이어서 13~15비트 클럭시퀀스 |
노드 | 6 | 12 | 48 | 48비트 노드 ID |
이러한 필드는 버전1 및 2의 UUID(즉, 시간 기반 UUID)에 대응하고 있습니다만, 모든 UUID에 대해서 같은 8-4-4-12 의 표현이 사용됩니다.설정이 다른 UUID에서도 마찬가지입니다.
RFC 4122 섹션3에서는 입력 시 대소문자를 구분하지 않고 소문자로 작성하도록 요구하고 있습니다.
Microsoft GUID 는, 주변 괄호로 표시되는 경우가 있습니다.
{123e4567-e89b-12d3-a456-426652340000}
이 형식은 "Windows 레지스트리 형식"과 혼동하지 마십시오. "Windows 레지스트리 형식"은 [8]중괄호 안에 있는 형식을 나타냅니다.
RFC 4122에서는 UUID의 Uniform Resource Name(URN; 유니폼자원명) 네임스페이스를 정의하고 있습니다.URN으로 표시되는 UUID는 다음과 같습니다.[1]
urn:uuid:123e4567-e89b-12d3-a456-426655440000
부호화
UUID의 바이너리 부호화는 시스템에 따라 다릅니다.현재 가장 일반적인 바리안트인 바리안트1 UUID는 빅엔디안 형식으로 부호화되어 있습니다.예를들면,00112233-4455-6677-8899-aabbccddeeff
바이트로 부호화됩니다.00 11 22 33
44 55
66 77
88 99
aa bb cc dd ee ff
를 클릭합니다.[9][10]
Variant 2 UUID는 지금까지 Microsoft의 COM/OLE 라이브러리에서 사용되었던 혼합 엔디안 형식을 사용합니다.이 경우 UUID의 처음 3개의 컴포넌트는 리틀 엔디안이고 마지막 2개는 빅 엔디안입니다.예를들면,00112233-4455-6677-c899-aabbccddeeff
바이트로 부호화됩니다.33 22 11 00
55 44
77 66
c8 99
aa bb cc dd ee ff
. Variant 2에서 '88' 바이트가 'c8'이 되는 이유에 대한 자세한 내용은 Variants 섹션을 참조하십시오.[11][12]
변종
UUID의 "변수" 필드 또는 N 위치는 해당 형식과 인코딩을 나타냅니다.RFC 4122에서는 길이1 ~ 3 비트의 4가지 배리언트가 정의되어 있습니다.
- Variant 0(1비트 패턴2 0xxx, N =에 의해 인식됨)
0..7
)는 1988년경 개발된 현재는 사용되지 않는 Apollo Network Computing System 1.5 UUID 포맷과의 하위 호환성을 위한 것입니다.UUID의 첫 번째 6 옥텟은 48비트 타임스탬프(1980년 1월1일 UTC 이후 4 마이크로초 단위의 시간)입니다.다음 2 옥텟은 예약되어 있습니다.다음 옥텟은 '주소 패밀리'입니다.마지막 7 옥텟은 주소 패밀리에서 지정된 형식의 56비트호스트 ID입니다.자세한 내용은 다르지만 최신 버전1 UUID와의 유사성은 명백합니다.현재 UUID 사양의 바리안트비트는 NCS UUID 주소 패밀리옥텟의 높은 비트와 일치합니다.주소 패밀리는 0 범위의 값을 유지할 수 있습니다.255 값만 0..지금까지 13명이 정의되었어따라서 Variant-0 비트 패턴은0xxx
는 이력 NCS UUID와의 경합을 회피합니다(데이터베이스 [13]내에 존재하는 경우). - Variant 1 (10xx2, N =)
8..b
, 2비트)는, 원래의 인터넷 초안 작성자의 이름을 따서, RFC 4122/DCE 1.1 UUID, 즉 「누출-살츠」UUID라고 불립니다. - Variant 2(110x2,N=
c..d
, 3비트)는, RFC 로 「예약 완료, Microsoft Corporation 의 하위 호환성」으로 특징지어져 있어 Microsoft Windows 플랫폼의 초기 GUID 에 사용되었습니다.바이너리 스토리지 또는 전송의 엔디안성에 의해서만 바리안트1과 다릅니다.바리안트 1 UUID는 "네트워크"(빅엔디안) 바이트 순서를 사용하고, 바리안트 2 GUID는 UUID의 일부 서브필드에 대해 "네이티브"(리틀엔디안) 바이트 순서를 사용합니다. - 예약은 3비트 바리안트 비트 패턴 111x2(N =)로 정의됩니다.
e..f
).
현재 UUID 사양에서는 바리안트1과 2가 사용됩니다.텍스트 표현에서 바리안트1과 바리안트2는 바리안트 비트를 제외하고 동일합니다.2진수 표현에서는 [1]엔디안니스 차이가 있습니다.변형 1의 빅 엔디안 바이트 순서와 변형 2의 리틀 엔디안 바이트 순서를 변환하기 위해 바이트 스왑이 필요한 경우 위의 필드에 스왑이 정의됩니다.첫 번째 3개의 필드는 부호 없는 32비트 및 16비트 정수이며 스왑의 대상이 됩니다.마지막 2개의 필드는 스왑 대상이 아닌 해석되지 않은 바이트로 구성됩니다.이 바이트 스왑은 표준 필드가 [1]UUID의 내용과 일치하지 않는 버전 3, 4, 5에도 적용됩니다.
Component Object Model 식별자 등 일부 중요한 GUID는IUnknown 인터페이스는 명목상 바리안트2 UUID로 Microsoft Windows 소프트웨어에서 생성되어 사용되고 있는ID의 대부분은 표준 바리안트1 RFC 4122/DCE 1.1 네트워크 바이트 순서의 UUID로 리틀엔디안 바리안트2 UUID가 아닙니다Microsoft의 현재 버전guidgen
툴은 표준 바리안트1 UUID를 생성합니다.일부 Microsoft 문서에서는 "GUID"는 RFC 4122에서 표준화된 "UUID"[14]의 동의어라고 기술되어 있습니다.RFC 4122 자체에는 UUID가 "GUID라고도 합니다"라고 기술되어 있습니다.이 모든 것은 "GUID"가 원래 Microsoft에 의해 사용되는 UUID의 변종을 의미하지만, 단순히 UUID의 대체 이름이 되어, 변종-1과 변종-2 GUID가 모두 존재함을 나타냅니다.
버전
변형 1과 변형 2에 대해 표준에는 5개의 "버전"이 정의되어 있으며, 각 버전은 특정 사용 사례의 다른 버전보다 더 적절할 수 있습니다.버전은 에 의해 표시됩니다.M
스트링 표현으로 설정합니다.
버전 1 UUID는 시각과 노드 ID(통상은 MAC 주소)에서 생성됩니다.버전 2 UUID는 ID(통상은 그룹 또는 사용자 ID), 시각 및 노드 ID에서 생성됩니다.버전 3과 5는 네임스페이스 식별자와 이름을 해시함으로써 생성되는 결정론적 UUID를 생성합니다.버전 4 UUID는 랜덤 또는 의사 랜덤 nuom을 사용하여 생성됩니다.흐느끼다
제로 UUID
특수한 경우인 "nil" UUID는 UUID입니다.00000000-0000-0000-0000-000000000000
; 즉, 모든 비트가 [1]0으로 설정됩니다.
버전 1(날짜 시간과 MAC 주소)
버전 1은 "노드"의 48비트 MAC 주소(즉 UUID를 생성하는 컴퓨터)와 60비트 타임스탬프를 연결합니다.이것은 그레고리력이 최초로 채택된 1582년 10월 15일 자정 이후 100나노초 간격의 수입니다.RFC 4122에서는 사용하는 알고리즘에 따라 시간 값이 AD [1]: 3 3400년 전후로 롤오버된다고 기술되어 있습니다.이는 60비트의 타임스탬프가 서명된 수량임을 의미합니다.그러나 libuid 라이브러리와 같은 일부 소프트웨어에서는 타임스탬프가 서명되지 않은 것으로 처리되어 롤오버 시간이 AD [15]5236년으로 설정됩니다.ITU-T Rec. X.667에서 정의된 롤오버 시간은 3603 [16]: v AD입니다.
13비트 또는 14비트의 클럭시퀀스는 프로세서클럭이 충분히 빠르게 진행되지 않거나 노드당 여러 개의 프로세서와 UUID 제너레이터가 있는 경우를 처리하기 위해 타임스탬프를 확장합니다.UUID가 시스템클럭보다 빠르게 생성되면 UUID가 생성될 때마다 타임스탬프 필드의 하위 비트를 생성하여 고해상도 타임스탬프를 시뮬레이트할 수 있습니다.각 버전 1 UUID가 공간 내의 단일 포인트(노드)와 시간(인터벌과 클럭시퀀스)에 대응하고 있기 때문에 적절하게 생성된2개의 버전1 UUID가 의도하지 않게 같을 가능성은 거의 없습니다.시간 및 클럭시퀀스는 총 74비트가 되므로74 노드 [1]ID당 최대 평균 1630억/초의 속도로 노드 ID당 2(1.8×1022 또는 18 sextillion)의 버전1 UUID를 생성할 수 있습니다.
다른 UUID 버전과 달리 네트워크 카드의 MAC 주소에 기반한 버전1 및 -2 UUID는 부분적으로 중앙 등록국에 의해 발행된 식별자(즉, IEEE에 의해 네트워킹기기의 [17]제조원에 발행된 MAC 주소의 Organizationally Unique Identifier(OUI; 조직 고유 식별자) 부분에 따라 고유성이 결정됩니다.네트워크 카드의 MAC 주소에 근거하는 버전1 및 버전2 UUID의 일의성은, 네트워크 카드의 제조원이 카드에 일의의 MAC 주소를 적절히 할당하는 것에 의해서도 다릅니다.이러한 MAC 주소는 다른 제조 프로세스와 마찬가지로 에러가 발생할 가능성이 있습니다.또, 일부의 operating system에서는, 최종 유저가 MAC 주소를 커스터마이즈 할 수 있습니다(특히 OpenWRT).[18]
노드 ID에 노드의 네트워크 카드 MAC 주소를 사용하면 버전 1 UUID를 작성한 컴퓨터로 추적할 수 있습니다.문서는 워드프로세서 소프트웨어에 의해 내장된 UUID를 통해 작성 또는 편집된 컴퓨터까지 추적될 수 있습니다.이 프라이버시 홀은 멜리사 바이러스의 [19]창시자를 찾을 때 사용되었습니다.
RFC 4122에서는 노드에 MAC 주소가 없거나 노드에 MAC 주소를 공개하는 것이 바람직하지 않기 때문에 버전 1(2) UUID 내의 MAC 주소를 랜덤48비트 노드 ID로 대체할 수 있습니다.이 경우 RFC에서는 노드 ID의 첫 번째 옥텟 중 최하위 비트를 [1]1로 설정해야 합니다.이는 MAC 주소의 멀티캐스트비트에 대응하며, 설정은 노드 ID가 MAC 주소에 근거해 UUID로부터 랜덤하게 생성되는 UUID와 네트워크 카드(통상은 유니캐스트 MAC 주소)를 [1]구별하는 역할을 합니다.
버전 2(날짜 시간과 MAC 주소, DCE 보안 버전)
RFC 4122에서는 "DCE 보안" UUID 버전2가 예약되어 있습니다만, 자세한 내용은 기재되어 있지 않습니다.이 때문에 많은 UUID 구현에서는 버전2가 생략되어 있습니다.단, 버전2 UUID의 사양은 DCE 1.1 Authentication and Security Services [6]사양으로 제공됩니다.
버전 2 UUID는 클럭시퀀스의 최하위8비트가 '로컬도메인' 번호로 대체되고 타임스탬프의 최하위32비트가 지정된 로컬도메인 내에서 의미 있는 정수 식별자로 대체된다는 점을 제외하고 버전1과 비슷합니다.POSIX 시스템에서는 로컬 도메인 번호0과 1은 각각 User ID(UID; 사용자 ID) 및 Group ID(GID; 그룹 ID)용이며, 그 외의 로컬 도메인 번호는 사이트 [6]정의되어 있습니다.POSIX 이외의 시스템에서는 모든 로컬 도메인 번호가 사이트에서 정의됩니다.
UUID에 40비트 도메인/식별자를 포함할 수 있는 기능에는 트레이드오프가 있습니다.한편, 40비트는 노드 ID당 약 1조 개의 도메인/ID 값을 허용합니다.한편, 클럭 값이 최상위 28비트로 잘린 상태에서 버전1의 60비트와 비교하여 버전2 UUID의 클럭은 429.49초마다1회만 체크됩니다.이는 버전1의 100나노초마다 7분이 조금 넘습니다.버전 1의 14비트에 비해 클럭시퀀스가 6비트밖에 없는 경우 노드/도메인/ID당 64개의 고유 UUID만 생성할 수 있습니다.버전 [20]1의 클럭시퀀스 값은 16,384입니다따라서 버전2는 노드/도메인/ID별로 UUID가 필요한 경우 7분마다1개를 넘는 속도로 적합하지 않을 수 있습니다.
버전 3 및 5(네임스페이스 이름 기반)
버전 3 및 버전5 UUID는 네임스페이스 ID와 이름을 해시함으로써 생성됩니다.버전 3에서는 해시 알고리즘으로 MD5를 사용하고 버전5에서는 SHA-1을 [1]사용합니다.
네임스페이스 ID 자체는 UUID입니다.이 사양에서는, URL 의 네임스페이스, 완전 수식 도메인명, 오브젝트 ID, 및 X.500 인정명을 나타내는 UUID 를 제공하고 있습니다만, 필요한 UUID 를 네임스페이스 지정자로서 사용할 수 있습니다.
특정 네임스페이스 및 이름에 대응하는 버전3 UUID를 판별하기 위해 네임스페이스의 UUID를 바이트 문자열로 변환하고 입력명과 연결한 후 MD5와 해시하여 128비트를 생성합니다.그 후 6비트 또는 7비트가 고정값, 4비트 버전(버전3의 경우2 0011 등) 및 2비트 또는 3비트 UUID "변수"(RFC 4122 UUID를 나타내는 10 또는2 레거시 Microsoft GUID를 나타내는 110 등2)로 대체됩니다.따라서 6비트 또는7비트가 미리 결정되기 때문에 UUID의 고유성에 기여하는 것은 121비트 또는 122비트뿐입니다.
버전 5 UUID는 비슷하지만 MD5 대신 SHA-1이 사용됩니다.SHA-1은 160비트 다이제스트를 생성하므로 다이제스트는 버전 및 바리안트비트가 교체되기 전에 128비트로 잘립니다.
버전 3 및 버전5 UUID에는 같은 네임스페이스와 이름이 같은 UUID에 매핑되는 속성이 있습니다.단, 네임스페이스와 이름 모두 UUID에서 판별할 수 없습니다(블루트포스 검색 제외).RFC 4122에서는 버전 3(MD5)보다 버전 5(SHA-1)를 권장하고 있으며 보안 credential로서 어느 버전의 UUID를 사용하지 않도록 경고하고 있습니다.[1]
버전 4(랜덤)
버전 4 UUID는 랜덤으로 생성됩니다.다른 UUID와 마찬가지로 버전4를 나타내기 위해 4비트가 사용되며, 바리안트(바리안트1 및 2의 경우 각각10 또는2 110)를2 나타내기 위해2 또는 3비트가 사용됩니다.따라서 바리안트1(대부분의 UUID)의 경우 랜덤버전 4 UUID는 6개의 미리 정해진 바리안트 및 버전비트를 가지며 랜덤하게 생성된 부분에는 122비트를 남겨 총 2개 또는 5.3×1036(5.3 decilion)의 가능한122 버전4 바리안트 1 UUID가 있습니다.사용 가능한 랜덤비트가1개 적기 때문에 버전4의 바리안트2 UUID(레거시 GUID)는 절반입니다.바리안트에서는 3비트가 소비됩니다.
충돌
같은 UUID가 여러 번 생성되어 다른 참조에 할당되면 충돌이 발생합니다.네트워크 카드로부터의 일의의 MAC 주소를 사용하는 표준 버전1 및 버전2 UUID 의 경우, 충돌이 발생하는 일은 거의 없습니다.실장이 표준과 다른 경우(의도적 또는 의도적)에만 충돌이 발생할 가능성이 높아집니다.
MAC 주소를 사용하여 생성된 버전1 및 버전2 UUID와 달리 랜덤하게 생성된 노드 ID, 해시 기반 버전3 및 버전5 UUID 및 랜덤버전4 UUID를 사용하는 버전1 및 버전2 UUID와는 달리, 실장 문제가 없는 경우에도 충돌이 발생할 수 있습니다.다만, 통상은 무시해도 괜찮습니다.이 확률은 생일 [21]문제의 분석을 바탕으로 정확하게 계산할 수 있습니다.
예를 들어 적어도1개의 콜리전이 발생할 확률을 50%로 하기 위해 생성해야 하는 랜덤버전 4 UUID의 수는 2.71조입니다.[22]이 값은 다음과 같습니다.
이 수치는 약 85년간 초당 10억 개의 UUID를 생성하는 것과 같습니다.UUID당 16바이트의 이 많은 UUID를 포함하는 파일은 약 45엑사바이트입니다.
p가 되는 충돌을 찾을 확률에 대해 생성해야 하는 버전4 UUID의 최소 수는 다음 공식에 의해 근사됩니다.
따라서 103조 버전4 UUID 내에서 중복이 검출될 확률은 10억분의 1입니다.
사용하다
파일 시스템
중요한 용도에는 ext2/ext3/ext4 파일 시스템 사용자 공간 도구(e2fsprogs는 util-linux에서 제공하는 libuid를 사용), LVM, LUKS 암호화 파티션, GNOME, KDE [23]및 macOS가 포함되며, 대부분은 Theodor Ts'[15]o에 의해 구현된 원본에서 파생되었습니다.
Solaris에서 UUID를 사용하는 방법 중 하나는 커널 [24]패닉 발생 시 크래시 덤프 데이터를 Fault Management Event와 페어링하기 위해 실행 중인 운영 체제인스턴스를 식별하는 것입니다
"partition label"과 "partition UUID"는 모두 슈퍼블록에 저장됩니다.둘 다 파티션이 아닌 파일 시스템의 일부입니다.예를 들어 ext2-4에는 UUID가 포함되어 있지만 NTFS 또는 FAT32에는 포함되어 있지 않습니다.
슈퍼블록은 파일시스템의 일부이므로 파티션 내에 완전히 포함됩니다.따라서 이 경우dd if=/dev/sda1 of=/dev/sdb1
sda1과 sdb1은 모두 같은 라벨과 UUID를 가집니다.
인 COM
Microsoft의 Component Object Model(COM)에는 다음과 같은 여러 가지 GUID가 사용됩니다.
- IID – 인터페이스 ID; (시스템에 등록된 인터페이스 ID는 다음 위치에 있는 Windows 레지스트리에 저장됩니다.
[HKEY_CLASSES_ROOT\Interface]
[25] ) 。 - CLSID – 클래스 식별자(저장 위치)
[HKEY_CLASSES_ROOT\CLSID]
) - LIBID – 유형 라이브러리 식별자(저장 위치)
[HKEY_CLASSES_ROOT\TypeLib]
)[26] 。 - CATID: 카테고리 식별자(클래스에 존재하면 특정 클래스카테고리에 속하는 것으로 식별됩니다.다음 URL에 기재되어 있습니다.
[HKEY_CLASSES_ROOT\Component Categories]
)[27] 。
데이터베이스 키로
UUID는 일반적으로 데이터베이스 테이블에서 하나의 키로 사용됩니다.Microsoft SQL Server 버전4 Transact-SQL의 NEWID 함수는 표준 랜덤버전 4 UUID를 반환하고 NEW SEQUENTIALID 함수는 다음 시스템이 [28]재부팅될 때까지 순차적으로 상승하도록 커밋된 UUID와 유사한 128비트 ID를 반환합니다.Oracle Database SYS_GUID 함수는 이름에도 불구하고 표준 GUID를 반환하지 않습니다.대신 호스트 식별자 및 프로세스 또는 스레드 식별자에 따라 [29]GUID와 다소 유사한 16바이트 128비트 RAW 값을 반환합니다.포스트그레SQL에는 UUID 데이터[30] 유형이 포함되어 있으며 [31][32]모듈의 함수를 사용하여 대부분의 UUID 버전을 생성할 수 있습니다.MySQL은 표준 버전 1 UUID를 [33]생성하는 UUID 함수를 제공합니다.
버전 3, 4, 5의 표준 UUID의 랜덤성 및 표준 버전1 및 2 내의 필드 순서 지정으로 UUID를 프라이머리 키로 사용할 경우 데이터베이스 로컬성 또는 퍼포먼스에 문제가 발생할 수 있습니다.예를 들어 2002년 Jimmy Nilsson은 Microsoft SQL Server에서 시스템 시간에 따라 랜덤하지 않은 서픽스를 포함하도록 키로 사용되는 버전4 UUID가 변경되었을 때 성능이 크게 향상되었다고 보고했습니다.Nilsson이 인정한 바와 같이 이른바 "COMB"(조합된 time-GUID) 접근 방식은 UUID를 비표준으로 만들고 복제 가능성이 상당히 높았습니다. 그러나 Nilsson은 애플리케이션 [34]내에서 고유성만 요구했습니다.타임스탬프가 우선되도록 버전1과 2의 UUID를 정렬 및 부호화함으로써 삽입 퍼포먼스의 손실을 회피할 [35]수 있습니다.
Larabel과 같은 일부 웹 프레임워크는 인덱스 데이터베이스 열에 효율적으로 저장될 수 있는 "타임 스탬프 우선" UUID를 지원합니다.버전 4 형식을 사용하여 COMB UUID가 작성되지만 UUIDv1과 [36][37]같이 처음 48비트가 타임스탬프를 구성합니다.COMB UUID 아이디어를 기반으로 한 보다 구체적인 형식은 다음과 같습니다.
- "ULID" - 버전4를 나타내기 위해 사용되는4비트를 디코딩하여 [38]디폴트로 base32 부호화를 사용합니다.
- UUID 버전6 ~ 8은 3개의 COMB UUID [39]형식의 정식 제안입니다.
「 」를 참조해 주세요.
- 생일 공격
- Object Identifier(Object Identifier)
- Uniform Resource Identifier(URI; 유니폼자원 식별자)
- Snowflake ID(눈꽃 ID)
레퍼런스
- ^ a b c d e f g h i j k l m n Leach, P.; Mealling, M.; Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. Internet Engineering Task Force. doi:10.17487/RFC4122. RFC 4122. Retrieved 17 January 2017.
- ^ "Universally Unique Identifiers (UUID)". H2. Retrieved 21 March 2021.
- ^ ITU-T 권장사항 X.667: Universally Unique Identifier(UUID; 유니버설 유니크 식별자)의 생성과 등록 및 ASN.1 객체 식별자 컴포넌트로서의 사용.표준.2012년 10월
- ^ Zahn, Lisa (1990). Network Computing Architecture. Prentice Hall. p. 10. ISBN 978-0-13-611674-5.
- ^ "CDE 1.1: Remote Procedure Call". The Open Group. 1997.
- ^ a b c "DCE 1.1: Authentication and Security Services". The Open Group. 1997.
- ^ "ITU-T Study Group 17 - Object Identifiers (OID) and Registration Authorities Recommendations". ITU.int. Retrieved 20 December 2016.
- ^ "Registry Keys and Entries for a Type 1 Online Store". Microsoft Developer Network. Microsoft.
- ^ Steele, Nick. "Breaking Down UUIDs".
- ^ "UUID Versions Explained".
- ^ Leach, Paul. "UUIDs and GUIDs".
- ^ "Guid.ToByteArray Method".
- ^ "uuid.c".
- ^ "Globally Unique Identifiers". Microsoft Developer Network. Microsoft.
- ^ a b "ext2/e2fsprogs.git - Ext2/3/4 filesystem userspace utilities". Kernel.org. Retrieved 9 January 2017.
- ^ "Recommendation ITU-T X.667". www.itu.int. October 2012. Retrieved 19 December 2020.
- ^ "Registration Authority". IEEE Standards Association.
- ^ "MAC Address Setup". OpenWRT. 15 September 2021.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Reiter, Luke (2 April 1999). "Tracking Melissa's Alter Egos". ZDNet. Retrieved 16 January 2017.
- ^ Kuchling, A. M. "What's New in Python 2.5". Python.org. Retrieved 23 January 2016.
- ^ Jesus, Paulo; Baquero, Carlos; Almaeida, Paulo. "ID Generation in Mobile Environments" (PDF). Repositorium.Sdum.Uminho.pt.
- ^ Mathis, Frank H. (June 1991). "A Generalized Birthday Problem". SIAM Review. 33 (2): 265–270. CiteSeerX 10.1.1.5.5851. doi:10.1137/1033051. ISSN 0036-1445. JSTOR 2031144. OCLC 37699182.
- ^ gen_uuid.c (Mac OS X 10.4에 대응)
- ^ "Crashdump Restructuring in Solaris". Blogs.Oracle.com. Oracle. Retrieved 9 January 2017.
- ^ "Interface Pointers and Interfaces". Windows Dev Center - Desktop app technologies. Microsoft. Retrieved 15 December 2015.
You reference an interface at run time with a globally unique interface identifier (IID). This IID, which is a specific instance of a globally unique identifier (GUID) supported by COM, allows a client to ask an object precisely whether it supports the semantics of the interface, without unnecessary overhead and without the confusion that could arise in a system from having multiple versions of the same interface with the same name.
- ^ "Registering a Type Library". Microsoft Developer Network. Microsoft. Retrieved 15 December 2015.
- ^ "Categorizing by Component Capabilities". Windows Dev Center - Desktop app technologies. Microsoft. Retrieved 15 December 2015.
A listing of the CATIDs and the human-readable names is stored in a well-known location in the registry.
- ^ "NEWSEQUENTIALID (Transact-SQL)". Microsoft Developer Network. Microsoft. 8 August 2015. Retrieved 14 January 2017.
- ^ "Oracle Database SQL Reference". Oracle.
- ^ "Section 8.12 UUID Type". PostgreSQL 9.4.10 Documentation. PostgreSQL Global Development Group. 13 February 2020.
- ^ "uuid-ossp". PostgreSQL: Documentation: 9.6. PostgreSQL Global Development Group. 12 August 2021.
- ^ "pgcrypto". PostgreSQL: Documentation: 9.6. PostgreSQL Global Development Group. 12 August 2021.
- ^ "Section 13.20 Miscellaneous Functions". MySQL 5.7 Reference Manual. Oracle Corporation.
- ^ Nilsson, Jimmy (8 March 2002). InformIT. InformIT. Retrieved 20 June 2012.
- ^ "Storing UUID Values in MySQL". Percona. 19 December 2014. Archived from the original on 29 November 2020. Retrieved 10 February 2021.
- ^ "Helpers - Laravel - The PHP Framework For Web Artisans". Laravel.com.
- ^ Cabrera, Italo Baeza (31 January 2020). "Laravel: The mysterious "Ordered UUID"". Medium.
- ^ "Universally Unique Lexicographically Sortable Identifier". GitHub. ULID. 10 May 2021.
- ^ Peabody, Brad; Davis, Kyzer R. (7 October 2021). "draft-peabody-dispatch-new-uuid-format-01". tools.ietf.org.
외부 링크
표준
- 권장 ITU-T X.667 (무료 액세스)
- ISO/IEC 9834-8:2014 (유료)
ITU-T UUID 생성기
테크니컬 문서
- 테크니컬 노트 TN2166 - GPT의 비밀 - Apple 개발자
- UUID 매뉴얼 - Commons Id
- 클래스 UUID - Java 매뉴얼
- CLSID 키 - Microsoft 문서
- Universal Unique Identifier - 개방형 그룹 라이브러리
여러가지 종류의
다양한 언어로 구현