2011-11-09 33 views
1

我想生成一个uuid,它应该用作跨不同系统/数据库的唯一标识符。我阅读了这些示例,但我不明白如何确保生成的ID在不同的系统和数据库中是唯一的。boost :: uuid/unique跨不同数据库

我希望你能帮助我。

问候

回答

2

一个UUID背后的想法是 - 这取决于如何产生,他们 - 有这么多值表示的有122位*是的意外碰撞的机会 - 再次,取决于它们是如何产生的 - 非常非常非常非常非常非常小。

从维基百科摘录的UUID版本4(里奇 - SALZ随机):只有一点产生十亿的UUID每秒未来100年后

换句话说,,创建只是概率一个重复将约为50%。如果地球上的每个人拥有6亿个UUID,则一个重复的概率约为50%。

...但是,这些概率仅在使用足够的熵生成UUID时才成立。

当然,还有其他的UUID生成方案和“众所周知的GUID”,并不是所有这些方案都适用于“全局唯一”用法。 (另外,非专业的UUID往往不会很好初级/集群键工作,由于在插入碎片:SQL Server有NEWSEQUENTIALID,以帮助这个问题。)

编码愉快。


* UUID中最多有128位,但是某些UUID版本在内部使用了一些位。我不知道什么助推器使用,但我嫌疑人它也是UUIDv4。