什么是 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 的感觉。