不同数据库中的boost :: uuid / unique

时间:2011-11-09 09:30:28

标签: c++ database boost uuid boost-uuid

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

我希望你能在这里帮助我。

祝你好运

1 个答案:

答案 0 :(得分:2)

UUID背后的想法是 - 取决于它们是如何生成的 - 有这么多值可用122位*表示偶然的机会碰撞 - 再次,取决于它们的生成方式 - 非常非常非常非常非常非常非常小。

维基百科的UUID第4版摘录(Leach-Salz随机):

  

换句话说,只有在接下来的100年中每秒生成10亿个UUID后,创建一个重复的概率大约为50%。如果地球上的每个人拥有6亿UUID,那么一次重复的概率约为50%。

     

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

当然,还有其他UUID生成方案和“众所周知的GUID”,并非所有这些方案都适合“全球唯一”使用。 (此外,由于插入碎片,非专用UUID往往不能很好地用于主/群集密钥:SQL Server有NEWSEQUENTIALID来帮助解决该问题。)

快乐的编码。


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