맨위로가기

범용 고유 식별자

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

범용 고유 식별자(UUID)는 128비트의 숫자로, 다양한 시스템에서 정보를 고유하게 식별하기 위해 사용된다. UUID는 원래 아폴로 컴퓨터의 네트워크 컴퓨팅 시스템에서 사용되었으며, 이후 분산 컴퓨팅 환경(DCE)과 마이크로소프트 윈도우 플랫폼에서 전역 고유 식별자(GUID)로 채택되었다. IETF는 RFC 4122를 통해 UUID 표준을 제정했으며, 현재 RFC 9562로 개정되었다.

UUID는 16진수 32자리와 하이픈으로 구성된 표준 형식을 가지며, 16진수 8-4-4-4-12 형식으로 표현된다. UUID는 생성 방법에 따라 여러 버전이 있으며, 버전 1은 날짜와 MAC 주소를 기반으로, 버전 4는 무작위로 생성된다. UUID는 파일 시스템, 데이터베이스, COM 등 다양한 분야에서 활용되며, 파일 시스템의 파티션 레이블과 파티션 UUID로 사용된다.

2. 역사

UUID는 원래 1980년대 아폴로 네트워크 컴퓨팅 시스템(NCS)에서 사용되었다.[63] 이후 개방 소프트웨어 재단(OSF)의 분산 컴퓨팅 환경(DCE)에서 사용되었다. DCE UUID의 초기 설계는 NCS UUID에 기반을 두었으며, 이 디자인은 아폴로 컴퓨터가 설계한 운영 체제인 도메인/OS에 정의되고 사용된 64비트 고유 식별자의 영향을 받았다.[63] 마이크로소프트 윈도우 플랫폼은 DCE 설계를 "전역 고유 식별자"(GUID)로 채택했다. 2024년 5월 7일, 국제 인터넷 표준화 기구(IETF) RFC 9562가 발표되어 3개의 새로운 "버전"이 소개되었고, 일부 모호성이 명확해졌다.

3. 표준

UUID는 분산 컴퓨팅 환경(DCE)의 일부로 오픈 소프트웨어 재단(OSF)에서 표준화되었다.[7][8]

UUID는 국제 표준화 기구(ISO)/국제 전기 기술 위원회(IEC) 11578:1996 "정보 기술 – 개방형 시스템 상호 연결 – 원격 프로시저 호출(RPC)"의 일부로 문서화되었으며, 최근에는 ITU-T 권고 X.667 | 국제 표준화 기구(ISO)/국제 전기 기술 위원회(IEC) 9834-8:2014에 문서화되었다.[9]

인터넷 기술 특별 기구(IETF)는 "범용 고유 식별자 정의 워킹 그룹"에서 [1]를 의 개정판으로 발행했다.[10][2] 는 기술적으로 ITU-T Rec. X.667 | ISO/IEC 9834-8과 동일하지만 현재는 사용되지 않는다.

4. 형식

UUID는 16 옥텟(128비트)의 수이다. 표준 형식에서 UUID는 32개의 십육진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다. 이를테면 다음과 같다.

: 550e8400-e29b-41d4-a716-446655440000

사용 가능한 UUID는 340,282,366,920,938,463,463,374,607,431,768,211,456개이다.

8-4-4-4-12 포맷 문자열은 16바이트의 UUID를 위한 레코드 레이아웃에 기반을 둔다.[64]

UUID 레코드 레이아웃
이름길이 (byte)길이 (hex)길이 (bits)내용
time_low4832시간의 low 32비트를 부여하는 정수
time_mid2416시간의 middle 16비트를 부여하는 정수
time_hi_and_version2416최상위 비트에서 4비트 "version", 그리고 시간의 high 12비트
clock_seq_hi_and_res clock_seq_low2416최상위 비트에서 1-3비트는 UUID의 레이아웃 형식, 그리고 13-15비트 클럭 시퀀스
node6124848비트 노드 id


5. 변형(Variants)

