GUID是否在100%的时间内是惟一的?

GUID是否在100%的时间内是惟一的? 算法

它会在多个线程上保持惟一性吗? sql


#1楼

埃里克·利珀特(Eric Lippert)写了一系列很是有趣的有关GUID的文章。 数据库

全世界大约有2 30台我的计算机(固然,许多手持设备或非PC计算设备具备或多或少相同的计算能力,但请忽略它们)。 假设咱们将世界上全部这些PC都用于生成GUID。 若是每一个人每秒能够生成2 20个 GUID,那么在大约2 72秒( 一百五十万亿年)以后 ,您有可能与您的特定GUID发生碰撞。 仅三十万亿年后,碰撞的概率就至关可观。 安全


#2楼

我遇到了重复的GUID。 服务器

我使用的是Neat Receipts台式扫描仪,它带有专有的数据库软件。 该软件具备“同步到云”功能,而且在同步时一直出现错误。 日志上的秃鹰露出了那条使人敬畏的台词: dom

“错误”:[{“代码”:1,“消息”:“ creator_guid:已被使用”,“ guid”:“ C83E5734-D77A-4B09-B8C1-9623CAC7B167”}]}} 布局

我有点难以置信,可是能够确定的是,当我找到了进入本地neatworks数据库的方法并删除了包含该GUID的记录时,错误中止发生。 ui

所以,以传闻证据回答您的问题,不是。 能够重复。 可是,发生这种状况的缘由极可能不是偶然的,而是因为没有遵循某种标准惯例。 (我不是那么幸运)可是,我不能确定地说。 这不是个人软件。 google

他们的客户支持很是礼貌和乐于助人,可是他们必定历来没有遇到过这个问题,由于与他们通电话3个多小时后,他们找不到解决方案。 (FWIW,Neat给我留下了很深入的印象,尽管如此使人沮丧,但这种故障并无改变我对他们产品的见解。) spa


#3楼

GUID算法一般是根据v4 GUID规范实现的,该规范本质上是伪随机字符串。 可悲的是,它们属于Wikipedia的“可能非惟一”类别(我不知道为何这么多人忽略了这一点):“ ...其余GUID版本具备不一样的惟一性属性和几率,从保证的惟一性到不等可能的非惟一性。”

V8的JavaScript Math.random()的伪随机属性在惟一性方面很糟糕,冲突一般仅在数千次迭代以后发生,但V8并非惟一的罪魁祸首。 我已经看到使用v4 GUID的PHP和Ruby实现的真实世界GUID冲突。

因为在多个客户端和服务器群集之间扩展ID生成变得愈来愈广泛,所以,熵受到很大的打击-使用同一随机种子生成ID升级的机会(时间一般用做随机种子)在伪随机数生成器中),GUID冲突从“可能不惟一”升级为“极可能形成不少麻烦”。

为了解决这个问题,我着手建立一个ID算法,该算法能够安全扩展,并更好地防止冲突。 它经过使用时间戳,内存中的客户端计数器,客户端指纹和随机字符来实现。 因素的组合会产生额外的复杂性,即便您在多个主机上进行扩展,也特别能抵御冲突:

http://usecuid.org/


#4楼

附带说明一下,我正在使用Windows XP中的Volume GUID。 这是一个很是模糊的分区布局,具备三个磁盘和十四个卷。

\\?\Volume{23005604-eb1b-11de-85ba-806d6172696f}\ (F:)
\\?\Volume{23005605-eb1b-11de-85ba-806d6172696f}\ (G:)
\\?\Volume{23005606-eb1b-11de-85ba-806d6172696f}\ (H:)
\\?\Volume{23005607-eb1b-11de-85ba-806d6172696f}\ (J:)
\\?\Volume{23005608-eb1b-11de-85ba-806d6172696f}\ (D:)
\\?\Volume{23005609-eb1b-11de-85ba-806d6172696f}\ (P:)
\\?\Volume{2300560b-eb1b-11de-85ba-806d6172696f}\ (K:)
\\?\Volume{2300560c-eb1b-11de-85ba-806d6172696f}\ (L:)
\\?\Volume{2300560d-eb1b-11de-85ba-806d6172696f}\ (M:)
\\?\Volume{2300560e-eb1b-11de-85ba-806d6172696f}\ (N:)
\\?\Volume{2300560f-eb1b-11de-85ba-806d6172696f}\ (O:)
\\?\Volume{23005610-eb1b-11de-85ba-806d6172696f}\ (E:)
\\?\Volume{23005611-eb1b-11de-85ba-806d6172696f}\ (R:)
                                     | | | | |
                                     | | | | +-- 6f = o
                                     | | | +---- 69 = i
                                     | | +------ 72 = r
                                     | +-------- 61 = a
                                     +---------- 6d = m

不是GUID很是类似,而是全部GUID中都包含字符串“ mario”的事实。 这是巧合仍是背后有解释?

如今,当在GUID中搜索第4部分时,我发现批量GUID的点击量约为125.000。

结论:关于卷GUID,它们不像其余GUID那样独特。


#5楼

它不该该发生。 可是,当.NET负担很重时,就有可能得到重复的引导。 我有两个使用两个不一样sql服务器的不一样Web服务器。 我去合并数据,发现我有1500万盾和7个副本。

相关文章
相关标签/搜索