v1부터 v8까지의 모든 UUID 버전 — 구조 다이어그램, 사용 사례, 충돌 위험 및 JavaScript 코드 예시 포함.
구조
timestamp (60-bit) + clock seq (14-bit) + MAC (48-bit)
충돌 위험
Very low
장점
단점
최적 용도
Legacy systems. Avoid in new projects due to MAC address exposure.
구조
MD5(namespace UUID + name) → UUID
충돌 위험
MD5 collision risk (low for UUIDs)
장점
단점
최적 용도
Generating UUIDs from URLs, email addresses, or other stable identifiers. Use v5 instead.
구조
122 random bits + 4-bit version + 2-bit variant
충돌 위험
Negligible (2^122 possibilities)
장점
단점
최적 용도
Default choice for most applications. IDs for records, sessions, tokens.
구조
SHA-1(namespace UUID + name) → UUID (top 128 bits)
충돌 위험
SHA-1 — extremely low for UUID purposes
장점
단점
최적 용도
Deterministic IDs from a namespace + name. Example: UUID for 'https://example.com' is always the same.
구조
Unix ms timestamp (48-bit) + version (4-bit) + random (74-bit)
충돌 위험
Very low (74 random bits)
장점
단점
최적 용도
Database primary keys where sort order matters. Replaces v1 for time-ordered UUIDs.
구조
128 bits, content defined by the implementation
충돌 위험
Depends on implementation
장점
단점
최적 용도
Experimental or vendor-specific use cases where v1–v7 don't fit.
| Version | Method | Sortable | Privacy-safe | Deterministic |
|---|---|---|---|---|
| v1 | Time + MAC | ✅ | ❌ (MAC leak) | ❌ |
| v3 | MD5 hash | ❌ | ✅ | ✅ |
| v4 | Random | ❌ | ✅ | ❌ |
| v5 | SHA-1 hash | ❌ | ✅ | ✅ |
| v7 | Time + Random | ✅ | ✅ | ❌ |
| v8 | Custom | — | — | — |
// JavaScript / Node.js (built-in, Node 15+)
import { randomUUID } from 'crypto';
const v4 = randomUUID(); // → "550e8400-e29b-41d4-a716-446655440000"
// Browser
const v4 = crypto.randomUUID();
// UUID v7 (npm: uuid package v10+)
import { v7 as uuidv7 } from 'uuid';
const v7 = uuidv7(); // → "018f0b2d-4c9e-7abc-89de-f012345678ab"
// Python
import uuid
v4 = str(uuid.uuid4()) # Random
v5 = str(uuid.uuid5(uuid.NAMESPACE_URL, 'https://example.com'))
# PostgreSQL
SELECT gen_random_uuid(); -- v4 (pg 13+)
SELECT uuid_generate_v4(); -- v4 (uuid-ossp extension)
SELECT gen_random_uuid()::text; -- as textUUID(Universally Unique Identifier)는 RFC 4122에 표준화된 128비트 식별자입니다. 하이픈으로 구분된 8-4-4-4-12 16진수 문자로 형식화됩니다. 중앙 기관 없이 공간과 시간을 초월하여 고유하도록 설계되었습니다.
대부분의 일반적인 목적에는 v4를 사용하세요 — 무작위로 생성되며 충돌 확률이 매우 낮습니다. 데이터베이스 기본 키에 시간순 UUID가 필요한 경우 v7을 사용하세요. 네임스페이스+이름 쌍에서 결정론적 UUID가 필요한 경우 v5를 사용하세요.
UUID v4는 순수하게 무작위(122 무작위 비트)입니다. UUID v7은 처음 48비트에 Unix 타임스탬프를 인코딩하고 그 뒤에 무작위 비트가 옵니다. 이로 인해 v7 UUID는 생성 시간별로 정렬 가능하여 데이터베이스의 B-tree 인덱스 성능이 크게 향상됩니다.
실용적으로는 그렇습니다. UUID v4는 122개의 무작위 비트를 가지며 2^122 ≈ 5.3 × 10^36개의 가능한 값을 제공합니다. 50%의 충돌 확률을 가지려면 약 2.7 × 10^18개의 UUID를 생성해야 합니다.