UUID에는 역사적 경위로 인해 여러 종류의 변형(variant)이 있으며, 현행 규격에서 정해진 것은 그중 하나이다. 16진수로 표기했을 경우 `xxxxxxxx-xxxx-xxxx-Nxxx-xxxxxxxxxxxx`의 N 자릿수의 상위 비트가 변형을 나타낸다. IETF의 RFC에서는 상위 2비트가 102로 정해져 있으므로, 16진 표기에서는 8, 9, A, B 중 하나가 된다.[1] 이 외의 변형은 RFC 제정 이전에 생성된 UUID와의 하위 호환성 또는 미래를 위해 예약되어 있다.

Msb0Msb1Msb2변형
0네트워크 컴퓨팅 시스템과의 하위 호환성을 위해 예약
10RFC 및 ISO에서 사용하고 있는 변형
110마이크로소프트가 COM에서 사용하는 GUID와의 하위 호환성을 위해 예약
111미래를 위해 예약


6. 버전(Versions)

UUID는 생성 방법에 따라 여러 버전이 존재하며, 16진수 표기에서 `xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx`의 `M` 자리 숫자가 버전을 나타낸다. IETF RFC에서는 각 버전에 대한 문제점을 기술하고, 버전 4와 7을 일반적인 용도로 권장한다.

버전문제점
1여러 가지 문제가 있으므로, 가능하다면 버전 7을 사용해야 한다(SHOULD).
2DCE용이므로 RFC 대상 외.
3MD5를 사용하고 있지만, MD5는 취약하므로 다른 것을 사용해야 한다(SHOULD).
4문제 없음. 난수만으로 생성.
5SHA-1을 사용하고 있지만, SHA-1은 취약하고, NIST는 2030년 12월 31일에 사양을 폐지할 예정[44]이다. 대신 SHA-2를 사용하는 경우에는 버전 8로 해야 한다(MUST).
6버전 1과 호환성을 유지하면서, 시간순으로 정렬할 수 있도록 한 것이지만, 버전 7을 사용해야 한다(SHOULD).
7문제 없음. 처음에 밀리초 단위의 시각을 붙여, 시간순으로 정렬할 수 있는 것.
8실험용.



표준 버전 3, 4 및 5의 UUID의 무작위 특성과 표준 버전 1 및 2 내 필드의 순서는 UUID가 기본 키로 사용될 때 데이터베이스의 참조 지역성 또는 성능에 문제를 일으킬 수 있다. 예를 들어, 2002년 지미 닐슨(Jimmy Nilsson)은 키로 사용되는 버전 4 UUID가 시스템 시간을 기반으로 한 비무작위 접미사를 포함하도록 수정되었을 때 마이크로소프트 SQL Server의 성능이 크게 향상되었다고 보고했다. 이러한 이른바 "COMB"(결합 시간-GUID) 방식은 UUID가 중복될 가능성을 크게 높였는데, 닐슨도 이를 인정했지만, 닐슨은 애플리케이션 내에서 고유성만 요구했다.[39]

6. 1. 버전 1 (날짜-시간 및 MAC 주소)

버전 1 UUID는 노드의 48비트 MAC 주소와 60비트 타임스탬프를 연결하여 생성한다. 타임스탬프는 1582년 10월 15일 자정(UTC)부터 100-나노초 간격의 수를 나타낸다. 13-14비트 "고유화" 시퀀스(클럭 시퀀스)는 타임스탬프를 확장하여, 빠른 속도로 UUID가 생성될 때에도 고유성을 보장한다.[2]

각 버전 1 UUID는 공간(노드)과 시간(간격 및 시퀀스)의 단일 지점에 해당하므로, 의도치 않게 동일한 UUID가 생성될 확률은 매우 낮다. 그러나 MAC 주소를 통해 UUID를 생성한 컴퓨터를 추적할 수 있어 개인 정보 보호 문제가 발생할 수 있다. 멜리사 바이러스 제작자를 찾는 데 이 취약점이 활용되기도 했다.[15]

MAC 주소가 없거나 노출이 바람직하지 않은 경우, 무작위 48비트 노드 ID를 사용할 수 있다. 이 경우 노드 ID의 첫 번째 옥텟 최하위 비트를 1로 설정하도록 권고하며, 이는 MAC 주소의 멀티캐스트 비트에 해당한다. 이를 통해 무작위 생성 UUID와 유니캐스트 MAC 주소 기반 UUID를 구별할 수 있다.[2]

