데이터베이스에서 레코드를 구분할 때 1, 2, 3 같은 순번 대신 550e8400-e29b-41d4-a716-446655440000 같은 긴 문자열을 쓰는 경우가 있다. 이게 UUID(Universally Unique Identifier)다. 전 세계 어디서 만들어도 겹치지 않도록 설계된 128비트 식별자다.
왜 순번 대신 UUID를 쓰나
순번(Auto Increment)은 단일 데이터베이스에서는 편하지만, 여러 서버가 동시에 데이터를 만들면 문제가 생긴다. 서버 A에서 ID 100을 만들고 서버 B에서도 ID 100을 만들면 병합할 때 충돌한다.
UUID는 중앙 서버 없이 각자 독립적으로 생성해도 겹칠 확률이 사실상 0에 가깝다. 약 3.4 × 10³⁸가지 조합이 가능하기 때문이다.
UUID가 쓰이는 곳
- 분산 시스템의 레코드 식별자
- API에서 리소스를 구분하는 고유 키
- 세션 ID, 트랜잭션 ID
- 파일명 중복 방지
UUID v4, 랜덤 생성 방식
UUID에는 여러 버전이 있지만, 가장 널리 쓰이는 건 v4(랜덤)다. 타임스탬프나 MAC 주소 같은 외부 정보 없이 순수 난수로 생성한다. 형식은 8-4-4-4-12자리, 총 32개의 16진수 문자로 이루어져 있다.
예시f47ac10b-58cc-4372-a567-0e02b2c3d479
세 번째 그룹 첫 자리가 4인 게 v4의 특징이다.
UUID 만드는 법
프로그래밍 언어별로 내장 함수가 있지만, 테스트용이나 한두 개만 빠르게 필요할 때는 온라인 UUID 생성기가 편하다. 버튼 하나로 바로 생성되고, 최대 1,000개까지 한꺼번에 뽑을 수도 있다.
| 형식 | 출력 예시 | 용도 |
|---|---|---|
| 기본(하이픈) | f47ac10b-58cc-4372-... | 일반적인 사용 |
| 하이픈 제거 | f47ac10b58cc4372... | URL, 파일명 |
| 중괄호 | {f47ac10b-58cc-...} | Windows GUID |
| URN | urn:uuid:f47ac10b-... | XML, RDF |
대문자 옵션도 있고, 대량 생성한 결과를 TXT 파일로 다운로드할 수도 있다. 테스트 데이터를 만들 때 유용하다.
개발 중에 고유 ID가 필요할 때마다 코드를 짜지 않아도 된다. 복사해서 바로 쓰면 끝이다.