UUID 생성기란?
UUID(Universally Unique Identifier)는 중앙 관리 없이도 거의 겹치지 않는 128비트 식별자입니다. 데이터베이스 기본키, 파일 이름, 분산 시스템의 트랜잭션 ID 등에 널리 쓰입니다.
가장 많이 쓰이는 것은 v4로, 버전과 variant를 나타내는 6비트를 뺀 122비트가 모두 난수입니다. 1초에 10억 개씩 85년을 만들어야 충돌 확률이 50%에 이를 만큼 넉넉한 공간입니다.
사용 방법
- 생성 개수를 고르고 '다시 생성'을 누릅니다.
- 하이픈 포함 여부와 대소문자를 고를 수 있습니다.
- 개별 복사 또는 전체 복사로 가져갑니다.
- 아래 검사기에 기존 UUID를 붙여 넣으면 버전과 variant를 알려줍니다.
계산 방법
형식: 8-4-4-4-12 자리의 16진수 (총 32자)
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
↑ ↑
버전(4) variant(8,9,a,b)
v4 = 122비트 난수 + 버전 4비트 + variant 2비트| 버전 | 생성 방식 | 특징 |
|---|---|---|
| v1 | 시각 + MAC 주소 | 시간순 정렬 가능, MAC 노출 |
| v3 | 이름 + MD5 해시 | 같은 입력이면 같은 결과 |
| v4 | 난수 | 가장 널리 쓰임 |
| v5 | 이름 + SHA-1 해시 | v3의 개선판 |
| v7 | 유닉스 시각 + 난수 | 시간순 정렬 + 난수 (최신) |
활용 예시
- 데이터베이스 기본키로 쓰면 여러 서버에서 동시에 생성해도 충돌하지 않습니다.
- 순차 증가하는 숫자 ID와 달리 전체 레코드 수를 추측할 수 없어 보안상 유리합니다.
- 다만 인덱스 효율은 순차 ID보다 떨어집니다. 대량 삽입이 잦으면 v7을 검토하세요.
- URL에 넣을 때는 하이픈을 떼어 32자로 쓰기도 합니다.
충돌 가능성을 체감해 보면, 103조 개의 UUID를 만들어야 중복이 하나 생길 확률이 10억분의 1입니다. 실무에서 v4 충돌을 걱정할 필요는 사실상 없습니다.
자주 묻는 질문
- UUID가 중복될 수 있나요?
- 이론적으로는 가능하지만 확률이 극도로 낮습니다. 다만 난수 생성기가 제대로 동작하지 않는 환경(일부 임베디드 기기)에서는 중복이 보고된 적이 있습니다. 이 도구는 브라우저의 암호학적 난수를 씁니다.
- UUID와 GUID는 다른가요?
- 같습니다. GUID는 마이크로소프트가 쓰는 이름이고 UUID는 RFC 4122 표준 용어입니다. 형식과 의미는 동일합니다.
- 데이터베이스 기본키로 UUID를 써도 되나요?
- 분산 환경이라면 유리합니다. 다만 16바이트라 4~8바이트 정수보다 인덱스가 커지고, 무작위라 B-트리 인덱스에 삽입할 때 페이지 분할이 자주 일어납니다. 대량 삽입이 많으면 시간순으로 정렬되는 UUID v7을 고려하세요.
- 하이픈을 빼도 되나요?
- 저장할 때는 빼서 32자로 두는 경우가 많습니다. 다만 표준 표기는 하이픈이 있는 36자이고, 비교할 때 형식이 섞이지 않도록 한쪽으로 통일하는 것이 좋습니다.
- 대문자와 소문자 중 뭐가 맞나요?
- RFC 4122는 출력 시 소문자를 권장하고, 입력은 대소문자를 모두 받아들이도록 정하고 있습니다. 소문자를 쓰는 편이 무난합니다.
참고 자료
계산 기준 · RFC 4122 규격에 따라 128비트 중 버전(4비트)과 variant(2비트)를 고정하고 나머지 122비트를 crypto.getRandomValues 로 채웁니다. 검사기는 8-4-4-4-12 형식과 버전·variant 비트를 확인합니다.