문서에서 "UUID"와 "GUID"를 모두 보고 둘이 서로 다른지 궁금하신 경우 짧은 버전을 참조하세요. 둘은 동일한 128비트 식별자입니다. GUID는 Microsoft의 이름입니다. UUID는 공식 표준과 거의 모든 사람들이 사용하는 용어입니다. 이 가이드에서는 UUID 버전이 무엇인지 설명하고, 가장 많이 사용하게 될 임의의 v4에 초점을 맞춰 UUID 버전을 살펴보고, 데이터베이스, API 및 테스트에 적합한 위치를 정확하게 보여줍니다.
빠른 답변
UUID와 GUID는 동일합니다. 즉, 8-4-4-4-12 패턴의 32자리 16진수로 작성된 128비트 고유 식별자입니다. "GUID"는 Microsoft의 용어입니다. "UUID"는 RFC 표준의 용어입니다. 대부분의 애플리케이션에는 UUID 버전 4(임의)가 필요합니다.
UUID와 GUID: 같은 것인가요?
예. UUID(Universally Unique Identifier)와 GUID(Globally Unique Identifier)는 동일한 128비트 값을 나타냅니다. GUID라는 이름은 Microsoft 세계(.NET, SQL Server, COM 및 Windows 레지스트리 모두 GUID라고 부름)에서 유래한 반면, UUID는 공식 사양(원래 RFC 4122, 2024년 RFC 9562에 의해 업데이트됨)과 PostgreSQL, Java, Python 및 JavaScript와 같은 생태계에서 사용되는 이름입니다.
일상 업무에서는 단어를 서로 바꿔서 사용할 수 있습니다. C#에서 생성된 GUID와 Python에서 생성된 UUID는 동일한 형식을 가지며 동일한 데이터베이스 열에 있을 수 있습니다. 발생할 수 있는 유일한 차이점은 외관상입니다. Microsoft 도구는 때때로 {xxxxxxxx-...}와 같은 중괄호로 값을 래핑하며, 역사적으로 몇몇 Microsoft API는 값의 일부를 다른 바이트 순서로 저장했습니다. 표준 텍스트 형식은 모든 곳에서 동일합니다.
UUID/GUID의 모습
UUID는 128비트이며 일반적으로 하이픈으로 구분된 5개 그룹으로 분할된 32개의 16진수 숫자로 표시됩니다. 익숙한 8-4-4-4-12 레이아웃입니다.
UUID 예(v4)
3f2504e0-4f89-41d3-9a0c-0305e82c3301
해당 문자열의 두 위치는 무작위가 아닙니다. 세 번째 그룹의 첫 번째 숫자는 버전(위의 4)을 인코딩하고 네 번째 그룹의 첫 번째 숫자는 변형(일반적으로 8, 9, a 또는 b)을 인코딩합니다. v4 UUID의 다른 모든 것은 무작위입니다.
UUID 버전 개요
표준은 각각 다른 방식으로 생성된 여러 버전을 정의합니다. 둘 이상이 필요한 경우는 거의 없지만 무엇이 존재하는지 아는 것이 도움이 됩니다.
- v1 - 시간 기반: 현재 타임스탬프와 머신의 MAC 주소를 기반으로 구축됩니다. 생성 시간별로 정렬이 가능하지만 MAC 주소와 생성 시간이 유출될 수 있습니다.
- v3 - 이름 기반(MD5): 네임스페이스와 이름의 결정적 MD5 해시이므로 동일한 입력은 항상 동일한 UUID를 생성합니다.
- v4 - 무작위: 122개의 무작위 비트. 이는 대부분의 애플리케이션에 대한 기본값이며 이 사이트의 생성기가 생성하는 버전입니다.
- v5 - 이름 기반(SHA-1): v3와 유사하지만 SHA-1을 사용합니다. 결정적 ID가 필요한 경우 v3보다 선호됩니다.
- v6 / v7 / v8 - 최신(RFC 9562, 2024): v7은 시간 순서가 지정되고 데이터베이스 친화적이며 빠르게 새로운 기본 키에 권장되는 선택이 되고 있습니다.
버전 4가 주력입니다. 122비트의 임의성은 실제 ID 수에 대해 우발적인 충돌을 사실상 불가능하게 만듭니다. 수년 동안 초당 수십억 달러를 생성할 수 있지만 중복은 전혀 예상할 수 없습니다. 중앙 조정자가 필요하지 않기 때문에 모든 서비스, 장치 또는 테스트 실행은 오프라인에서 자체 ID를 생성할 수 있습니다.
UUID를 사용해야 하는 경우와 사용하지 않는 경우
UUID는 중앙 기관에 문의하지 않고도 어디서나 생성할 수 있는 고유 식별자가 필요할 때마다 빛을 발합니다.
데이터베이스 기본 키
UUID 기본 키를 사용하면 행이 삽입되기 전에 애플리케이션 코드에서 ID를 생성하고, 키 충돌 없이 여러 데이터베이스의 데이터를 병합하고, 추측 가능한 연속 레코드 수의 노출을 방지할 수 있습니다. 절충점은 크기(16바이트 대 정수의 경우 4-8바이트)와 무작위 v4의 경우 대규모 테이블의 인덱스 조각화입니다. 쓰기 성능이 중요하다면 시간순 v7을 선호하고 36자 문자열이 아닌 기본 uuid 또는 바이너리 열에 값을 저장하세요.
API 리소스 및 요청 ID
REST 및 GraphQL API의 공개 ID는 UUID에 매우 적합합니다. 비순차적이므로 클라이언트는 /users/1에서 /users/2를 추측할 수 없으며 각 클라이언트 또는 서비스는 서버로의 왕복 없이 로컬에서 자체 요청 ID와 멱등성 키를 생성할 수 있습니다.
테스트 및 설비
자동화된 테스트, 시드 데이터 및 로드 스크립트에서 UUID는 카운터를 유지하지 않고도 충돌 없는 식별자를 제공합니다. 각 실행에 대해 새로운 배치를 생성하여 병렬 테스트 모음에서 기록이 충돌하지 않도록 하세요.
간단한 자동 증가 정수로 충분할 경우 UUID를 건너뜁니다. 작은 내부 조회 테이블이나 짧고 인간 친화적인 ID가 전역 고유성보다 더 유용합니다. 그리고 UUID를 비밀로 취급하지 마십시오. v4 UUID는 추측할 수 없지만 식별자일 뿐 서명된 토큰이나 암호화 키를 대체할 수는 없습니다.
MongoDB, Java 및 Python의 UUID
모든 주요 스택은 기본적으로 UUID를 생성하고 저장할 수 있습니다. 빠른 참조는 다음과 같습니다.
- MongoDB: 기본 _id는 UUID가 아닌 ObjectId이지만 BSON UUID(Binary 하위 유형 4)를 사용하여 _id 또는 모든 필드에 UUID를 저장할 수 있습니다. 드라이버는 UUID()와 같은 도우미를 노출하므로 값은 36자 문자열 대신 16바이트로 유지됩니다.
- Java: java.util.UUID.randomUUID()는 v4 UUID를 반환하고 UUID.fromString()은 이를 구문 분석합니다. Hibernate/JPA는 이를 기본 uuid 또는 바이너리(16) 열에 매핑합니다.
- Python: 내장 uuid 모듈은 임의 ID(uuid1 및 uuid5 포함)에 대해 uuid.uuid4()를 제공합니다. 텍스트 형식의 경우 str()을 호출하고 16바이트 값의 경우 .bytes를 호출합니다.
- .NET/C#: Guid.NewGuid()가 하나를 만들고 SQL Server의 고유 식별자 열이 이를 저장합니다. 이것이 전형적인 "GUID"입니다.
- JavaScript: crypto.randomUUID()는 라이브러리가 필요 없이 최신 브라우저와 Node.js에서 표준을 준수하는 v4 UUID를 생성합니다.
자주 묻는 질문
GUID는 UUID와 동일합니까?
예. 이는 동일한 128비트 식별자를 설명합니다. GUID는 Microsoft가 .NET, SQL Server 및 Windows에서 사용하는 이름입니다. UUID는 공식 RFC 표준 및 대부분의 기타 생태계에서 사용되는 용어입니다. 형식이 동일하므로 GUID와 UUID를 서로 바꿔서 저장하고 비교할 수 있습니다.
어떤 UUID 버전을 사용해야 합니까?
범용 고유 ID에는 버전 4(임의)를 사용합니다. 가장 일반적이며 조정이 필요하지 않습니다. 쓰기 작업이 많은 대규모 데이터베이스의 기본 키를 선택하는 경우 시간 순서가 지정되고 색인이 더 효율적으로 수행되는 버전 7을 고려하세요. 항상 동일한 ID를 생성하기 위해 동일한 입력이 필요한 경우 v5를 사용하십시오.
두 개의 UUID가 충돌할 수 있나요?
이론적으로는 그렇습니다. 실제로는 그렇지 않습니다. v4 UUID에는 122개의 임의 비트가 있으므로 복제본을 생성할 확률은 천문학적으로 작습니다. 충돌이 발생하기 전에 수년 동안 초당 수십억 개의 UUID를 생성해야 합니다. 모든 실제적인 목적을 위해 그들은 독특합니다.
UUID는 안전한가요, 아니면 비밀인가요?
임의의 v4 UUID는 사실상 추측이 불가능하지만 자격 증명이 아닌 식별자입니다. 암호, 세션 비밀 또는 리소스를 보호하는 유일한 수단으로 사용하지 마십시오. 보안이 중요한 경우 적절한 인증 및 서명된 토큰과 결합하세요.
내 GUID에 중괄호가 있는 이유는 무엇입니까?
Microsoft 도구는 종종 {3F2504E0-4F89-41D3-9A0C-0305E82C3301}와 같이 중괄호로 묶인 GUID를 표시하거나 저장하며 때로는 대문자로 표시합니다. 중괄호와 대소문자는 단지 형식을 지정하는 것입니다. 중괄호를 제거하고 값을 소문자로 지정하여 다른 곳에서 사용되는 표준 UUID 형식을 얻습니다.
즉시 UUID v4 생성
무료 UUID 생성기를 사용하여 브라우저에서 하나 이상의 표준 준수 UUID v4(GUID) 값을 생성하세요. 가입이 필요 없으며 장치에 아무것도 남지 않습니다.