gpt4 book ai didi

c++ - boost::uuid/unique 跨不同数据库

转载 作者:搜寻专家 更新时间:2023-10-30 23:19:40 24 4
gpt4 key购买 nike

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

我希望你能帮我解决这个问题。

最好的问候

最佳答案

UUID背后的想法是 -- 取决于它们是如何生成的 -- 有 这么多的值 可以用 122 位*表示,意外 碰撞的可能性 -- 再次,取决于如何它们是生成的——非常、非常、非常、非常、非常、非常、非常、小。

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

In other words, only after generating 1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%. The probability of one duplicate would be about 50% if every person on earth owns 600 million UUIDs.

... however, these probabilities only hold when the UUIDs are generated using sufficient entropy.

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

快乐编码。


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

关于c++ - boost::uuid/unique 跨不同数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8062866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com