버전 1보다 버전 7 사용을 권장한다.

버전 1 UUID의 16진수 표기 구조는 다음과 같다.

`TTTTTTTT-TTTT-1TTT-sSSS-AAAAAAAAAAAA`

  • T: 타임스탬프 (60비트)
  • S: 클럭 시퀀스 (14비트 + 상위 2비트 102)
  • A: 노드 (48비트)


타임스탬프는 UUID 생성 시각(협정 세계시)에서의 1582년 10월 15일(가톨릭교회에서의 그레고리력 실시일) 0시 0분부터의 경과 시간을 100나노초 단위로 측정한 값이다. 60비트는 3653년 분의 시간을 나타내므로, 서기 5235년까지 사용 가능하다.

노드는 UUID를 생성한 장치를 고유하게 나타내는 값으로, 보통 네트워크 카드에 할당된 MAC 주소를 사용한다. 여러 개가 있을 때는 임의로 하나를 선택해도 된다. MAC 주소가 없는 경우 난수를 생성하여 멀티캐스트 비트를 설정하여 사용할 수 있다.

클럭 시퀀스는 동일 기기에서 동일 타임스탬프에 UUID를 생성할 때 중복을 막기 위해 순차적으로 변경되는 값이다. 난수를 사용하면 생일 문제로 인해 쉽게 동일 UUID가 생성될 수 있으므로, 순차적인 값을 사용해야 한다.

기기 시간 관리나 윤초에 의한 시간 되돌림, 또는 시간이 앞선 장치에서 뒤쳐진 장치로 네트워크 카드를 이설한 경우에도 중복이 발생할 수 있다. 클럭 시퀀스는 새로운 타임스탬프마다 리셋하지 않고, 마지막 생성 시점의 상태를 유지하고 계속 갱신해야 한다. 하지만 후자의 경우, 이전 장치의 클럭 시퀀스를 알기 어려워 난수로 재초기화해야 한다.

6. 2. 버전 2 (날짜-시간 및 MAC 주소, DCE 보안 버전)

버전 2 UUID는 버전 1과 유사하지만, 시퀀스 시계의 최하위 8비트가 "로컬 도메인" 번호로 대체되고 타임스탬프의 최하위 32비트가 지정된 로컬 도메인 내에서 의미 있는 정수 식별자로 대체된다.[8] POSIX 시스템에서 로컬 도메인 번호 0과 1은 각각 사용자 ID(UID)와 그룹 ID(GID)에 사용되며, 다른 로컬 도메인 번호는 사이트에서 정의된다.[8] 비POSIX 시스템에서는 모든 로컬 도메인 번호가 사이트에서 정의된다.

UUID에 40비트 도메인/식별자를 포함하는 기능에는 장단점이 있다. 한편으로는 40비트는 노드 ID당 약 1조 개의 도메인/식별자 값을 허용한다. 다른 한편으로는 버전 1의 60비트와 비교하여 클록 값이 최상위 28비트로 잘린 상태에서, 버전 2 UUID의 시계는 429.49초마다 한 번만 "똑딱"거린다. 이는 버전 1의 100나노초마다 한 번과 비교하여 7분 약간 넘는 시간이다. 버전 1의 14비트와 비교하여 시퀀스 시계가 6비트밖에 되지 않으므로, 버전 1의 16,384개 시퀀스 시계 값과 비교하여 7분 간격의 시계 틱당 노드/도메인/식별자당 64개의 고유 UUID만 생성할 수 있다.[16]

DCE 시스템에서의 권한 인가를 목적으로 설계되었으며, 버전 1 UUID의 일부를 POSIX의 사용자 ID 및 그룹 ID로 대체한 것이다. 16진 표기법으로는 `IIIIIIII-TTTT-2TTT-dDDD-AAAAAAAAAAAA`가 되며, 타임스탬프 일부와 클록 시퀀스를 각각 로컬 ID(I: 32비트)와 로컬 도메인(D: 14비트 + 상위 2비트가 102)으로 치환한다. 로컬 도메인은 로컬 ID의 종류를 나타내는 값으로, 사용자 ID를 사용하는 경우에는 0(hex영어 표기로 8000), 그룹 ID를 사용하는 경우에는 1(hex영어 표기로 8001)이 된다.[45]

