每個UUID版本——v1到v8——包含結構圖、使用案例、碰撞風險和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(通用唯一識別碼)是RFC 4122中標準化的128位元識別碼。格式為8-4-4-4-12十六進位字元,由連字號分隔。它們被設計為在沒有中央機構的情況下在時間和空間上都是唯一的。
大多數一般用途使用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。