데이터베이스에 레코드를 추가할 때마다 고유한 ID가 필요하다. 숫자를 1부터 순서대로 매기면 간단하지만, 서버가 여러 대이거나 분산 시스템이라면 번호가 겹칠 위험이 있다. 이런 상황에서 쓰는 게 UUID다.
UUID가 뭔가
UUID(Universally Unique Identifier)는 128비트 길이의 고유 식별자다. 중앙 서버 없이도 어디서든 생성할 수 있고, 충돌 확률이 사실상 0에 가깝다.
형식 550e8400-e29b-41d4-a716-446655440000
8-4-4-4-12 자리의 16진수, 하이픈으로 구분된 총 36자다.
UUID v4는 암호학적 난수로 생성되는 가장 보편적인 버전이다. 가능한 조합의 수가 약 5.3 × 10³⁶개여서, 초당 10억 개씩 만들어도 중복이 나올 확률이 거의 없다.
어디에 쓰이나
- 데이터베이스 기본 키(PK)
- 자동 증가 정수(Auto Increment) 대신 UUID를 쓰면 서버 간 데이터 병합이 쉬워진다.
- API 요청 추적
- 각 요청에 UUID를 부여하면 로그에서 특정 요청의 흐름을 추적할 수 있다.
- 파일명 충돌 방지
- 사용자가 업로드한 파일명이 겹칠 때, UUID로 저장하면 덮어쓰기를 방지할 수 있다.
- 세션/토큰 ID
- 사용자 인증 세션이나 일회용 토큰에 UUID를 사용하면 예측이 불가능해 보안이 강화된다.
형식별 차이
| 형식 | 예시 | 쓰이는 곳 |
|---|---|---|
| 기본 (하이픈 포함) | 550e8400-e29b-... | 대부분의 표준 |
| 하이픈 제거 | 550e8400e29b... | 파일명, 짧은 ID |
| 중괄호 | {550e8400-e29b-...} | Windows COM/GUID |
| URN | urn:uuid:550e8400-... | XML, SOAP |
테스트 데이터를 만들거나 대량의 ID가 필요할 때, UUID 생성기에서 형식을 고르고 개수를 입력하면 최대 1,000개까지 한 번에 생성된다. 텍스트 파일로 다운로드할 수도 있어서 스크립트에 바로 활용할 수 있다.
직접 코드를 짜서 생성해도 되지만, 빠르게 몇 개 뽑아야 할 때는 웹 도구가 편하다.