전 세계적으로 고유한 식별자를 생성하기 위한 표준 방식.
주요 특징
•
고유성: 전 세계적으로 중복될 확률이 극히 낮음 (1조 개의 v4 UUID 기준 1/10)
•
플랫폼 독립적: 모든 시스템에서 동일하게 작동
•
중앙 관리 불필요: 별도의 조정 없이 독립적으로 생성 가능
UUID의 구조
UUID는 128비트(16바이트) 길이의 값으로, 일반적으로 32개의 16진수 문자를 하이픈으로 구분한 형태.
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Plain Text
복사
예시: 550e8400-e29b-41d4-a716-446655440000
UUID 버전들
UUID는 생성 방식에 따라 여러 버전이 있다.
UUID v1, v2
타임스탬프 + MAC 주소 기반
•
생성 시간과 네트워크 카드의 MAC 주소를 사용
•
시간 순서가 보장되지만 MAC 주소가 노출될 수 있음
UUID v3, v5
네임스페이스 + 이름 기반 (SHA-1)
•
동일한 입력에 대해 항상 같은 UUID 생성
•
결정적(deterministic) 특성
UUID v4
완전 랜덤 기반
•
가장 널리 사용되는 버전
•
암호학적으로 안전한 랜덤 값 사용
•
충돌 확률이 매우 낮음
활용 분야
UUID는 DB의 기본 키, 분산 시스템의 객체 식별, 파일명 생성, 세션 ID, API 토큰 등 다양한 용도로 사용된다.
특히 여러 시스템 간 데이터 동기화나 마이그레이션 시 충돌 없는 식별자가 필요한 경우 매우 유용하다.
언어별 UUID 생성
v4 기준
Java
import java.util.UUID;
public class UUIDExample {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());
}
}
Java
복사
Javascript
const crypto = require('crypto');
const uuid = crypto.randomUUID();
console.log(uuid);
JavaScript
복사
Python
import uuid
uuid_v4 = uuid.uuid4()
print(str(uuid_v4))
Python
복사