我在想,即使在不同的系统上生成UUID并使用不同的算法,它们是否仍然是唯一的。例如,如果你在MySQL和.Net中生成了一堆UUID,会不会有更高的碰撞几率,或者所有系统都使用完全相同的算法,从而保证碰撞不太可能发生?
我在想,即使在不同的系统上生成UUID并使用不同的算法,它们是否仍然是唯一的。例如,如果你在MySQL和.Net中生成了一堆UUID,会不会有更高的碰撞几率,或者所有系统都使用完全相同的算法,从而保证碰撞不太可能发生?
来自维基百科通用唯一识别码: ..“独特”这个词应该被理解为“几乎独特”而不是“保证独特”。由于标识符具有有限的大小,因此可能会出现两个不同的项目共享相同的标识符。需要选择标识符大小和生成过程,以使这种情况几乎不可能发生。
UUID(通用唯一标识符)应该包含时间戳和版本号,但其余部分应该是随机的。因此,除非您确定UUID是在不同的时间生成的,否则无论使用哪个生成器软件,都有相同的碰撞几率。早期版本的生成算法包括MAC地址,这在一定程度上有助于避免MAC地址碰撞风险。这些都在RFC 4122中指定。
给定128位,有340,282,366,920,938,463,463,374,607,431,768,211,456个可能的UUID。理论上这应该足够使它们在全球范围内唯一 - 因此,简短回答您的问题是肯定的,即使不同的系统使用算法的其他版本。
查看维基百科文章中的表格,可以很好地了解冲突概率。