什么时候应该在python中使用uuid.uuid1()和uuid.uuid4()?

问题:

我明白了从docs.
 uuid1()
从主机ID,序列号和当前时间生成UUID
 uuid4()
生成一个随机的UUID。
所以uuid1使用机器/序列/时间信息来生成一个UUID。使用每个的优点和缺点是什么?
我知道uuid1()可能会涉及隐私问题,因为它基于机器信息。我想知道当选择一个或另一个时是否还有微妙的。我现在只使用uuid4(),因为它是一个完全随机的UUID。但是我想知道我是否应该使用uuid1来减少碰撞的风险。
基本上,我正在寻找人们使用一个对比的最佳做法的提示。谢谢!

回答:

 uuid1()保证不会产生任何冲突(假设您不会同时创建太多的冲突)。如果uuid和计算机之间没有任何连接很重要,我不会使用它,因为mac地址用于使计算机独一无二。
您可以通过在不到100ns内创建超过2个14 uuid1来创建重复项,但这对于大多数用例来说不是问题。
 正如你所说,uuid4()产生一个随机的UUID。碰撞的机会真的是真的,really很小。足够小,你不用担心。问题是,一个坏的随机数发生器使它更有可能发生冲突。
 This excellent answer by Bob Aman很好地总结了。 (我建议阅读整个答案。)

坦白说,在没有恶意行为者的单一应用程序空间中,即使在每个UUID每秒产生不少UUID的情况下,即使在版本4的UUID上也会发生冲突,所以即使在发生冲突之前,地球上所有生命的灭绝都将发生。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: When should I use uuid.uuid1() vs. uuid.uuid4() in python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 5 = 1