6. 3. 버전 3 (네임스페이스 이름 기반, MD5 해시)

버전 3 및 버전 5 UUID암호화 해시 함수를 사용하여 네임스페이스 식별자와 이름을 해싱하여 생성된다. 버전 3은 MD5를 해싱 알고리즘으로 사용하고, 버전 5는 SHA-1을 사용한다.[1]

네임스페이스 식별자 자체도 UUID이다. 사양에서는 URL, 정규화된 도메인 이름, 객체 식별자, X.500 고유 이름에 대한 네임스페이스를 나타내는 UUID를 제공하지만, 원하는 모든 UUID를 네임스페이스 지정자로 사용할 수 있다.

지정된 네임스페이스 및 이름에 해당하는 버전 3 UUID를 결정하기 위해, 네임스페이스의 UUID는 바이트 문자열로 변환되고 입력 이름과 연결된 다음 MD5로 해싱되어 128비트가 생성된다. 그런 다음 6비트 또는 7비트가 고정 값, 4비트 버전(예: 버전 3의 경우 00112) 및 2비트 또는 3비트 UUID "변형"(예: RFC 9562영어 UUID를 나타내는 102 또는 레거시 Microsoft GUID를 나타내는 1102)으로 대체된다. 따라서 6비트 또는 7비트가 미리 결정되므로 121비트 또는 122비트만 UUID의 고유성에 기여한다.

IETF RFC 4122는 버전 3(MD5)보다 버전 5(SHA-1)를 권장하며, 보안 자격 증명으로 두 버전의 UUID를 사용하는 것을 경고한다.[2]

6. 4. 버전 4 (랜덤)

버전 4 UUID는 무작위로 생성된다. 다른 UUID와 마찬가지로 4비트는 버전 4를 나타내는 데 사용되며, 2비트 또는 3비트는 변형을 나타내는 데 사용된다(각각 변형 1과 2의 경우 102 또는 1102). 따라서 변형 1(즉, 대부분의 UUID)의 경우 무작위 버전 4 UUID는 6개의 미리 결정된 변형 및 버전 비트를 가지며, 무작위로 생성된 부분에 대해 122비트가 남게 되어 총 2122, 즉 5.3×1036 (5.3 언데실리언)개의 가능한 버전-4 변형-1 UUID가 된다. 변형에 3비트가 사용되므로 가능한 버전 4, 변형 2 UUID(레거시 GUID)는 절반이 된다.[17]

RFC 9562에 따르면 일곱 번째 옥텟의 최상위 4비트는 UUID가 준수하는 버전을 나타낸다. 즉, 세 번째 그룹의 첫 번째 16진수 숫자는 항상 UUIDv4에서 `4`로 시작한다. 시각적으로는 `xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx`와 같이 표시되며, 여기서 `M`은 UUID 버전 필드이다. 숫자 `N`의 상위 두 개 또는 세 개의 비트는 변형을 인코딩한다. 값은 2비트 표시의 경우 `8`, `9`, `A` 또는 `B`이고, 3비트 표시의 경우 `C` 또는 `D`이다. 예를 들어, 무작위 UUID 버전 4, 변형 1은 `8D8AC610-566D-4EF0-9C22-186B2A5ED793`일 수 있다.[17]

표준 버전 3, 4 및 5의 UUID의 무작위 특성과 표준 버전 1 및 2 내 필드의 순서는 UUID가 기본 키로 사용될 때 데이터베이스의 참조 지역성 또는 성능에 문제를 일으킬 수 있다. 예를 들어, 2002년 지미 닐슨(Jimmy Nilsson)은 키로 사용되는 버전 4 UUID가 시스템 시간을 기반으로 한 비무작위 접미사를 포함하도록 수정되었을 때 마이크로소프트 SQL Server의 성능이 크게 향상되었다고 보고했다. 이러한 이른바 "COMB"(결합 시간-GUID) 방식은 UUID가 중복될 가능성을 크게 높였는데, 닐슨도 이를 인정했지만, 닐슨은 애플리케이션 내에서 고유성만 요구했다.[39]

6. 5. 버전 5 (네임스페이스 이름 기반, SHA-1 해시)

