🆔 UUID Generator
UUID (Universally Unique Identifier)를 생성합니다
UUID(Universally Unique Identifier)란?
왜 필요한가요?
UUID는 범용 고유 식별자로, 중앙 조정 없이 고유성을 보장하는 128비트 값입니다. 데이터베이스 기본 키, 세션 ID, 파일명 등 전 세계적으로 유일한 식별자가 필요할 때 사용됩니다.
UUID는 36자 형식(8-4-4-4-12)으로 표현되며, 예시: 550e8400-e29b-41d4-a716-446655440000
충돌 확률이 극히 낮아 (2^122번 생성해야 50% 충돌) 분산 시스템에서 안전하게 사용할 수 있습니다.
언제 사용하나요?
- 데이터베이스 Primary Key: 순차적 ID 대신 UUID를 기본 키로 사용하여 보안 강화
- 분산 시스템: 여러 서버에서 동시에 ID를 생성해도 충돌 없음
- 세션 ID: 예측 불가능한 세션 식별자로 보안 향상
- 파일 업로드: 중복되지 않는 고유한 파일명 생성
- API 리소스: RESTful API에서 리소스의 고유 식별자
- 메시지 추적: 로그, 이벤트, 트랜잭션의 고유 ID
UUID 버전 비교
| 버전 | 생성 방식 | 용도 |
|---|---|---|
| v1 | 타임스탬프 + MAC 주소 | 시간 순서 보장 (보안 약함) |
| v3 | MD5 해시 기반 | 이름 기반 UUID (레거시) |
| v4 | 랜덤 생성 | 가장 흔함, 범용적 사용 |
| v5 | SHA-1 해시 기반 | 이름 기반 UUID (권장) |
| v6, v7 | 타임스탬프 + 랜덤 | 최신 표준, 정렬 가능 |
이 도구는 가장 널리 사용되는 UUID v4(완전 랜덤)를 생성합니다.
실무 사용 예시
예시 1: 데이터베이스 스키마
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(100),
created_at TIMESTAMP
);순차적 ID보다 보안성 높고 분산 환경에 적합
예시 2: 파일 업로드
원본 파일명: profile.jpg
저장 파일명: 550e8400-e29b-41d4-a716-446655440000.jpg파일명 충돌 방지 및 원본 파일명 노출 방지
예시 3: REST API 리소스
GET /api/users/550e8400-e29b-41d4-a716-446655440000
DELETE /api/posts/7c9e6679-7425-40de-944b-e07fc1f90ae7예측 불가능한 ID로 보안 강화
주의사항
- 크기: UUID는 36바이트(문자열) 또는 16바이트(이진)로 정수형 ID보다 큽니다.
- 정렬: UUID v4는 무작위라 시간순 정렬이 안 됩니다. 정렬이 필요하면 v7을 고려하세요.
- 인덱싱: 랜덤한 UUID는 B-tree 인덱스 성능이 떨어질 수 있습니다. 대용량 DB에서는 주의 필요.
- 가독성: 긴 문자열이라 사람이 읽거나 기억하기 어렵습니다.
- 충돌 가능성: 이론적으로 가능하지만 실질적으로는 0에 가깝습니다.
UUID vs 다른 ID 방식
| 방식 | 장점 | 단점 |
|---|---|---|
| 순차 정수 | 작고 빠름, 정렬 가능 | 예측 가능, 분산 환경 불리 |
| UUID | 고유성 보장, 분산 가능 | 크기 큼, 가독성 낮음 |
| ULID/NanoID | 짧고 정렬 가능 | 비표준, 라이브러리 필요 |