RevealTheme logo

UUID 생성기

UUID v4(무작위 범용 고유 식별자)를 생성합니다. 클릭할 때마다 새로운 것이 생성됩니다.

이 도구 사용 방법

  1. 1

    Click the Generate UUID button to produce a fresh random v4 UUID.

  2. 2

    Read the 36-character identifier shown in the canonical 8-4-4-4-12 format below the button.

  3. 3

    Click Copy to put the UUID on your clipboard for pasting into code, a database, or a config file.

  4. 4

    Click Generate UUID again whenever you need another one — every click replaces the value with a brand-new random UUID.

UUID란 무엇이며 왜 소프트웨어에서 사용하나요?

UUID(Universally Unique Identifier, Microsoft 환경에서는 GUID라고도 함)는 시스템 간 조정 없이 엔티티를 식별하는 데 사용되는 128비트 값입니다. UUID의 핵심 발상은 서로를 알지 못한 채 서로 다른 두 머신에서 실행되는 서로 다른 두 프로그램이 UUID를 생성하면서도 절대 충돌하지 않으리라고 자신 있게 가정할 수 있다는 것입니다. 이 속성은 분산 시스템 설계를 가능하게 합니다. 중앙 카운터 없이 어떤 서비스든 로컬에서 식별자를 발급하게 하고, 행을 다시 번호 매기지 않고도 데이터베이스를 병합하며, 서버가 요청을 보기도 전에 클라이언트에서 식별자를 미리 생성할 수 있습니다. UUID에는 RFC 4122가 정의한 다섯 가지 표준 버전이 있습니다. v1(시간 + MAC 주소 기반, 생성 시각과 머신 신원을 유출함), v3(네임스페이스 + 이름의 MD5 해시), v4(무작위, 가장 일반적), v5(네임스페이스 + 이름의 SHA-1 해시)입니다. RFC 9562는 v6(시간 순서, v1과 비슷하지만 MAC을 유출하지 않음)와 v7(Unix timestamp + 무작위, 시간순으로 정렬되므로 데이터베이스 기본 키를 위해 특별히 설계됨)을 추가했습니다. 이 도구는 crypto.randomUUID()를 통해 UUID v4를 생성하며, 이는 브라우저 기저의 운영 체제에서 제공하는 암호학적으로 견고한 무작위성, 즉 TLS 키가 나오는 것과 동일한 원천을 사용합니다. 그 출력은 Python의 uuid.uuid4(), Node의 crypto.randomUUID(), Go의 google/uuid.NewRandom()의 출력과 바이트 단위로 동일합니다.

일반적인 사용 사례

  • 데이터베이스 기본 키: 데이터베이스를 병합하거나 클라이언트에서 식별자를 생성해야 할 때 자동 증가 정수를 대체합니다.

  • 쿠키의 세션 식별자: 유효한 세션 ID를 무차별 대입으로 추측하는 것이 계산상 불가능할 만큼 충분히 깁니다.

  • API 요청의 멱등성 키: 안전하게 요청을 재시도하세요. 서버가 UUID로 중복을 제거합니다.

  • 업로드된 파일의 식별자: 경로 충돌을 피하고 원본 이름을 노출하지 않도록 업로드된 파일의 이름을 UUID로 지정합니다.

  • 분산 추적 식별자: 각 요청이 UUID를 받아 여러 서비스에 전파되어 로그를 연관시킵니다.

  • 테스트 데이터 식별자: 케이스 간에 식별자를 조정하지 않고도 테스트 데이터를 위한 예측 가능한 무작위성을 제공합니다.

자주 묻는 질문

v4는 무슨 뜻인가요?
버전 4입니다. 122비트의 무작위성에 6비트의 고정된 버전/변형 비트를 더해 생성됩니다. 다른 버전들: v1은 timestamp + MAC 기반(사용하지 마세요. 머신 신원과 시각을 유출합니다), v3/v5는 네임스페이스 + 이름의 결정론적 해시(안정적인 파생 식별자에 유용), v7은 timestamp 접두사가 붙은 무작위(시간순으로 정렬되므로 데이터베이스에 탁월)입니다. 대부분의 경우 v4가 올바른 기본 선택입니다.
UUID는 실제로 얼마나 고유한가요?
UUID v4는 유효 무작위성이 122비트로, 5.3×10^36개의 가능한 값을 가집니다. 50%의 충돌 확률에 도달하려면 2.71×10^18개의 UUID를 생성해야 합니다. 이해를 돕자면, 초당 10억 개의 UUID를 생성하더라도 그 임계점에 도달하는 데 85년이 걸립니다. 좋은 난수 생성기를 사용하면 실질적인 충돌은 일어나지 않습니다.
데이터베이스 기본 키에는 v4와 v7 중 무엇을 써야 하나요?
데이터베이스에는 v7이 더 낫습니다. UUID v4는 무작위이므로 새 행이 B-tree 인덱스 전체에 무작위로 흩어져 인덱스 비대화와 대규모에서의 느린 삽입을 유발합니다. v7은 timestamp를 앞에 두므로 새 UUID는 항상 오래된 것 뒤에 정렬되어 순차적인 삽입 패턴을 유지합니다. PostgreSQL, MySQL, SQL Server는 v7의 혜택을 받습니다. 사용하는 라이브러리가 아직 v7을 지원하지 않는다면, ULID가 동일한 속성을 가진 인기 있는 대안입니다.
crypto.randomUUID()를 사용하는 것이 안전한가요?
예. WHATWG에 명시되어 있으며 모든 최신 브라우저에서 운영 체제의 암호학적 난수 생성기(TLS 키가 나오는 것과 동일한 원천)를 통해 구현됩니다. 출력은 예측 불가능하며 UUID v4 공간 전체에 균등하게 분포합니다.
UUID와 GUID의 차이는 무엇인가요?
기능적으로 동일합니다. GUID는 동일한 개념을 가리키는 Microsoft의 용어입니다. 일부 Microsoft API에서는 바이트 형식이 다릅니다(.NET의 Guid.ToByteArray()는 처음 세 필드에서 혼합 바이트 순서를 사용함). 따라서 상호 운용성이 중요할 때는 바이트 순서에 주의하세요. 표준 문자열 형식(8-4-4-4-12)은 동일합니다.
URL에서 사용하기 위해 UUID를 줄일 수 있나요?
예. 표준 16진수 형식 대신 128비트를 Base62나 Base64로 인코딩하세요. Base62는 22자를 제공하고, Base64는 패딩 포함 22자 또는 URL 안전 변형에서 22자를 제공합니다. 일부 라이브러리는 '짧은 UUID' 형식도 사용합니다. 기저 비트는 바뀌지 않으며, 표시 인코딩만 다릅니다.
왜 제 UUID가 다른 것과 같은 문자로 시작하나요?
우연입니다. UUID v4는 무작위입니다. 총 36개의 16진수 문자 중 무작위인 것은 22개뿐이므로(4개는 버전/변형용으로 예약되고 4개는 하이픈), 많이 생성하다 보면 일부 접두사 일치는 불가피합니다. 접두사가 일치하더라도 전체 UUID는 고유합니다.

관련 도구