본문 바로가기

UUID 생성기 - 고유 식별자 UUID v4/v7 생성과 활용 완벽 가이드

전 세계적으로 유일한 식별자 UUID의 원리, 버전별 차이, 데이터베이스 기본 키 활용까지 개발자 필수 지식을 총정리합니다.


UUID란 무엇인가?

UUID(Universally Unique Identifier)는 전 세계적으로 고유한 128비트(16바이트) 식별자입니다. UUID 생성기를 사용하면 중앙 관리 서버 없이도 충돌 확률이 사실상 0에 가까운 고유 ID를 즉시 생성할 수 있습니다.

UUID의 핵심 가치는 분산 환경에서의 고유성입니다. 수십 대의 서버가 동시에 UUID를 생성해도 같은 값이 나올 확률은 천문학적으로 낮습니다. UUID v4 기준으로 약 5.3 × 10^36개의 가능한 값이 존재하며, 매초 10억 개씩 생성해도 중복이 발생할 확률이 50%가 되려면 약 850억 년이 걸립니다.

UUID vs GUID

GUID(Globally Unique Identifier)는 Microsoft가 사용하는 용어로, 기술적으로 UUID와 동일합니다. Windows 환경에서는 GUID, 그 외에서는 UUID라고 부르는 것이 일반적입니다.

UUID의 구조와 형식

표준 형식

UUID는 32개의 16진수 문자를 하이픈으로 구분한 5개 그룹으로 표현됩니다: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx. 예시: 550e8400-e29b-41d4-a716-446655440000.

그룹길이의미
1번째 (8자)32비트time-low (v1) 또는 랜덤
2번째 (4자)16비트time-mid (v1) 또는 랜덤
3번째 (4자)16비트버전(M) + time-high 또는 랜덤
4번째 (4자)16비트변형(N) + clock-seq 또는 랜덤
5번째 (12자)48비트노드(MAC) 또는 랜덤

버전과 변형 식별

3번째 그룹의 첫 문자(M)가 UUID 버전을 나타냅니다. 4번째 그룹의 첫 문자(N)가 변형을 나타냅니다. 예: 550e8400-e29b-41d4-a716-446655440000에서 4는 v4, a는 RFC 4122 변형입니다.

UUID 버전별 비교

버전생성 기반정렬 가능프라이버시주요 용도
v1타임스탬프 + MAC 주소부분적MAC 노출 위험레거시 시스템
v3네임스페이스 + MD5 해시불가안전동일 이름 → 동일 UUID
v4완전 무작위(122비트)불가안전가장 범용적 사용
v5네임스페이스 + SHA-1 해시불가안전결정적 UUID 필요 시
v7Unix 밀리초 + 랜덤시간순 정렬 가능안전DB 기본 키(최신 추천)

UUID v4 - 가장 널리 사용되는 버전

UUID v4는 122비트의 랜덤 데이터로 생성되어 가장 간단하고 널리 사용됩니다. 중앙 서버, MAC 주소, 타임스탬프 없이 어디서든 생성할 수 있습니다. UUID v4 생성기에서 즉시 만들어보세요.

UUID v7 - 차세대 표준

2024년 RFC 9562에서 표준화된 UUID v7은 상위 48비트에 Unix 밀리초 타임스탬프를 포함합니다. 이로 인해 시간순 정렬이 가능하여 데이터베이스 B-tree 인덱스에서 삽입 성능이 v4보다 크게 향상됩니다.

UUID 생성기 사용법

단일 UUID 생성

생성 버튼을 클릭하면 즉시 UUID가 생성됩니다. 기본적으로 v4가 생성되며, 결과를 클립보드에 복사하여 사용합니다.

대량 UUID 생성

한 번에 수십~수백 개의 UUID를 생성할 수 있습니다. 테스트 데이터 준비, 마이그레이션 스크립트 작성, 대량 레코드 삽입 등에 유용합니다.

UUID 검증

기존 UUID 문자열이 올바른 형식인지 검증하고, 어떤 버전인지 식별할 수 있습니다. 잘못된 형식의 UUID는 시스템 오류의 원인이 될 수 있으므로 검증이 중요합니다.

실무 활용 사례

데이터베이스 기본 키(Primary Key)

자동 증가 정수(auto-increment) 대신 UUID를 기본 키로 사용하면 여러 서버에서 독립적으로 레코드를 생성해도 키 충돌이 발생하지 않습니다. 마이크로서비스, 분산 데이터베이스, 데이터 병합 등에서 특히 유용합니다.

API 요청 추적(Request ID)

각 API 요청에 UUID를 부여하면 로그에서 특정 요청의 전체 흐름을 추적할 수 있습니다. 마이크로서비스 간 호출 체인을 추적하는 분산 트레이싱의 기본 요소입니다.

파일 고유 이름 생성

사용자가 업로드한 파일에 UUID 이름을 부여하면 파일명 충돌을 방지하고, 원본 파일명에 포함된 특수문자나 한글로 인한 문제를 예방합니다.

세션 ID 및 토큰

사용자 세션 식별, 일회용 링크(비밀번호 재설정, 이메일 인증), 임시 접근 토큰 등에 UUID를 사용하면 예측 불가능한 고유한 값을 보장합니다.

데이터베이스에서의 UUID

UUID vs Auto-Increment 비교

항목UUIDAuto-Increment
고유성 범위전역(서버 간)테이블 내
분산 생성가능불가 (중앙 관리 필요)
예측 가능성불가능쉽게 예측 가능
저장 크기16바이트4~8바이트
인덱스 성능v4: 낮음 / v7: 높음높음
URL 노출 시 위험낮음높음 (순차 접근 가능)

DB별 UUID 타입

PostgreSQL은 UUID 네이티브 타입을 제공하여 16바이트로 효율적으로 저장합니다. MySQL 8.0+에서는 UUID_TO_BIN() 함수로 BINARY(16)에 저장하는 것이 권장됩니다. 고유 식별자 생성기로 테스트 데이터용 UUID를 대량 생성할 수 있습니다.

UUID v7을 DB 키로 추천하는 이유

UUID v4는 완전 무작위이므로 B-tree 인덱스에서 랜덤 위치에 삽입되어 페이지 분할이 빈번합니다. UUID v7은 시간순으로 증가하므로 인덱스 끝에 순차 삽입되어 auto-increment에 가까운 성능을 보이면서도 분산 생성이 가능합니다.

자주 묻는 질문

Q. UUID가 절대 충돌하지 않나요?

이론적으로 충돌 가능성은 0이 아니지만, 실질적으로 불가능합니다. UUID v4 기준으로 103조 개를 생성했을 때 충돌 확률이 10억분의 1입니다. 이는 운석에 맞을 확률보다 낮습니다.

Q. UUID에서 하이픈을 빼도 되나요?

하이픈은 가독성을 위한 것으로, 제거해도 기능상 문제는 없습니다. 저장 공간을 아끼려면 하이픈 없이 32자로 저장하거나, 바이너리 16바이트로 저장할 수 있습니다.

Q. UUID를 URL에 사용해도 되나요?

네, UUID는 URL에 안전한 문자(영문, 숫자, 하이픈)로만 구성되어 있어 URL에 직접 사용할 수 있습니다. 예: /users/550e8400-e29b-41d4-a716-446655440000.

Q. UUID가 너무 길어서 불편합니다. 짧은 대안이 있나요?

NanoID(21자), ULID(26자), KSUID(27자), ShortUUID(22자) 등이 대안입니다. 다만 이들은 UUID 표준(RFC)이 아니므로 호환성을 고려해야 합니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담