UUID 是一种 128 位标识符,无需向任何中心申请就能在任意地方生成——这也是它成为数据库主键、请求标识、文件名和幂等令牌的原因。这个工具批量生成今天值得使用的两个版本:完全随机的 v4,以及把时间戳放在开头、因而按创建顺序排序的 v7。v7 对数据库主键是实打实的优势,因为随机值会把写入分散到索引各处。随机性来自你浏览器的密码学生成器,且不发送到任何地方,所以生成的值只属于你。
是的。它们来自浏览器的密码学安全随机数生成器,就在页面里生成。不会向服务器请求,也不会向服务器上报,所以你生成的值从没有别人见过。
理论上会,实际上不会。一个 v4 UUID 有 122 位随机位;你得每秒生成数十亿个、持续几十年,碰撞才会变得可能。把它们当作唯一值来用是安全的。
当标识符要作为数据库主键时。v7 以毫秒时间戳开头,新行会在索引中彼此相邻落位,而不是散落各处——这让插入更快、索引更紧凑。当这个值绝不能透露任何信息时用 v4,因为 v7 会大致暴露它的创建时间。
v4 足够随机、难以猜测,所以可以作为 URL 里不透明的标识符。但它不能替代真正的会话令牌或 API 密钥——那些应当更长,并由你的认证系统签发。
版本 1 编码了机器的 MAC 地址,会泄露它在哪里生成。版本 3 和 5 是对名称做哈希,只有在「相同输入必须始终得到相同标识符」时才有用。日常使用,在 v4 和 v7 之间选就够了。