UUID 생성기/ v4 · v7
UUID v4(랜덤)와 UUID v7(시간순)을 대량 생성. 대문자/하이픈 제거 형식 지원, 원클릭 복사.
수량:
5 × UUID v4
fb5679be-cefe-42b4-b442-8bc040c8fb97
c17893cc-ac26-445c-9e12-eb4aa7287515
330994f5-d335-408d-89fb-1adcade25281
463226dc-4c9e-44e5-befa-14038dcc947f
289e375d-b92d-4c28-973a-76163d9b83fc
UUID v4는 122비트의 암호학적 난수를 사용합니다. 1조 개를 생성해도 충돌 확률은 약 10⁻¹⁵으로 사실상 불가능합니다.
이 도구가 도움이 되었나요?
UUID란 무엇인가
UUID(범용 고유 식별자)는 128비트의 전역 고유 식별자로,通常 32자리 16진수 문자로 표시됩니다(예: `550e8400-e29b-41d4-a716-446655440000`). UUID v4는随机으로生成되며 충돌 확률이極도로 낮습니다(103조 개의 UUID를 생성해도 중복이 하나 발생할 확률이 50%). 분산 시스템의 고유 기본 키로 사용하기에 충분합니다.
UUID 버전별 차이점
v1은 타임스탬프와 MAC 주소 기반(출처 추적 가능), v3/v5는 네임스페이스와 해시 기반(결정론적), v4는순수随机(가장常见), v7은 시간 정렬+随机(新标准, 정렬성과随机性을兼顾).日常 개발에서는 v4가 가장常见하며, v7은 시간순 정렬이 필요한 데이터베이스 기본 키场景에 적합합니다.
코드 예제
JavaScript / Node.js
// UUID v4 (browser & Node 19+)
const id = crypto.randomUUID();
// "110e8400-e29b-41d4-a716-446655440000"
// Node.js (< 19)
import { randomUUID } from "crypto";
const id = randomUUID();
// npm: uuid package
import { v4 as uuidv4, v7 as uuidv7 } from "uuid";
console.log(uuidv4());
console.log(uuidv7());Python
import uuid # UUID v4 print(uuid.uuid4()) # "a8098c1a-f86e-11da-bd1a-00112444be1e" # UUID v5 (name-based, deterministic) print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com")) # As hex (no dashes) print(uuid.uuid4().hex)
Go
// go get github.com/google/uuid import "github.com/google/uuid" // UUID v4 id := uuid.New() fmt.Println(id.String()) // UUID v7 (google/uuid v1.6+) id7, _ := uuid.NewV7() fmt.Println(id7.String())
SQL
-- PostgreSQL
SELECT gen_random_uuid(); -- v4
INSERT INTO users (id, name)
VALUES (gen_random_uuid(), 'Alice');
-- MySQL 8+
SELECT UUID(); -- v1 format
-- For v4: use application layer
-- SQLite (with extension or app)
SELECT lower(hex(randomblob(4))) || '-' ||
lower(hex(randomblob(2))) || '-4' ||
substr(lower(hex(randomblob(2))),2) || '-' ||
substr('89ab', abs(random()) % 4 + 1, 1) ||
substr(lower(hex(randomblob(2))),2) || '-' ||
lower(hex(randomblob(6)));자주 묻는 질문
UUID란 무엇인가요?
UUID(Universally Unique Identifier)는 128비트 식별자로, 일반적으로 8-4-4-4-12 형식의 32자리 16진수 문자열(예: 550e8400-e29b-41d4-a716-446655440000)로 표현됩니다. RFC 4122에 정의되어 있으며, 분산 시스템에서 중앙 조율 없이 고유 ID를 생성할 수 있습니다.
UUID v4와 UUID v7의 차이점은 무엇인가요?
UUID v4는 완전 랜덤(122비트)으로 단순하고 범용적입니다. UUID v7은 처음 48비트에 Unix 밀리초 타임스탬프를 포함하여 자연스럽게 시간순으로 정렬됩니다. 데이터베이스에서 UUID로 정렬하면 생성 시간 순서를 얻을 수 있고, B-tree 인덱스 성능이 더 우수합니다. 새 프로젝트에는 UUID v7이 권장됩니다.
UUID 충돌 확률은 얼마나 되나요?
UUID v4는 122비트의 무작위성을 사용합니다. 50% 충돌 확률에 도달하려면 약 2^61개(약 230경 개)의 UUID를 생성해야 합니다. 초당 수백만 개를 생성해도 실용적으로 충돌 걱정이 없으며 분산 기본키로 안전하게 사용할 수 있습니다.
UUID와 ULID 중 어느 것이 더 좋은가요?
ULID(Universally Unique Lexicographically Sortable Identifier)는 UUID v7과 유사하게 시간순이지만, Crockford base32 인코딩(26자, 하이픈 없음)을 사용하여 더 짧습니다. UUID v7은 IETF 표준으로 생태계 지원이 넓고, ULID는 짧은 ID가 필요한 경우에 적합합니다.
데이터베이스에서 UUID를 어떻게 저장해야 하나요?
PostgreSQL은 네이티브 UUID 타입을 제공합니다. MySQL/MariaDB에서는 BINARY(16)으로 컴팩트하게 저장하거나 CHAR(36)으로 가독성을 확보할 수 있습니다. MongoDB에서는 BinData(3) 또는 일반 문자열을 사용합니다. 쿼리 대상 UUID 컬럼에는 반드시 인덱스를 생성하세요.
UUID v7이 v4보다 데이터베이스 성능이 좋은 이유는?
UUID v4의 무작위성은 B-tree의 랜덤 삽입을 유발하여 빈번한 페이지 분할과 낮은 캐시 활용률을 초래합니다. UUID v7의 시간순 정렬로 새 행은 항상 인덱스 끝에 추가되어, 자동 증가 ID와 유사한 뛰어난 쓰기 성능과 캐시 적중률을 제공합니다.