버전 5 UUID는 버전 3과 유사하지만, MD5 해시 함수 대신 SHA-1 해시 함수를 사용한다. SHA-1은 현재 암호화 취약점이 발견되었기 때문에, SHA-2 해시 함수를 사용하는 버전 8 UUID를 대신 사용하는 것이 권장된다.

6. 6. 버전 6 (날짜-시간 및 MAC 주소, 정렬 가능)

버전 6 UUID는 모든 타임스탬프 비트가 가장 중요한 비트에서 가장 중요하지 않은 비트 순서로 정렬되어 있다는 점을 제외하면 버전 1과 유사하다.[2] 이를 통해 시스템은 사전순으로 정렬하여 UUID를 생성 순서대로 정렬할 수 있으며, 이는 버전 1에서는 불가능하다. 버전 7 사용이 권장된다.

6. 7. 버전 7 (타임스탬프 및 랜덤, 정렬 가능)

UUIDv7은 데이터베이스 및 분산 시스템에서 키로 사용하기 위해 설계되었다.

UUIDv7은 48비트 빅 엔디안 유닉스 에포크 타임스탬프(밀리초 단위)로 시작한다. 타임스탬프 뒤에는 버전 니블(7)이 오고, 변형 비트는 `10x` 형태이다. 나머지 74비트는 무작위 시드 카운터(선택 사항) 및 무작위 값이다.

DBMS에서 UUIDv7 생성기는 스레드 간에 공유되거나 스레드 로컬일 수 있다.

표준 버전 1, 2, 3, 4, 5 UUID의 무작위성이나 필드 순서는 기본 키로 사용될 때 데이터베이스 참조 지역성 문제를 일으킬 수 있다. 2002년 지미 닐슨은 버전 4 UUID에 비무작위 접미사를 추가하여 수정한 "COMB"(결합 시간-GUID) 방식이 마이크로소프트 SQL Server 성능을 향상시켰다고 보고했다. 그러나 이 방식은 UUID 중복 가능성을 높였다.[39] 버전 1 및 2 UUID를 타임스탬프가 먼저 오도록 재정렬하면 삽입 성능 저하를 막을 수 있다.[40]

UUIDv7은 에서 UUIDv6 및 UUIDv7로 표준화된 COMB 유사 배열을 따른다. 버전 7은 버전 6처럼 시간 순으로 정렬 가능하며, 앞 48비트에 밀리초 단위 UNIX 시간을 붙여 시간상 가까운 데이터를 묶어 데이터베이스 기본 키로 사용 시 지역성을 높인다. 16진 표기에서는 `TTTTTTTT-TTTT-7RRR-rRRR-RRRRRRRRRRRR` 형태이다.

128비트 구성 요소는 다음과 같다.

  • 밀리초 단위 UNIX 시간 (48비트): 10889년까지 표현 가능하다.
  • 버전 (4비트): 상수 01112 (10진수 7)
  • 난수 (12비트)
  • 변형 (2비트): 상수 102
  • 난수 (62비트)


UUID와 유사한 ULID(Universally Unique Lexicographically Sortable Identifier)는 UUID 버전 7과 유사하게 밀리초 단위 UNIX 시간 48비트와 난수 80비트로 구성된다. Crockford의 Base32를 사용하여 26자 문자열로 변환된다.[46]

6. 8. 버전 8 (사용자 정의)

버전 8은 두 가지 요구 사항만 있다.

  • 변형 비트는 `10`이어야 하므로, 변형을 포함하는 니블은 8(`0x1000`), 9(`0x1001`), A(`0x1010`), B(`0x1011`) 중 하나여야 한다.
  • 버전 니블은 8의 값이어야 한다.


이러한 요구 사항은 시스템에 버전 8 UUID임을 알려준다. 나머지 122비트는 공급업체가 사용자 정의할 수 있다. 버전 4와의 차이점은 해당 122비트가 무작위인 반면, UUID 버전 8의 122비트는 공급업체별 규칙을 따르기 때문에 그렇지 않다는 것이다.

실험 또는 벤더 고유의 용도용으로, 버전과 변형 이외의 부분은 자유롭게 사용할 수 있다.

6. 9. 특수 값

