我从 docs. 了解两者之间的区别
uuid1()
:
根据主机 ID、序列号和当前时间生成 UUID
uuid4()
:
生成随机 UUID。
所以 uuid1
使用机器/序列/时间信息来生成 UUID。各自使用的优缺点是什么?
我知道 uuid1()
可能存在隐私问题,因为它基于机器信息。我想知道在选择其中一个时是否有更微妙的地方。我现在只使用 uuid4()
,因为它是一个完全随机的 UUID。但我想知道我是否应该使用 uuid1
来降低碰撞风险。
基本上,我正在寻找人们关于使用一种与另一种的最佳实践的提示。谢谢!
最佳答案
uuid1()
保证不会产生任何冲突(假设您不会同时创建太多冲突)。如果 uuid
和计算机之间没有连接很重要,我不会使用它,因为 mac 地址被用来使其在计算机之间具有唯一性。
您可以通过在 100ns 内创建超过 214 个 uuid1 来创建副本,但这对于大多数用例来说都不是问题。
uuid4()
如您所说,生成一个随机 UUID。发生碰撞的机会真的非常非常非常小。足够小,你不应该担心它。问题是,糟糕的随机数生成器更容易发生冲突。
This excellent answer by Bob Aman总结得很好。 (我建议阅读整个答案。)
Frankly, in a single application space without malicious actors, the extinction of all life on earth will occur long before you have a collision, even on a version 4 UUID, even if you're generating quite a few UUIDs per second.
关于python - 我什么时候应该在 python 中使用 uuid.uuid1() 和 uuid.uuid4()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785503/