UUID는 Universally Unique Identifier의 약자로, 전 세계에서 고유한 ID를 생성하기 위한 표준이다.
128비트 크기의 값으로 구성되며, 중앙 서버 없이도 고유한 ID를 생성할 수 있다는 장점이 있다.
128비트(16바이트) 고정 길이 식별자
하이픈(-)으로 구분된 8-4-4-4-12 형식의 문자열
예시: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d
중앙 서버 없이도 생성 가능
네트워크나 시간, 무작위(random) 방식으로 만들어지므로 빠르고 유연하다.
충돌 확률이 매우 낮음
예: UUID v4 기준 1조 개 중 10억 분의 1 수준
UUID는 총 5개의 필드로 구성된다. (RFC 4122 기준)
필드명 | 크기 | 설명 |
---|---|---|
time-low | 32비트 | 타임스탬프 하위 |
time-mid | 16비트 | 타임스탬프 중간 |
time-high-and-version | 16비트 | 타임스탬프 상위 + 버전 |
clock-seq | 16비트 | 클락 시퀀스 |
node | 48비트 | 네트워크 노드 정보 또는 랜덤값 |
버전 | 생성 방식 | 특징 |
---|---|---|
v1 | 시간 + MAC 주소 | 생성 시점, 장비 추적 가능 |
v3 | 네임스페이스 + MD5 | 입력값 기반 (결과 동일) |
v4 | 무작위(Random) | 가장 널리 쓰이며 보안성 우수 |
v5 | 네임스페이스 + SHA-1 | v3과 유사하나 더 안전한 해시 |
보안성과 성능을 고려할 경우, 버전 4(UUID v4)가 가장 일반적으로 사용된다.
import java.util.UUID;
UUID.randomUUID().toString();
import { v4 as uuidv4 } from 'uuid';
uuidv4();
import uuid
uuid.uuid4()
UUID는 충돌 가능성이 극히 낮고, 네임스페이스나 시간정보 없이도 고유 식별자를 만들 수 있기 때문에 다양한 시스템에서 널리 사용된다.
toss payment 개발자 센터 : https://docs.tosspayments.com/resources/glossary/uuid