others - 在python中,uuid.uuid1() 和uuid.uuid4()的比较 , 什么时候应该使用 ?

我从文档知道了两者之间的区别,

uuid1()
从主机ID,序列号和当前时间生成UUID

uuid4()
生成随机UUID。

uuid1使用machine/sequence/time info生成UUID,使用它们的优点和缺点是什么?

我想知道是否应该使用uuid1来减少碰撞的风险。

时间:

uuid1()保证不会产生碰撞(假设你不在同一时间创建太多),

uuid4()生成随机UUID,碰撞的几率很小,这已经足够小,所以不用担心,问题是,一个坏的随机数发生器会让它更容易产生碰撞。

坦白说,在没有恶意行为者的单个应用程序中,即使在每秒生成大量UUID的情况下,即使用版本4 UUID,要发生碰撞,基本上是不可能的。

可以考虑uuid1()而不是uuid4(),在单独的机器上生成UUID,例如在几个机器上处理多个在线事务以进行扩展。

使用 uuid1 时需要注意一点,如果使用默认调用( 不给出 clock_seq 参数),你有机会进入冲突: 你只有 14位随机( 生成 18条目内 100ns给你大约 1%碰撞看到生日悖论/攻击的机会) 。 这个问题不会出现在大多数用例中,但是在一个具有糟糕时钟分辨率的虚拟机上,它会咬你。

...