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

标签 c++ database boost uuid boost-uuid

我想生成一个 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/

相关文章:

c++ - 使用 CRITICAL_SECTION 锁定/解锁功能

java - 如何在 iOS 上的 Turbo 模块中发出事件

c++ - 如何将值插入 URL?

sql - SQL Management Studio 中的对象名称无效

c++ - 使用 boost::geometry::difference,为什么我在使用 multi_polygon 而不是正多边形时得到空结果?

c++ - 通过套接字多路复用数据

java - 关于如何制作与 SQL 数据库交互的 Java Web 应用程序的粗略概述?

mysql - 如何以优化的方式在子查询中选择COUNT

c++ - Boost 有 GUI 库吗?

python - boost python编译模块中缺少库