"Nil" UUID는 `00000000-0000-0000-0000-000000000000`이며, 모든 비트가 0으로 설정된 것이다.[1] "최대" UUID는 "옴니" UUID라고도 불리며, `FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF`로, 모든 비트가 1로 설정된 것이다.[1]

7. 인코딩

UUID는 빅 엔디안으로 순차적으로 인코딩된다.[64] 예를 들어, `00112233-4455-6677-8899-aabbccddeeff`는 바이트 `00 11 22 33` `44 55` `66 77` `88 99` `aa bb cc dd ee ff`로 인코딩된다.

예외는 마이크로소프트 변형 2 UUID("GUID")이다. COM/OLE 라이브러리에서 사용되었으며, 리틀 엔디안 형식을 사용하지만, 문자열로 형식이 지정될 때 바이트 대시가 누락되어 UUID의 처음 세 구성 요소가 리틀 엔디안이고 마지막 두 구성 요소가 빅 엔디안이므로 혼합 엔디안으로 나타난다. 예를 들어, `00112233-4455-6677-8899-aabbccddeeff`는 바이트 `33 22 11 00` `55 44` `77 66` `88 99` `aa bb cc dd ee ff`로 인코딩된다.

대부분 UUID는 16진수 값으로 표현된다. 가장 많이 사용되는 형식은 8-4-4-4-12 형식인 `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`이며, 여기서 각 `x`는 4비트를 나타낸다. 다른 잘 알려진 형식으로는 중괄호를 사용하는 8-4-4-4-12 형식 `{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}` (마이크로소프트 시스템, Windows 등)과 모든 하이픈이 제거된 `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`가 있다.

16진수 값은 소문자 형태가 일반적으로 선호되는 형식이다. 특히 ITU-T Rec. X.667에 정의된 일부 컨텍스트에서는 텍스트를 생성할 때 소문자가 필요하지만, 대문자 버전도 허용해야 한다.

8. 충돌

동일한 UUID가 두 번 이상 생성되어 서로 다른 참조 대상에 할당될 때 충돌이 발생한다. 네트워크 카드의 고유한 MAC 주소를 사용하는 표준 버전-1 및 버전-2 UUID의 경우 충돌이 발생할 가능성은 낮으며, 구현이 표준과 다를 경우에만 가능성이 증가한다.[25]

MAC 주소를 사용하지 않고 임의로 생성된 노드 ID를 사용하는 버전-1 및 -2 UUID, 해시 기반 버전-3 및 버전-5 UUID, 그리고 임의 버전-4 UUID의 경우 구현 문제 없이도 충돌이 발생할 수 있지만, 그 확률은 일반적으로 무시할 수 있을 정도로 매우 낮다. 이 확률은 생일 문제 분석을 기반으로 정확하게 계산할 수 있다.[25]

예를 들어, 적어도 하나의 충돌이 발생할 확률이 50%가 되기 위해 생성해야 하는 임의 버전-4 UUID의 수는 271경 개이며, 이는 약 86년 동안 초당 10억 개의 UUID를 생성하는 것과 같다.[26] 103조 개의 버전-4 UUID 내에서 중복을 찾을 확률은 10억 분의 1이다.

제조업체가 마더보드와 같은 제품에 기본 UUID를 할당한 다음, 제조 과정에서 나중에 이 기본 UUID를 덮어쓰지 못하는 경우 충돌이 발생할 수 있다. 예를 들어, UUID `03000200-0400-0500-0006-000700080009`는 기가바이트 테크놀로지 브랜드의 여러 마더보드에서 발생한다.[27]

9. 활용

UUID는 다양한 시스템에서 고유 식별자로 활용된다.


  • 파일 시스템: ext2/ext3/ext4 파일 시스템 사용자 공간 도구(e2fsprogs는 util-linux에서 제공하는 libuuid를 사용), LVM, LUKS 암호화 파티션 등에서 활용된다.[28]
  • 데이터베이스: 데이터베이스 테이블에서 고유 키로 사용된다.
  • Microsoft SQL Server 버전 4 Transact-SQL의 NEWID 함수는 표준 임의 버전 4 UUID를 반환한다.[33]
  • Oracle 데이터베이스 SYS_GUID 함수는 GUID와 유사한 16바이트 128비트 RAW 값을 반환한다.[34]
  • PostgreSQL에는 UUID 데이터 유형이 포함되어 있으며[35] 모듈의 함수를 사용하여 대부분의 UUID 버전을 생성할 수 있다.[36][37]
  • MySQL은 표준 버전 1 UUID를 생성하는 UUID 함수를 제공한다.[38]
  • Remoting: Microsoft COM (IID, CLSID, LIBID, CATID)에서 사용된다.
  • 기타: GNOME, KDE, macOS[28], Bluetooth Low Energy 등에서 활용된다.


