查看由RFC 4122,ISO / IEC 9834-8:2005(源http://www.postgresql.org/docs/9.1/static/datatype-uuid.html)定义的Postgres生成的主键UUID。我们可以认为这些数字在所有长度上是均匀随机的吗?
鉴于此UUID:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
我们可以客观地假设a0eebc99
和bd380a11
同样是随机的吗?如果没有,为什么?
答案 0 :(得分:1)
UUID通常意味着并且被优化为独特的。它们不提供有保证的随机性。您不应该使用UUID作为机密和/或随机数生成器。
有多个版本如何生成UUID,其中大多数不是随机的,而是可预测的。请参阅Wikipedia article on UUIDs和各种版本。
如果您想避免ID的冲突,请使用UUID,如果您需要机密,请使用强加密(P)RNG。
另请注意,变体是在UUID本身中编码的,因此至少这部分UUID根本不是 随机。
编辑:Raymond Chen在他的着名博客" Old New Thing"中有一个有趣的article。几乎就是这个问题。