什麼是 UUID
UUID(Universally Unique Identifier,通用唯一識別碼)由 Open Software Foundation 在 RFC 4122 中定義,共 128 位,通常以十六進位制 8-4-4-4-12 形式呈現為 32 字元。UUID v1 基於時間戳,v4 基於強隨機數,實踐中 v4 是最常用的版本。
UUID v4 的隨機性
UUID v4 用 122 bit 的強隨機數填充後半段,前 6 位固定為版本與變體標識。結果形如:
550e8400-e29b-41d4-a716-446655440000
理論上每秒生成 10 億個 UUID,要等到第 82 年才有 50% 機率出現一次重複——這已被數學證明。
什麼是 Nano ID
Nano ID 是 Andrey Sitnik 在 2017 年建立的輕量級唯一 ID 字串庫,體積僅 130 位元組(壓縮後),比 UUID v4 短 4 倍。字元集預設使用 URL 安全字母表 A-Za-z0-9_-。
使用建議
- 資料庫主鍵:uuid 或 text 欄位都可以,推薦使用 BINARY(16) 節省空間。
- 分散式追蹤:UUID v4 更通用,OpenTelemetry 預設採用。
- API Token / 短鏈:Nano ID 更短,但建議再疊加簽名校驗。
- 檔名:Nano ID 在 URL 中可直接使用。
效能對比
每秒生成效率:UUID v4 ≈ 130 萬,Nano ID ≈ 180 萬。在批次生成(>1000)場景下,Nano ID 略快。
現在試著點一下「生成」按鈕,體驗幾毫秒內獲得 100 個唯一 ID 的感覺。