크로스 플랫폼 프로그래밍 언어에서는 UUID를 생성하거나 문자열과 상호 변환하기 위한 기능이 표준 라이브러리로 제공되는 경우가 많다.

  • Java 1.5 이후에 구현된 java.util.UUID[53]
  • Python 의 uuid[54]
  • .NET 의 Guid[55]
  • C++ Boost C++ 라이브러리 Boost.Uuid[56]
  • Mac OS X 10.8 및 iOS 6.0 이후는 Objective-C/Swift에서 사용할 수 있는 `UUID`[57] 및 `NSUUID`[58] 클래스 구현


운영 체제에 따라 UUID를 생성하는 명령줄 도구 `uuidgen`이 제공되기도 한다.[60][61]

10. 결론

UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만, 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.[1]

참조

[1] 간행물 Universally Unique IDentifiers (UUIDs) Internet Engineering Task Force 2024-05-09
[2] 간행물 A Universally Unique IDentifier (UUID) URN Namespace Internet Engineering Task Force 2017-01-17
[3] 웹사이트 Universally Unique Identifiers (UUID) http://www.h2databas[...] 2021-03-21
[4] 간행물 ITU-T Recommendation X.667]: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components https://www.itu.int/[...] ITU-T 2012-10
[5] 서적 Network Computing Architecture https://archive.org/[...] Prentice Hall
[6] 서적 Proceedings of the first ACM SIGACT-SIGOPS symposium on Principles of distributed computing - PODC '82 1982-08-18
[7] 웹사이트 DCE 1.1: Remote Procedure Call http://www.opengroup[...] The Open Group
[8] 웹사이트 DCE 1.1: Authentication and Security Services http://www.opengroup[...] The Open Group
[9] 웹사이트 ITU-T Study Group 17 - Object Identifiers (OID) and Registration Authorities Recommendations https://www.itu.int/[...] 2023-03-28
[10] 웹사이트 Revise Universally Unique Identifier Definitions (uuidrev) https://datatracker.[...] 2023-05-30
[11] 웹사이트 Recommendation ITU-T X.667 https://www.itu.int/[...] 2020-12-19
[12] 웹사이트 Registration Authority http://standards.iee[...]
[13] 웹사이트 MAC addresses for virtual machines https://superuser.co[...]
[14] 웹사이트 MAC Address Setup https://openwrt.org/[...] 2021-09-15
[15] 웹사이트 Tracking Melissa's Alter Egos https://www.zdnet.co[...] ZDNet 2017-01-16
[16] 웹사이트 What's New in Python 2.5 https://docs.python.[...] 2016-01-23
[17] 웹사이트 draft-ietf-uuidrev-rfc4122bis-14 https://datatracker.[...] 2023-11-06
[18] 웹사이트 uuid.c https://opensource.a[...]
[19] 웹사이트 Apollo Date Bug https://jim.rees.org[...]
[20] 웹사이트 Breaking Down UUIDs https://duo.com/labs[...]
[21] 웹사이트 UUID Versions Explained https://www.uuidtool[...]
[22] 웹사이트 Why does COM express GUIDs in a mix of big-endian and little-endian? Why can't it just pick a side and stick with it? https://devblogs.mic[...] 2022-10-31
[23] 웹사이트 UUIDs and GUIDs http://upnp.org/reso[...]
[24] 웹사이트 Guid.ToByteArray Method https://docs.microso[...]
[25] 웹사이트 ID Generation in Mobile Environments http://repositorium.[...]
[26] 논문 A Generalized Birthday Problem 1991-06
[27] 웹사이트 03000200-0400-0500-0006-000700080009 - Google Search https://www.google.c[...] 2024-04-30
[28] 문서 gen_uuid.c in Apple's Libc-391, corresponding to Mac OS X 10.4 https://opensource.a[...]
[29] 웹사이트 ext2/e2fsprogs.git - Ext2/3/4 filesystem userspace utilities https://git.kernel.o[...] 2017-01-09
[30] 웹사이트 Interface Pointers and Interfaces https://msdn.microso[...] Microsoft 2015-12-15
[31] 웹사이트 Registering a Type Library https://msdn.microso[...] Microsoft 2015-12-15
[32] 웹사이트 Categorizing by Component Capabilities https://msdn.microso[...] Microsoft 2015-12-15
[33] 웹사이트 NEWSEQUENTIALID (Transact-SQL) http://msdn.microsof[...] Microsoft 2017-01-14
[34] 웹사이트 Oracle Database SQL Reference https://docs.oracle.[...] Oracle
[35] 웹사이트 Section 8.12 UUID Type https://www.postgres[...] PostgreSQL Global Development Group 2020-02-13
[36] 웹사이트 uuid-ossp https://www.postgres[...] PostgreSQL Global Development Group 2021-08-12
[37] 웹사이트 pgcrypto https://www.postgres[...] PostgreSQL Global Development Group 2021-08-12
[38] 서적 MySQL 5.7 Reference Manual Oracle Corporation
[39] 웹사이트 The Cost of GUIDs as Primary Keys http://www.informit.[...] 2002-03-08
[40] 웹사이트 Storing UUID Values in MySQL https://percona.com/[...] Percona 2014-12-19
[41] 웹사이트 ISO/IEC 9834-8:2005 https://www.iso.org/[...] 2024-06-17
[42] 웹사이트 ISO/IEC 9834-8:2008 https://www.iso.org/[...] 2024-06-17
[43] 웹사이트 ISO/IEC 9834-8:2014 https://www.iso.org/[...] 2024-06-17
[44] 웹사이트 NIST Retires SHA-1 Cryptographic Algorithm https://www.nist.gov[...] 2024-06-15
[45] 웹사이트 DCE 1.1: Authentication and Security Services http://www.opengroup[...] 2016-05-17
[46] 웹사이트 ulid/spec: The canonical spec for ulid https://github.com/u[...] 2024-06-15
[47] 문서 libuuid(3) - Linux man page https://linux.die.ne[...]
[48] 문서 Ext2/Ext3/Ext4 Filesystems Utilities / Code / [fe93a2] /lib/uuid https://sourceforge.[...]
[49] 문서 gen_uuid.c | opensource.apple.com https://opensource.a[...]
[50] 문서 gen_uuid.c.auto.html | opensource.apple.com https://opensource.a[...]
[51] 웹사이트 ext2/e2fsprogs.git - Ext2/3/4 filesystem userspace utilities https://git.kernel.o[...] 2017-01-09
[52] 웹사이트 Crashdump Restructuring in Solaris https://blogs.oracle[...] Oracle 2017-01-09
[53] 웹사이트 UUID (Java SE 21 & JDK 21) https://docs.oracle.[...] 2024-06-15
[54] 웹사이트 uuid --- RFC 4122 に従った UUID オブジェクト https://docs.python.[...] 2024-06-15
[55] 웹사이트 Guid 構造体 (System) https://learn.micros[...] 2024-06-15
[56] 문서 オブジェクトにユニークなIDを付ける - boostjp https://boostjp.gith[...]
[57] 웹사이트 UUID https://developer.ap[...] 2024-06-15
[58] 문서 NSUUID | Apple Developer Documentation https://developer.ap[...]
[59] 문서 CFUUID | Apple Developer Documentation https://developer.ap[...]
[60] 문서 uuidgen(1) - Linux manual page https://man7.org/lin[...]
[61] 문서 uuidgen(1) | FreeBSD Manual Pages https://man.freebsd.[...]
[62] 문서 Generating the UUID - Win32 apps | Microsoft Learn https://learn.micros[...]
[63] 서적 Network Computing Architecture https://archive.org/[...] Prentice Hall
[64] 간행물 A Universally Unique IDentifier (UUID) URN Namespace 국제 인터넷 표준화 기구 2017-01-17



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com