UUID 생성기 (v4 무작위, v7 시간 정렬)
클릭해 하나 또는 여러 UUID 생성. 완전 무작위 ID에 v4 사용, 생성 시간으로 자연 정렬되는 시간 정렬 ID에 v7 — 데이터베이스 키에 유용.
작동 방식
v4 vs v7 사용 시기
UUID v4는 순수 무작위 — 122 무작위 비트와 두 버전/변형 비트, 약 5.3 × 10³⁶ 가능 값 제공. 두 개가 절대 충돌 안 하는 것 기본 보장. 정렬 필요 없는 곳에 v4 사용, API 요청 ID나 익명 사용자 식별자.
UUID v7(RFC 9562, 2024 발표)은 48비트 Unix 밀리초 타임스탬프로 시작 후 74 무작위 비트. 사전적으로 생성 순서로 정렬, 데이터베이스 성능에 큼 — 시간으로 정렬되는 기본 키는 삽입이 항상 B-tree 끝으로 가서 무작위 페이지 분할 없음. 새 데이터베이스 기본 키에 v7 사용.
본 생성기 작동 방식
v4와 v7 모두 crypto.getRandomValues 사용 — 브라우저의 안전한 무작위 소스, HTTPS와 비밀번호 관리자가 사용하는 같은 프리미티브. v4는 122 비트 무작위 채움. v7은 48비트 타임스탬프 + 74비트 무작위 더하기 RFC당 버전/변형 마커 분할.
생성은 브라우저에서. UUID는 저장이나 전송 안 됨. 100 v4 UUID 생성하면 그 사이 충돌 확률은 천문학적으로 작음 — CPU에서 우주선이 비트 뒤집을 확률 훨씬 아래.
흔한 UUID 함정
데이터베이스 기본 키로 v4 UUID는 자동 증가 정수보다 성능 손상, 무작위 값이 삽입 중 B-tree 페이지 분할 일으킴. v7이 이 수정 — 인덱스 고통 없는 UUID 이점 원하면 v7 사용.
추측 가능성이 중요한 곳에 사용자에게 UUID 노출 금지. v4 UUID는 122 비트 엔트로피 가지고 추측 불가. v7 UUID는 생성 시간 누설, 대부분 사용에 괜찮지만 생성 시간이 민감하면 나쁨.
UUID는 하이픈 포함 36자(32 헥스 + 4 하이픈). 이진 16바이트 또는 텍스트 36바이트. 매우 높은 카디널리티 열은 VARCHAR(36) 대신 이진 BLOB / UUID 네이티브 타입으로 저장 고려.
자주 묻는 질문
›암호학적으로 안전?
네. v4와 v7 모두 안전한 무작위 API인 crypto.getRandomValues 사용. v4는 122 비트 엔트로피; v7은 74.
›왜 v7이 데이터베이스 키에 더 좋음?
v7 UUID가 생성 시간으로 정렬되기 때문, 삽입이 항상 무작위 위치 대신 B-tree 인덱스 끝에. 이는 페이지 분할 회피하고 쓰기 처리량 극적 개선.
›두 UUID 충돌 가능?
이론상 네. v4는 50% 충돌 위험 전 ~10¹⁸ 생성 필요. v7은 시간 컴포넌트가 같은 밀리초 내 약 2⁷⁴로 감소 — 여전히 실질적으로 불가능.
›UUID와 GUID 같음?
네. GUID는 Microsoft의 UUID 이름. 같은 형식, 같은 고유성 보장.
›형식?
하이픈으로 8-4-4-4-12 헥스 자릿수. 총 32 헥스 문자 + 4 하이픈 = 36 문자. RFC 관습으로 소문자.
›v1 대신 사용?
v1은 MAC 주소 포함, 프라이버시 누설. v7은 하드웨어 식별자 노출 없이 시간 정렬 ID에 v1 대체.
›URL 안전 Base64로 v4 생성?
여기 직접 안 됨. UUID의 16 바이트를 URL 안전 Base64로 인코딩해 22문자 ID 도출. 짧은 URL에 유용.
›데이터가 전송되나요?
전송되지 않습니다. 생성 완전히 브라우저에서 발생.
관련 도구
최종 업데이트: