首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用哪个UUID版本?

使用哪个UUID版本?
EN

Stack Overflow用户
提问于 2013-12-03 11:01:11
回答 2查看 121.5K关注 0票数 395

您应该使用哪个版本的UUID?我看到了很多解释每个版本需要什么的线程,但我很难弄清楚什么是最适合什么应用程序。

EN

回答 2

Stack Overflow用户

发布于 2014-10-15 23:55:55

如果你想要一个随机数,使用一个随机数库。如果你想要一个唯一的标识符,在这里有效地0.00...many更多的0...001%的机会冲突,你应该使用UUIDv1。请参阅尼克在UUIDv3和v5上的帖子。

UUIDv1不安全。这不是命中注定的。这意味着它是唯一的,而不是不可猜测的。UUIDv1使用当前的时间戳,加上一个机器标识符,再加上一些随机的东西来生成一个永远不会再由该算法生成的数字。这适用于事务ID (即使每个人都在进行数百万次事务/秒)。

老实说,我不明白为什么UUIDv4会存在。从RFC4122的阅读来看,该版本似乎并没有消除冲突的可能性。它只是一个随机数生成器。如果这是真的,那么您很有可能在世界上有两台机器最终创建相同的"UUID"v4 (引号,因为没有一种机制来保证U.niversal U.niqueness)。在这种情况下,我不认为该算法属于描述生成唯一值的方法的RFC。它应该属于关于生成随机性的RFC。对于一组随机数:

代码语言:javascript
复制
chance_of_collision = 1 - (set_size! / (set_size - tries)!) / (set_size ^ tries)
票数 63
EN

Stack Overflow用户

发布于 2021-06-08 18:57:41

因为还没有提到:如果您希望能够按创建时间对实体进行排序,而不需要单独的显式时间戳,则可以使用uuidv1。虽然这不是100%精确的,在许多情况下也不是最好的方法(由于缺乏显性),但在某些情况下,例如当您使用Cassanda数据库时,它会很方便。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20342058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档